DDL语言
DDL(Data Definition Language),数据定义语言,用于库和表的管理。
创建数据库
#如果要创建的库名已存在,会报错
CREATE DATABASE 库名;
#如果没有这个库就创建,有就不创建,容错率高,建议使用
CREATE DATABASE IF NOT EXISTS 库名;
修改数据库
修改库名
注意:这条语句已经废弃,因为不安全,可能造成数据丢失。如果真的要改关闭DBMS后直接在DBMS的文件夹下找的要修改的库(文件夹),重命名即可。
RENAME DATABASE 库名 TO 新库名;
更改数据库的字符集
ALTER DATABASE 库名 CHARACTER SET 字符集;
删除数据库
#如果没有这个库会报错
DROP DATABASE 库名;
#如果存在才删除,这种写法容错率更高,建议使用。
DROP DATABASE IF EXISTS 库名;
后面创建表格需要用到数据类型,常见的SQL数据类型如图所示:
SQL数据类型:
SQL数据类型注意(小细节):
- CHAR保存固定长度的字符串(可包含字母、数字以及特殊字符),不指定大小默认为1,VARCHAR和它的区别是VARCHAR是可变长的,且值如果大于255会转换成TEXT类型,必须指定最大字符长度;
- 数值类型是可以指定显示长度的,但对于存储空间都是一样的,如INT(3),INT(5),INT(9)都是占用4byte的存储空间.
- 对于数值类型如果不设置是无符号还是有符号,默认是有符号,设置无符号关键字是UNSIGNED;
- 对于整形,插入数据时如果超出了整形范围会报异常,并且插入临界值;
- 对于小数类型,指定(M,D),其中M是小数点前后一共显示的位数,D是小数点后的位数,如果插入的数小数点前的位数<=(M-D),小数点后不足D位就补领,否则四舍五入;如果这个数小数点前的位数>(M-D)报异常,超出范围;
- TIMESTAMP支持的范围较小,DATETIME范围较大(上面表格有具体范围);TIMESTAMP和实际时区有关,而DATETIME只能反映处插入时当地时区;
表的创建
CREATE TABLE 表名(
列名 类型,
列名 类型,
列名 类型,
....
);
表的修改
核心语法时ALTER TABLE 表名…
- 修改表名
语法格式:ALTER TABLE 表名 RENAME TO 新表名;
- 修改列名
在对列名进行修改时必须带上类型,也就是还可以修改类型。
语法格式 :#COLUMN可以省略 ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
- 修改列的类型
语法格式:ALTER TABLE 表名 MODIFY COLUMN 列名 新类型;
- 添加新列
语法格式:ALTER TABLE 表名 ADD COLUMN 列名 类型;
- 删除列
语法格式:ALTER TABLE 表名 DROP COLUMN 列名;
还有对列的约束的修改放在约束的知识点讲解。
表的复制
- 只复制表的结构
语法格式:CREATE TABLE 表名 LIKE 表名【已存在的表】
- 复制表结构加数据
语法格式:CREATE TABLE 表名 SELECT语句;
- 只复制部分结构及数据
CREATE TABLE 表名 SELECT语句【查询列表是要复制的列,不要数据就让筛选条件恒不成立,如1=2】;
表的删除
语法格式:
DROP TABLE 表名;
#还是建议下面这种写法
DROP TABLE IF EXUSTS 表名;