DDL

目录


库的创建、修改、删除

  • 创建库
create database [if not exists] db_name;
  • 删除库
DROP database [IF EXISTS] db_name;
  • 修改库
#更改库的字符集
ALTER DATABASE db_name CHARACTER SET gbk;

表的创建(通过复制创建)、修改、删除

  • 创建表
create table [if not exists] 表名(
	列名 列的类型[(长度) 约束],
	列名 列的类型[(长度) 约束],
	...
	列名 列的类型[(长度) 约束]
)

eg:

CREATE TABLE book(
	id INT,#编号
	bName VARCHAR(20),#图书名
	price DOUBLE,#价格
	authorId  INT,#作者编号
	publishDate DATETIME#出版日期
);
  • 通过复制创建表
    • 仅仅复制表的结构
CREATE TABLE 新表 LIKE 旧表;
- 复制表的部分结构(即不复制全部字段)
CREATE TABLE 新表
SELECT 查询项 
FROM 旧表
WHERE 0;#条件永远不成立,即不复制数据
- 复制表的结构以及数据
    - 复制表的结构以及全部数据
CREATE TABLE 新表
SELECT * FROM 旧表;
    - 复制表的结构以及部分数据
CREATE TABLE 新表
SELECT 查询项 
FROM 旧表
WHERE 查询条件;
  • 删除表
DROP TABLE [IF EXISTS] book;
  • 修改表
alter table 表名 add|drop|modify|change column 列名 [列类型 约束];

eg:
#修改表名
ALTER TABLE 原表名 RENAME TO 新表名;

#修改列名
ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 类型;

#修改列的类型或约束
ALTER TABLE 表名 MODIFY COLUMN 列名 [新的列类型|约束];

#添加新列
ALTER TABLE 表名 ADD COLUMN 新列 新列的类型 [FIRST|AFTER 列名]; 添加到第一列或某一列后

#删除列
ALTER TABLE 表名 DROP COLUMN  列名;


创建表时的数据类型

数据类型:

  • 数值型:
    • 整型
      tinyint(占1个字节,表达的范围也是)、smallint(2)、mediumint(3)、int/integer(4)、bigint(8)
      ① 默认是有符号整型,如果想设置为无符号,需要添加unsigned关键字
      ② 如果插入的数值超出范围,会报out of range异常,并且插入临界值
      ③ 如果不设置长度,会有默认的长度,
      长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!
    • 小数
      • 定点型
        dec(M,D)
        decimal(M,D)
      • 浮点型
        float(M,D)(4字节)
        double(M,D)(8)
        ①M:整数部位+小数部位 的长度,D:小数部位 的长度
        如果超过长度,则插入临界值,不足则补0
        eg: float(5,2) 插入1234.56结果是999.99
        ②M和D都可以省略
        如果是decimal,则M默认为10,D默认为0
        如果是float和double,则会根据插入的数值的精度来决定精度
        ③定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
  • 字符型:
    • 较短的文本:char(M)、varchar(M)
写法 M代表的意思 空间的耗费 效率
char(M) 最大的字符数,可以省略,默认为1 固定长度,即使用不完也分配指定长度的空间
varchar(M) 最大的字符数,不可以省略 可变长度,只会分配实际所需长度的空间
- 较长的文本:text
  • 二进制(媒体文件):
    binary、varbinary
    blob(较长的二进制数据)
  • 日期型:
    date:只保存日期
    time: 只保存时间
    year:只保存年
    datetime:保存日期+时间
    timestamp:保存日期+时间
比较 字节 范围 时区等的影响
datetime 8 1000-01-01 00:00:00 — 9999-12-31 不受
timestamp 4 1970-01-01 08:00:01 - 2038
  • 枚举:
    enum
  • 集合:
    set

创建表时的约束

  • 主键与外键
posted @ 2019-11-08 10:23  Ez_real  阅读(143)  评论(0编辑  收藏  举报