MySQL笔记2、显示宽度、列属性操作、修改表结构、高级操作

本文详细介绍了MySQL数据库中显示宽度、列属性如null、not null、default、unique、primary key、auto_increment的使用,以及如何修改表结构,包括增加、删除和修改字段,主键和复合主键的概念。还涉及了高级操作如复制表结构、限制更新和删除、批量插入等。

一、显示宽度与0填充

在我们为某个字段设置整数类型时,可以为其指定显示宽度。必须与zerofill联合使用

整数(显示宽度)

==图片1==

二、列属性

create table(

字段名 列类型 列属性,

字段名 列类型 列属性,



)【表选项】

1、列类型 VS 列属性

列类型主要用于约束单独的一个字段在整行中的取值限制

列属性主要用于约束单独的一个字段在整列中的取值限制

2、null

默认,在插入数据时没有为某个字段提供数据时,MySQL会默认null值作为填充

一般创建表时,不允许字段的值为null值

3、not null

用于约束当前字段不允许为null值

==图片2==
当某个字段设置了not null约束后,要么在插入数据时必须提供数据,要么为not null设置一个默认值

4、自定义默认值

==图片3==
==图片4==
当我们插入记录时,也可以使用default关键字,来代替默认值。

==图片5==
提示:

在设置默认值时,如果有很大的机会能确定值,就使用确定的值

如果没法确定,对字段型的字段使用default ‘’,对数值型的字段使用default 0

5、unique

用于约束当前字段在整列中是唯一的

==图片6==
提示:

unique约束,不允许字段的值重复,但允许都为null,因为null不等于null

6、primary key

重要的字段,此处的重要是指对MySQL来说重要,主要体现在对记录的查找上

==图片7==
主键的特点:不允许重复,且不允许为null值

7、auto_increment

对于主键的值,我们选择了整数值,就是为了达到一种自增长,不会重复,且能唯一表示记录

auto_increment即自增长,用于解决主键值问题

==图片8==
提示:

对于auto_increment属性,必须应用在整形字段且为primary key或unique,但绝大数与primary key联合使用

8、模拟主键(了解)

当一个表中没有设置primary key时,MySQL会寻找表中第一个具有unique和not null约束的字段,作为主键字段

一个表中只能有1个主键,一个表中可以有多个唯一键,一个表中只能有1个自增长

在这里插入图片描述

9、复合主键(了解)

MySQL可以使用多个字段,共同组成主键字段

语法:

primary key(字段1,字段2)

==图片10==
对于复合主键的值,只有组成复合主键的值完全相同时才算重复

10、备注

语法:

comment '备注'

三、修改表结构

总的语法:

alter table 表名 add |drop |modify |change |rename |

==图片12==

1、增加与删除字段

(1)、添加

alter table 表名 addcolumn】 字段名 列类型 列属性 【first|after 字段名】;

==图片11==

(2)、删除

alter table 表名 dropcolumn】 字段名;

2、修改字段名

alter table 表名 change 原字段名 新字段名 列类型 列属性;

==图片13==
提示:修改字段名时,列属性也要重写,否则变为删除

3、修改列类型

alter table 表名 modify 字段名 列类型 列属性【first|after;

4、修改表名

alter table 表名 rename to 新名;

5、修改表选项

create table 表名(

)【表选项】

engine     存储引擎

charset     存储字符集

collate     校验集

语法:

alter table 表名 engine 存储引擎| charset 存储字符集| collate 校验集;

提示:

如果表中已经有数据,不要随意修改字符集

6、修改列属性

列属性包含not null、default、unique、auto increment、primary key。

当一个表创建后,对于列属性的操作,可以使用alter table 表名 modify来操作,在操作时,如果书写列属性就是添加列属性,没写就是删除

但是有两个特殊的列属性,primary key和unique

(1)、增加列属性

普通的列属性
alter table 表名 modify 字段名 mot null defaultunique auto_increment

==图片14==
提示:unique不能与default 联合使用

主键字段的添加
alter table 表名 add primary key(字段名);

(2)、删除列属性

普通的列属性

对于not null、default、auto_increment不书写就是删除

primary key 与unique的删除
alter table 表名 drop primary key;

如果auto_increment与primary key联用,要先删除auto_increment,再删除primary key

alter table 表名 drop key 唯一键的索引名;

==图片15==
一般唯一键的索引名与字段名相同

四、实体与实体的关系(了解)

实体:

现实任何事物都是一个实体,用MySQL保存实体时的信息时,那么一个实体的信息就保存在一个表中

现实中实体与实体之间具有关系,在MySQL数据库中,保存实体的表和表之间也会反映出现实中实体与实体之间的关系

主要分三类:

一对一

一对多

多对多

五、高级操作、

1、复制表结构

语法:

create table 表B like 表A;

只是复制结构,不包含数据

2、别分SQL执行结果

语法:

create table 表名 select 语句;

将一条select语句得到的结果保存到一个新的表中

3、限制更新

update 表名 set 字段=值 【where 子句】【limit 子句】;

用于将where子句匹配到记录,仅更改limit子句限制的条数

==图片16==

4、限制删除

delete 表名 【where 子句】【limit 子句】;

用于将where子句匹配到记录,仅删除limit子句限制的条数

5、批量插入

insert into 表A【字段列表】 select 字段列表 from 表B;

将select语句得到的记录插入到表A中

=图片17==

6、蠕虫复制

蠕虫复制是批量插入的一个特殊情况,在使用批量插入语句时,若插入的表和数据查询的表是同一个表,这就叫作蠕虫复制

7、主键冲突

主要讲主键冲突的解决方案

(1)、冲突更新

insert into 表名【字段列表】 values(值列表) on duplicate key update 字段=值,字段=...;

==图片18==
==图片19==

(2)、冲突交替

replace into 表名【字段列表】 values(值列表);

如果主键冲突,会将所有的字段替换掉

8、清空表

delete from 表名;

只会将表中的数据删除,不会重建索引

truncate 表名;

不仅会将表中的数据删除,而且会重建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值