3、数据定义语言DDL
- DDL : 数据定义语言 , 用来定义数据库,表结构,表中字段的。
3.1 DDL-数据库操作
查询所有数据库
- SHOW DATABASES;
// show databases;
查询当前数据库
SELECT DATABASE(); // select database();
创建数据库
- CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
//creat database if not exists wang charset utf8mb4;
默认的字符集和排序规则分别是utf8mb4字符集和utf8mb4_unicode_ci排序规则,也是推荐使用的字符集和排序规则
删除数据库
- DROP DATABASE [IF EXISTS] 数据库名;
// drop database if exists wang;
使用数据库(切换数据库)
- USE 数据库名; // use wang;
3.2 DDL-表操作-查询
查询当前数据库所有表
- SHOW TABLES;
//show tables;
查询表结构
- DESC 表名;
//desc 表名
查询指定表的建表语句
- SHOW CREATE TABLE 表名;
//show create table 表名
3.3 DDL-表操作-创建
- CREATE TABLE 表名( //creat table 字段1 字段1的类型 [COMMENT 字段1的注释], 字段2 字段2的类型 [COMMENT 字段2的注释], ... 字段n 字段n的类型 [COMMENT 字段n的注释]
// 注意最后一个字段后面没有","号;)[COMMENT 表注释];注意:[...]为可选参数,最后一个字段后面没有逗号
3.4.1 数值类型
整数类型:
-
TINYINT (tinyint):1字节,小整数,范围:-128 ~ 127(有符号)或 0 ~ 255(无符号)
-
SMALLINT (smallint):2字节,大整数,范围:-32,768 ~ 32,767(有符号)或 0 ~ 65,535(无符号)
-
MEDIUMINT (mediumint):3字节,大整数,范围:-8,388,608 ~ 8,388,607(有符号)或 0 ~ 16,777,215(无符号)
-
INT或INTEGER (int/Integer):4字节,大整数,范围:-2,147,483,648 ~ 2,147,483,647(有符号)或 0 ~ 4,294,967,295(无符号)
-
BIGINT(BigInt):8字节,极大整数,范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807(有符号)或 0 ~ 18,446,744,073,709,551,615(无符号)
浮点数类型:
-
FLOAT (float):4字节,单精度浮点数,范围:-3.402823466 E+38 ~ 3.402823466351 E+38(有符号)或 0 和 1.175494351 E-38 ~ 3.402823466 E+38,近似值
-
DOUBLE (double):8字节,双精度浮点数,范围:-1.7976931348623157 E+308 ~ 1.7976931348623157 E+308 或 0 和 2.2250738585072014 E-308 ~ 1.7976931348623157 E+308,近似值
-
DECIMAL (M, D) (decimal):精确值,M 是总位数,D 是小数位数。例如,DECIMAL(5, 2)可以存储 123.45
注: unsigned修饰无符号, 即没有负数,所以如果描述年龄之类的可以加上。
例:age TINYINT UNSIGNED
注:如果描述的是分数 score double(4,1) 。 4代表整体长度,1代表小数长度
3.4.2 字符串类型
-
CHAR(N) (char) :固定长度字符串,最多 255 个字符
-
VARCHAR(N) (varchar) :可变长度字符串,最多 65,535 个字符
-
TINYBLOB (tinyblob):不超过 255 个字符的二进制数据
-
TINYTEXT (tinytext):短文本字符串,最多 255 个字符
-
BLOB (blob) :二进制形式的长文本数据,最多 65,535 个字符
-
TEXT (text) :长文本数据,最多65,535个字符
-
MEDIUMBLOB (mediumblob):二进制形式的中等长度文本数据,最多 16,777,215 个字符
-
MEDIUMTEXT (mediumtext):中等长度文本数据,最多 16,777,215 个字符
-
LONGBLOB (longblob):二进制形式的极大文本数据,最多 4,294,967,295 个字符
-
LONGTEXT (longtext):极大文本数据,最多 4,294,967,295 个字符
注: char(N)和varchar(N) 这两个后面的参数是 当前字符串能存储的最长字符串 。
char(N)如果没存满,则剩余空间用空格补位
varchar(N)会根据你存储的内容,计算占用的空间
差异: char(N)---------->性能好
varchar(N)------------>性能较差 (因为它会根据你存储的内容,计算占用的空间)
应用: 用户名用varchar(50) 性别用char(1)
3.4.3 日期时间类型
-
DATE :日期值 ,3字节,格式为**
YYYY-MM-DD**,范围是1000-01-01 至 9999-12-31 -
TIME :时间值或持续时间 ,3字节,格式为
HH:MM:SS,范围是-838:59:59 至 838:59:59 -
YEAR :年份值 ,1字节,格式为
YYYY,范围是1901 至 2155 -
DATETIME :混合日期和时间值 ,8字节,格式为
YYYY-MM-DD HH:MM:SS,范围是1000-01-01 00:00:00 至 9999-12-31 23:59:59 -
TIMESTAMP :混合日期和时间值 ,时间戳,4字节,格式为YYYY-MM-DD HH:MM:SS,范围是1970-01-01 00:00:01 至 2038-01-19 03:14:07 (timestamp)
3.5 DDL-表操作-修改
添加字段
- ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
//alter table
修改数据类型
- ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
//alter table 表名 modify
修改字段名和字段类型
- ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
//alter table 表名 change
删除字段
- ALTER TABLE 表名 DROP 字段名;
//alter table 表名 drop 字段名;
修改表名
- ALTER TABLE 表名 RENAME TO 新表名;
//alter table 表名 rename
3.6 DDL-表操作-删除
删除表
DROP TABLE [IF EXISTS] 表名; //drop table
删除指定表,并重新创建该表
- TRUNCATE TABLE 表名;
//truncate table
注意: 在删除表时,无论上面哪种方法,表中的全部数据也会被删除