免费学习推荐:
文章目录
二、数据类型
2.1 整型
2.2 小数
2.3 字符型
2.4 日期类型
二、六大约束
四、标识列
五、级联删除与置空
一、DDL数据定义语句
库的管理
创建:create database [if not exists] 库名;
修改:若需要修改库名,直接修改文件夹
删除:DROP DATABASE IF EXISTS 库名;
表的管理
创建
create table IF NOT EXISTS 表名(
列名 列的类型[长度、约束],
列名 列的类型[长度、约束],
列名 列的类型[长度、约束],
...
)
修改
alter table 表名 add|drop|modify|change column 列名 [列类型 约束];
删除
drop table 表名;
二、数据类型
2.1 整型
整数类型
别名
字节
无符号范围
有符号范围
Tinint
微整型
1
0~255
-128~127
Smallin
小整型
2
0~65535
-32768~32767
Mediumint
中整型
3
0~1677215
-8388608~8388607
Int或Integer
整型
4
0~4294967295
-2147483648~2147483647
Bigint
大整型
8
0~9223372036854775807*2+1
-9223372036854775808~9223372036854775807
2.2 小数
浮点数类型
字节
范围
float(M,D)
4
-2^128 ~ +2^128
double(M,D)
8
-2^1024 ~ +2^1024
定点数类型
\
\
DEC(M,D)
M+2
最大取值范围与double相同,给定decimal的有效范围由M和D决定
注意:
M:整数部位+小数部位的总长度
D:小数部位
D和M都省略时:
1、如果是decimal类型,则M默认为10,D默认为0;
2、如果是floact和double,会根据插入的数值的精确度来决定精度。
3、定点型的精确度较高,如果要求插入数值的精确度较高如货币运算则考虑使用。
2.3 字符型
字符串类型
M是否可以省略
特点
空间耗费
效率
范围
char(M)
M可以省略,默认为1
定长
比较耗费
高
M为0~255之间的整数
varchar(M)
M不可以省略
可变长
比较节省
低
M为0~65535之间的整数
binary和varbinary类型,类似于char和varchar,不同的是它们包含二进制字符而不包含非二进制字符,即保存较短的二进制。
Bit(M)类型,字节为1~8,范围为Bit(1)~Bit(8)。
Enum类型,即枚举类型,要求插入的值必须属于列表中指定的值之一,如果列成员为1~255,则需要1个字节存储;如果列成员为255~65535,则需要2个字节存储,最多需要65535个成员。
Set类型,和Enum类似,可以保存0~64个成员。和Enum最大的区别是:Set类型一次可以选取多个成员,而Enum只能选一个,根据成员个数不同,存储所占的字节也不同。
成员数
字节数
1~8
1
9~16
2
17~24
3
25~32
4
33~64
8
2.4 日期类型
日期和时间类型
特点
字节
最小值
最大值
date
只保存日期
4
1000-01-01
9999-12-31
datetime
保存日期+时间
8
1000-01-01 00:00:00
9999-12-31 23:59:59
timestamp(使用较多)
保存日期+时间
4
187001080001
2038年的某个时刻
time
只保存时间
3
-838:59:59
838:59:59
year
只保存年
1
1901
2155
timestamp和实际时区有关,更能反映实际的日期;datetime则只能反映出插入时的当地时区。
timestamp的属性受Mysql版本和SQLMode的影响很大。
二、六大约束
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。
NOT NULL
非空约束,规定某个字段不能为空
UNIQUE
唯一约束,规定某个字段在整个表汇中是唯一的
PRIMARY KEY
主键(唯一且非空)
FOREIGN KEY
外键
CHECK
检查约束(mysql中不支持)
DEFAULT
默认值,保证该字段有默认值
列级约束:六大约束语法上都支持,但外键约束没有效果。
表级约束:除了非空、默认,其他都支持。
常用的做法是:其他约束都写在列级,外键约束写在表级。
主键和唯一对比
是否保证唯一性
是否允许为空
允许有几个
是否允许组合(不推荐)
主键
√
×
至多一个主键
允许组合主键
唯一
√
√(允许有一个null)
可以有多个唯一
允许组合唯一
外键的特点:
要求在从表设置外键关系。
从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。
主表的关联列必须是一个key(一般是主键或唯一)
插入数据时,先插入主表再插入从表;删除数据时,先删除从表再删除主表。
列级约束和表级约束比较
位置
支持的约束类型
是否可以起别名
列级约束
列的后面
语法都支持,但外键没有效果
不可以
表级约束
所有列的下面
默认和非空不支持,其他支持
可以(主键没有效果)
学习了约束,尝试完成籼米的测试题
1、列级约束:
ALTER TABLE emp2 MODIFY COLUMN id INT PRIMARY KEY;# 列约束不支持起名字
表级约束:
ALTER TABLE emp2 ADD CONSTRAINT my_emp_id_pk PRIMARY KEY(id);# 实际上主键起了名字也没效果
2、与1类似
3、
ALTER TABLE emp2 ADD COLUMN dept_id INT;
ALTER TABLE emp2 ADD CONSTRAINT fk_emp2_dept2 FOREIGN KEY(dept_id) REFERENCES dept2(id);
四、标识列
标识列又称为自增长列,其实也可以将标识列纳入约束的范围。
含义:可以不用手动的插入值,系统提供默认的序列值。
特点:
1.标识列不一定非要和主键搭配,但要求是一个key。
2.一个表至多可以有一个表示列。
3.表示列的类型只能为数值型。
4.标识列可以通过SET auto_increment_increment=3;设置步长,也可以通过手动插入值来设置起始值。
五、级联删除与置空
级联删除:
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
级联置空:
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
更多相关免费学习推荐:mysql教程(视频)