四、MySQL基础知识-数据的增删改-数据类型-常见约束-标识列

补充:
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;设置步长
可以通过 手动插入值,设置起始值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值