MySQL(二)数据定义语言DDL、数值类型、字符串类型、日期时间类型详细讲解
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-31TIME:时间值或持续时间,3字节,格式为
HH:MM:SS,范围是-838:59:59 至 838:59:59YEAR:年份值,1字节,格式为
YYYY,范围是1901 至 2155DATETIME:混合日期和时间值,8字节,格式为
YYYY-MM-DD HH:MM:SS,范围是1000-01-01 00:00:00 至 9999-12-31 23:59:59TIMESTAMP:混合日期和时间值,时间戳,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
注意:在删除表时,无论上面哪种方法,表中的全部数据也会被删除
