DDL语句
定义:数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。主要由create(添加)、alter(修改)、drop(删除)和 truncate(删除) 四个关键字完成。主要是对数据库的常规操作、对表结构的常规操作、修改表结构,而不涉及表中数据。
对数据库的常规操作
功能 | SQL |
---|---|
查看所有数据库 | show databases; |
创建数据库 | create database [if not exists] 数据库名 [charset=utf8]; |
切换(选择要操作的)数据库 | use 数据库名; |
删除数据库 | drop database [if exists] 数据库名; |
修改数据库编码(了解) | alter database 数据库名 character set utf8; |
[ ]及其内的内容可以省去
添加注释可以用ctrl键+/键
也可以在前面加一个#
创建数据库
删除数据库(if exists就是防止报错)
SQLyog同上
对表结构的常规操作
创建表格式
创建表实际上就是构建一张空表,指定这个表的名字,这个表有几列,每一列叫什么名字,以及每一列存储的数据类型。例如
创建完成
数据类型
数值类型
类型 | 大小 | 范围 | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 byte | (-2^7,2^7 -1) | (0,2^8 -1) | 小整数值 |
SMALLINT | 2 bytes | (-2^15 ,2^15 -1) | (0,2^16 -1) | 大整数值 |
MEDIUMINT | 3 bytes | (-2^23,2^23 -1) | (0,2^24 -1) | 大整数值 |
INT或INTEGER | 4 bytes | (-2^31,2^31 -1) | (0,2^32 -1) | 大整数值 |
BIGINT | 8 bytes | (-2^63,2^63 -1) | (0,2^64 -1) | 极大整数值 |
FLOAT | 4 bytes | 很大,已够用 | 此处不再举例 | 单精度浮点数值 |
DOUBLE | 8 bytes | 超级大 | 此处不再举例 | 双精度浮点数值 |
DECIMAL | 依赖于M,D的取值 | 依赖于M,D的取值 | 小数值 |
注意无符号数的使用,例如int unsigned
decimal的使用:decimal(M,D)
M表示有效数字个数,D表示小数点后数字个数
字符串类型
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-2^8 -1 bytes | 定长字符串 |
VARCHAR | 0-2^16 -1 bytes | 变长字符串 |
TINYBLOB | 0-2^8 -1 bytes | 不超过255个字符的二进制字符串 |
TINYTEXT | 0-2^8 -1 bytes | 短文本字符串 |
BLOB | 0-2^16 -1 bytes | 二进制形式的长文本数据 |
TEXT | 0-2^16 -1 bytes | 长文本数据 |
MEDIUMBLOB | 0-2^24 -1 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-2^24 -1 bytes | 中等长度文本数据 |
LONGBLOB | 0-2^32 -1 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-2^32 -1 bytes | 极大文本数据 |
日期类型
类型 | 大小(bytes) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59/838:59:59 | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 自动填充当前时区的时间 | YYYY-MM-DD HH:MM:SS | 混合日期和时间,时间戳 |
对表结构的其他操作
功能 | SQL |
---|---|
查看当前数据库的所有表名称 | show tables; |
查看指定某个表的创建语句 | show create table 表名; |
查看表结构 | desc 表名; |
删除表 | drop table 表名; |
修改表结构
添加列
语法:alter table 表名 add 列名 类型(长度) [约束];
例如,为students表添加一个新的字段为:班级class, 类型为varchar(20)
修改列名和类型
语法:alter table 表名 change 旧列名 新列名 类型(长度) [约束]
例如,为students表的class字段更换为department varchar(30)
删除列
语法:alter table students 列名;
例如,删除students里的department列
修改表名
语法:rename table 旧表名 to 新表名;
例如,将students修改为student
DML语句
DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中的表的数据记录进行更新。
关键字:插入(insert)、删除(delete)、更新(update)
数据插入
语法
向表中插入(某些列):insert into 表(列名1,列名2,列名3...) values (值1,值2,值3...),(值1,值2,值3...),...;
向表中插入(所有列):insert into 表 values(值1,值2,值3...),(值1,值2,值3...),...;
注意:varchar的值要用单引号括起来
这里的日期也可以写成 ‘2001-05-20’ 注意要有单引号
数据修改
语法:
修改所有行:update 表名 set 字段名=值,字段名=值,...;
修改特定行:update 表名 set 字段名=值,字段名=值,... where 条件;
where可以很复杂,也可以是范围,例如where sid > 2
数据删除
语法:
删除行(如果没有where限定,则删除所有行):delete from 表名 [where 条件];
truncate table 表名
或者 truncate 表名
区别:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table,可以理解为将整个表删除后,再创建该表。
删除所有行的delete和truncate效果一样