补充:
1.数据的增删改
插入数据:
1.经典:insert into 表名 (列1,列2,。。。) values (值1,值2,。。。);
#插入的值的类型要与列的类型一致或兼容,不可以为null的列必须插入值,列的顺序是可以调换,列数和值的个数必须一致,可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致,支持插入多行,支持子查询
2.insert into 表名 set 列名1=值1,列名2=值2;
#不支持多行插入、不支持子查询
修改数据:
1.修改单表的记录:update 表名 set 列1=新值,列2=新值。。。 where 筛选条件;
2.修改多名的记录:
92:update 表1 别名,表2 别名 set 列1=新值,列2=新值。。。where 筛选条件;
99:update 表1 别名 inner|left|right join 表2 别名 on 连接条件 set 列=值,。。。where 筛选条件;
删除数据:
1.单表删除:delete from 表名 where 筛选条件
2.多表删除:
92:delete 表1的别名,表2的别名 from 表1 别名,表2 别名 where 连接条件 and 筛选条件;
99:delete 表1的别名,表2的别名 from 表1 别名 inner|left|right join 表2 别名 on 连接条件 where 筛选条件;
3.truncate 删除表内容释放空间:truncate table 表名;
补充:
#delete pk truncate
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
2.数据类型
常见的数据类型
数值型
整数型 tinyint(1)、smallint(2)、mediumint(3)、int/integer(4)、bigint(8)
特点:
① 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
② 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
③ 如果不设置长度,会有默认的长度
长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!
小数型 {定点数、浮点数}
分类:
1.浮点型
float(M,D)、double(M,D)
2.定点型
dec(M,D)、decimal(M,D)
特点:
①
M:整数部位+小数部位、D:小数部位
如果超过范围,则插入临界值
②
M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度
③定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
字符型
较短的文本char、varchar
较长的文本text、blob(较长的二进制数据)
较短的文本:
char、varchar
其他:
binary和varbinary用于保存较短的二进制、enum用于保存枚举、set用于保存集合
较长的文本:
text、blob(较大的二进制)
特点:
写法 M的意思 特点 空间的耗费 效率
char char(M) 最大的字符数,可以省略,默认为1 固定长度的字符 比较耗费 高
varchar varchar(M) 最大的字符数,不可以省略 可变长度的字符 比较节省 低
日期型
date 日期、time 时间、 year 年份、datetime 日期+时间、timestamp 日期+时间
分类:
date只保存日期、time 只保存时间、year只保存年
datetime保存日期+时间、timestamp保存日期+时间(有限制)
特点:
字节 范围 时区等的影响
datetime 8 1000——9999 不受
timestamp 4 1970-2038 受
3.常见约束
含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性
分类:六大约束
NOT NULL:非空,用于保证该字段的值不能为空
比如姓名、学号等
DEFAULT:默认,用于保证该字段有默认值
比如性别
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
比如学号、员工编号等
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
比如座位号
CHECK:检查约束【mysql中不支持】
比如年龄、性别
FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
在从表添加外键约束,用于引用主表中某列的值
比如学生表的专业编号,员工表的部门编号,员工表的工种编号
添加约束的时机:
1.创建表时
2.修改表时
约束的添加分类:
列级约束:六大约束语法上都支持,但外键约束没有效果
表级约束:除了非空、默认,其他的都支持
主键和唯一的大对比:
保证唯一性 是否允许为空 一个表中可以有多少个 是否允许组合
主键 √ × 至多有1个 √,但不推荐
唯一 √ √ 可以有多个 √,但不推荐
外键:(删除数据时,先删除从表,再删除主表)
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表
4.标识列
又称为自增长列:AUTO_INCREMENT
含义:可以不用手动的插入值,系统提供默认的序列值
特点:
1、标识列必须和主键搭配吗?不一定,但要求是一个key
2、一个表可以有几个标识列?至多一个!
3、标识列的类型只能是数值型
4、标识列可以通过 SET auto_increment_increment=3;设置步长
可以通过 手动插入值,设置起始值