对于数据库的界说
创建库
- CREATE DATABASE IF NOT EXISTS 库名
- DEFAULT CHARACTER SET utf8 //设置默认字符集为utf8
- COLLATE uf8_general_ci; //不区分大小写 case insensitive
- CREATE DATABASE IF NOT EXISTS 库名
- DEFAULT CHARACTER SET utf8 //设置默认字符集为utf8
- COLLATE uf8_general_cs; //区分大小写 case sensitive
复制代码 修改库
删除库
- DROP DATABASE IF EXISTS 库名;
复制代码 更改库的字符集
- ALTER DATABASE 库名
- CHARACTER SET gbk;
复制代码 对于数据表的界说
创建表
- CREATE TABLE 表名 (
- 字段名 字段类型【(长度)】【约束】,
- 字段名 字段类型【(长度)】【约束】,
- ...
- 字段名 字段类型【(长度)】【约束】,
- 字段名 字段类型【(长度)】【约束】
- );
复制代码 修改表
- 修改字段名/类型/束缚
- ALTER TABLE 表名
- MODIFY COLUMN 字段名 类型【(长度)】【约束】;
复制代码 - 添加新字段
- ALTER TABLE 表名
- ADD COLUMN 新字段名【(长度)】【约束】;
复制代码 - 删除字段
- ALTER TABLE 表名
- DROP COLUMN 字段名;
复制代码 - 修改表名
- ALTER TABLE 表名
- RENAME TO 新表名;
复制代码 删除表
表的复制
- 仅仅复制结构
- CREATE TABLE 表名
- LIKE 目标表名;
复制代码 - 复制结构+数据
- # 全部复制
- CREATE TABLE 表名
- SELECT * FROM 目标表名;
- # 部分复制
- CREATE TABLE 表名
- SELECT 部分字段 FROM 目标表名
- WHERE 筛选条件;
复制代码 数据类型
数值
- 整数
- 分类
- Tinyint,1个字节
- Smallint,2个字节
- Mediumint,3个字节
- Int,4个字节
- Bigint,8个字节
- 符号
- 默认有符号
- 设置无符号的方法,使用 UNSIGNED 关键字
- CREATE TABLE t (
- t1 INT,
- t2 INT UNSIGNED
- );
复制代码
- 长度
- 长度表示最大显示宽度,当使用 zerofill 时,不够长度时,用0填空
- 如果不配合zerofill,则整型的长度没用
- 越界
- 如果插入的数值超出范围,则报 out of range 非常,并插入最接近的临界值
- 浮点数
- 定点数
- DECIMAL(M,D)
- M:整数+小数的位数
- D:小数的位数
- M默认为10, D默认为0
字符型
- 较短文本
- char:固定长度,性能高,不能节约空间
- varchar:可变长度,性能低,能节约空间
- 长度为最大长度
- 较长文本
- 二进制
- binary:类似char,存储的是二进制
- varbinary:类似varchar,存储的是二进制
- Blob:存储数据量大的二进制,好比视频,图片
日期型
- date:2018-09-26
- time:17:11:37
- year:2018
- datetime:2018-09-26 17:11:50,与时区无关,8个字节
- timestamp:20180926171211,受MySQL版本影响,与时区有关,4个字节
数据束缚
六大束缚类型
- 非空束缚:NOT NULL
- 默认束缚:DEFAULT 值
- 唯一束缚:UNIQUE
- 主键束缚:PRIMARY KEY
- 外键束缚:FOREIGN KEY
- 查抄束缚:MySQL不支持
列级束缚与表级束缚
- 列级束缚:束缚语法都不报错,但是外键束缚没有用果
- 表级束缚:支持主键束缚,外键束缚,唯一束缚
- CREATE TABLE 表名(
- 字段名 字段类型 列级约束
- 字段名 字段类型
- CONSTRAINT 表级约束名 表级约束类型(字段名)
- )
复制代码 - 列级束缚例子
- CREATE TABLE stuinfo (
- id INT PRIMARY KEY, # 主键约束
- stuName VARCHAR(20) NOT NULL, # 非空约束
- gender CHAR(1) DEFAULT 'm', # 默认约束
- seat INT UNIQUE, # 唯一约束
- major INT FOREIGN KEY REFERENCES major(id) # 外键约束,但是没有效果
- );
复制代码 - 表级束缚例子
- CREATE TABLE stuinfo (
- id INT
- stuName VARCHAR(20) NOT NULL, # 非空约束
- gender CHAR(1) DEFAULT 'm', # 默认约束
- seat INT,
- major INT,
-
- CONSTRAINT pk PRIMARY KEY(id), # 主键约束
- CONSTRAINT uq UNIQUE(seat), # 唯一约束
- CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外键约束
- );
复制代码 主键束缚和唯一束缚的区别
束缚类型包管唯一性是否允许为空允很多少个是否允许组合主键包管不允许最多1个允许唯一包管允许可以多个允许 外键使用注意事项
- 外键关联的必须是Key,一般是 主键/唯一键
- 插入数据时,先插入主表,再插入从表
- 删除数据时,先删除从表,再删除主表
数据库表三大范式
第一范式
第二范式
- 满足第一范式的前提下,表中都要有主键,且每一列都与主键有关系
第三范式
- 满足第一范式和第二范式的前提下,表中每一列与主键具有直接关系,不能是间接关系
三大范式作用
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |