MySQL(二)数据定义语言DDL、数值类型、字符串类型、日期时间类型详细讲解

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-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

注意:在删除表时,无论上面哪种方法,表中的全部数据也会被删除