MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。

1.MySQL 数据类型

SQL语言是不区分大小写的,大写小写都可以,以 ; 分隔开,注意所有符号都是英文的

(1)数值类型

无符号类型就是后面加上 unsigned

(2)字符串类型

有些类型后面需要加参数,例如:

char(10)表示10各字符大小,一旦设置好长度就是固定的,实际上我只需要1个字符大小,但是它占10个字符大小长度,不够的后面全是空格补充;

varchar(10)表示最大是10个字符长度,我输入2个字符它就占2个大小,上限是10;

(3)日期和时间类型

2.SQL 语言分类

DDL (Data Definition Language) : 数据定义语言,用于定义数据库结构。

  • CREATE: 创建数据库或表。
  • ALTER: 修改数据库或表结构。
  • DROP: 删除数据库或表。

DML (Data Manipulation Language): 数据操作语言,用于数据的增删改。

  • INSERT: 插入数据。
  • UPDATE: 更新数据。
  • DELETE: 删除数据。

DQL (Data Query Language): 数据查询语言,用于查询数据。

  • SELECT: 查询数据。

DCL (Data Control Language): 数据控制语言,用于权限控制。

  • GRANT: 授予权限。
  • REVOKE: 撤销权限。

3. DDL 语句示例及说明

让我们打开cmd 输入: mysql -u rooot -p 或者 直接打开 MySQL自带的命令行工具,来了解一下DDL的语法,它是针对于数据库的操作,而我们知道关系型数据库以二维表存储数据,也包含对表的操作,但是不能给表添加数据,添加数据就要用到DML

++再说一遍,大小写都可以,注意空格和英文符号,还有单词别拼错了++

数据库操作

  • SHOW DATABASES; 显示所有数据库。
  • CREATE DATABASE 数据库名; 创建一个名为 数据库名 的数据库。
  • USE 数据库名; 使用指定的数据库。
  • SELECT DATABASE(); 返回当前使用的数据库。
  • DROP DATABASE 数据库名; 删除名为 数据库名 的数据库。
常用SQL语句选项

这些可以写也可以不写,可以根据需求例如:

create database if not exists itheima default charset utf8mb4;

IF EXISTSIF NOT EXISTS

例如:如果一个数据库已经 存在/删除 ,我们不加这些选项 直接 创建/删除 时会报错 ,这就是为什么要加这个的原因,如果不存在就创建,如果存在就不创建, create database if not exists test;

DEFAULT CHARSET

用来设置字符集,MySQL8.0默认是 utf8

(1)show databases;

首先输入密码后,输入 show databases; 它会显示都有哪些数据库,information_schema,mysql,performance_schema,sys。这四个数据是系统默认会有的,别轻易修改里面的内容

sql 复制代码
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.39 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
(2)create database +数据库名;

我们用于学习,先自己创建一个数据库,输入 create database ittest; 这会创建一个名为 ittest 的数据库

sql 复制代码
mysql> create database if not exists ittest;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ittest             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
(3)use 数据库名;

这个命令用来切换不同数据库进行操作,输入 use ittest; 出现 Database changed 说明成功切换到对 ittest 的操作

sql 复制代码
mysql> select database();
+------------+
| database() |
+------------+
| itheima    |
+------------+
1 row in set (0.00 sec)

mysql> use ittest;
Database changed
mysql>
(4)select database();

用来查询当前所在数据库是哪个,上面示例已经演示过了

(5)drop database 数据名;

用于删除数据库,输入 drop database ittest; 删除ittest数据库

sql 复制代码
mysql> use ittest;
Database changed
mysql> drop database ittest;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itheima            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql>

表操作

(1)show tables;

查看数据库的表单信息,输入 show tables; 我们可以看到有两个表(当然这两个表是我提前创建好的)

sql 复制代码
mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| emp               |
| tb_user           |
+-------------------+
2 rows in set (0.00 sec)

mysql>
(2) create table 表名;

创建表格,注意格式,每行用 , 逗号隔开,最后一行除外,注释用 comment '注释内容'

进行描述,末位再写 ; 分号,格式如下

sql 复制代码
 CREATE TABLE tb_user (
    ->     id INT COMMENT '编号',
    ->     name VARCHAR(50) COMMENT '姓名',
    ->     age INT COMMENT '年龄',
    ->     gender VARCHAR(1) COMMENT '性别'
    -> ) COMMENT='用户表';
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| tb_user           |
+-------------------+
1 row in set (0.00 sec)
(3)desc 表名;

查看表单,输入 desc tb_user; 会显示数据类型

sql 复制代码
 desc tb_user;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| age    | int         | YES  |     | NULL    |       |
| gender | varchar(1)  | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
(4)alter table 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;

add 用来增加信息,modify修改 数据类型,change 修改 名称和数据类型 ,drop用来删除,rename to 用来重命名表单

sql 复制代码
-- 在表 `employees` 中添加一个新的列 `email`,数据类型为 VARCHAR(100)
ALTER TABLE employees ADD email VARCHAR(100) COMMENT '员工电子邮件';

-- 修改表 `employees` 中 `age` 列的数据类型为 `SMALLINT`,并添加注释
ALTER TABLE employees MODIFY age SMALLINT UNSIGNED COMMENT '员工年龄';

-- 修改表 `employees` 中的列 `name`,将其名称更改为 `full_name` 并将数据类型更改为 `VARCHAR(255)`
ALTER TABLE employees CHANGE name full_name VARCHAR(255) COMMENT '员工全名';

-- 删除表 `employees` 中的列 `email`
ALTER TABLE employees DROP email;

-- 将表 `employees` 重命名为 `staff`
ALTER TABLE employees RENAME TO staff;
(5)truncate table 表名;

TRUNCATE TABLE 是 MySQL 中用于快速清空表数据的 SQL 语句,它会删除表中的所有记录,但保留表的结构、列、索引和约束。(其实是删除重新创建了一个

sql 复制代码
-- 清空 `employees` 表中的所有数据
TRUNCATE TABLE employees;

总结:

我们详细了解了MySQL中的各种数据类型,包括数值类型、字符串类型和日期类型,并且对每种类型的范围和占用字节大小有了清晰的认识。此外,我们深入学习了DDL,接着我会继续更新DML,DQL,DCL的部分。

最后制作不易,给个赞吧...

相关推荐
Json_181790144802 分钟前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
煎饼小狗14 分钟前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
永乐春秋30 分钟前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
打鱼又晒网1 小时前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!1 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix2 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。2 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了2 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度2 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮2 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql