mysql+表+无法+增删改,【MySQL】基础学习——表的约束及增删改

表的约束

空属性

两个值:null和not null,默认字段都是空,但是实际中尽可能保证字段非空。

not null表示此列不允许为空,必须做数据插入。

620b7e99bda84de6c9934f5adba375fe.png

将age设置为not null,所以在插入数据时,age必须有数据,否则就会报错。

默认值

如果某一属性,经常性出现,可以在一开始就指定数据;

默认值配合not null一起使用;

set和enum不允许设置默认值

b42c33398a29ec58cf2e2089c4112fdc.png

age设置为非空,默认为0;sex默认设置为“男”。

列描述

comment 仅作为描述列的作用,没有实际含义,要查看当前表的描述信息,使用show create table table_name查看。

4eb56477a9856ab74a0d26ebd0413748.png

需要注意的是comment并不但能同于注释,注释只有在创建的时候能看到。

4156a9770218f14551dbae343b61b3b9.png

自动填充名

如果某一列数值列规定了zerofill,则自动把此列变为无符号列;

规定了zerofill的数值列,如果数据长度没有达到规定长度,则在数据前自动填充0

c45be8b5b480395e0f5e8125f8c80b60.png

主键

主键用于唯一约束字段数据,使用主键约束的字段,不能为空,不能重复;

一张表中只能有一个主键,但是可以是几列一起构成复合主键;

单主键所在的列为整数数据类型

a. 设置id为主键

b15fede2e15182e77bf7008c6c68a22a.png

b. 设置name和宿舍为复合主键

abfc4004af055848f1b3e50d385ac2e5.png

c. 创建表以后添加主键或删除主键

注意:要添加为主键的字段已存在的数据,必须不能为空,不能重复。

ab89294224207326016c834233e494dc.png

自增长

任何一个字段要做自增长,其本身必须是索引(key一栏必须有值)

自增长必须为整数;

一张表有且只能有一个自增长;

一般与主键配合使用 id+auto_increment:逻辑主键

a1a85ba0f0f9697ccae95b25a948d1de.png

注意:指定自增数值后,以后的自增以此为基础;删除指定列后,还是以最大值为基础自增。

7989e366d2a9f2f2793bb2c49e01a63b.png

唯一键

唯一键允许为空,但是不能重复,一张表可以有多个字段设置唯一;

唯一键解决表中多个字段需要唯一性约束的问题

12eb99cb6bca41d954f4825fbc7b56a2.png

注意:

null是不做比较的,可以允许有多个null;

这里id的类型是char类型,但是是可以输入整数的;反过来,如果id类型是int类型,那么输入的字符串如果是数字,就可以插入成功,如果不是,就会报错。

74446a4b2b3cea3ea7e3cb43d48ae5b1.png

表的增删改

1. 增加

insert into table[(column[,column...])] values (value [,value...]);

表的增加操作,我们之前一直在使用,在此不再举例,只说明几点需要注意的:

1. 插入的数据应与字段的数据类型相同;

2. 数据的大小应在规定的范围内,不能把一个长度为80的字符串插入到长度为40的列中;

3. 在values中列出的数据位置必须与被加入的列位置相对应,即顺序不能反;

4. 字符和日期类型应该包含在单引号中;

在插入数据的时候,如果主键对应的值已经存在,那么就会插入失败,我们可以选择性的进行处理:

1. 更新操作

insert into 表名(字段列表) values(值列表) on duplicate key update 字段=新值;

将id为1对应的name由a更新为c

562b6f19f2c928e2a13a56270ca0b031.png

2. 替换操作

replace into 表名(包含字段) values(值列表);

746d4773f8156cbdcf2e03bb3b297247.png

替换操作实际上是先删除这一行,然后再插入,因此操作成功后,显示的是2 rows in set

如果那一行存在的话,那么替换那一行,如果那一行不存在,那么添加那一行。

修改

update tbl_name set col_name1=expr1, [, col_name2=expr2 ...] [where conditon]

update使用细节:

1. update语法可以用新值更新原有表中的各列;

2. set子句只是要修改哪些列和要给予哪些值,可以更新多个字段set 字段1=值1,字段2=值2;

3. where子句指定应该更新哪些行,如果没有where子句,则更新所有行。

0982d398d254930ce77ff5408409d144.png

第一个例子是没有where子句,将所有name都改为’小红’;

第二个例子是指定id为1的name改为‘小明’;

第三个例子是指定name为’小红’的前两个数据改为’西红柿’。

删除

delete from tbl_name [where condition]

如果没有where子句,那么数据将会被一行一行的删掉;

如果要删除整个表的记录,也可以使用truncate;

带where子句:删除满足条件的记录;

delete只删除数据,不会影响表的结构;

delete和truncate的区别:

1. 效果一样,但是truncate更快;

2. delete可以带where子句,删除更加灵活;

3. delete可以返回被删除的记录数,而truncate返回0。

0a253acb3e61db79f29875ea4e024efb.png

在练习删除时,可以复制一份表,避免数据被删除:

1. 复制表结构

create table tt1 like tt7;

2. 把tt7中的数据赋值到tt1中

insert into tt1 select* from tt7;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值