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

二、列属性
create table(
字段名 列类型 列属性,
字段名 列类型 列属性,
…
)【表选项】
1、列类型 VS 列属性
列类型主要用于约束单独的一个字段在整行中的取值限制
列属性主要用于约束单独的一个字段在整列中的取值限制
2、null
默认,在插入数据时没有为某个字段提供数据时,MySQL会默认null值作为填充
一般创建表时,不允许字段的值为null值
3、not null
用于约束当前字段不允许为null值

当某个字段设置了not null约束后,要么在插入数据时必须提供数据,要么为not null设置一个默认值
4、自定义默认值


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

提示:
在设置默认值时,如果有很大的机会能确定值,就使用确定的值
如果没法确定,对字段型的字段使用default ‘’,对数值型的字段使用default 0
5、unique
用于约束当前字段在整列中是唯一的

提示:
unique约束,不允许字段的值重复,但允许都为null,因为null不等于null
6、primary key
重要的字段,此处的重要是指对MySQL来说重要,主要体现在对记录的查找上

主键的特点:不允许重复,且不允许为null值
7、auto_increment
对于主键的值,我们选择了整数值,就是为了达到一种自增长,不会重复,且能唯一表示记录
auto_increment即自增长,用于解决主键值问题

提示:
对于auto_increment属性,必须应用在整形字段且为primary key或unique,但绝大数与primary key联合使用
8、模拟主键(了解)
当一个表中没有设置primary key时,MySQL会寻找表中第一个具有unique和not null约束的字段,作为主键字段
一个表中只能有1个主键,一个表中可以有多个唯一键,一个表中只能有1个自增长

9、复合主键(了解)
MySQL可以使用多个字段,共同组成主键字段
语法:
primary key(字段1,字段2)

对于复合主键的值,只有组成复合主键的值完全相同时才算重复
10、备注
语法:
comment '备注'
三、修改表结构
总的语法:
alter table 表名 add |drop |modify |change |rename |

1、增加与删除字段
(1)、添加
alter table 表名 add【column】 字段名 列类型 列属性 【first|after 字段名】;

(2)、删除
alter table 表名 drop【column】 字段名;
2、修改字段名
alter table 表名 change 原字段名 新字段名 列类型 列属性;

提示:修改字段名时,列属性也要重写,否则变为删除
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 default 值 unique auto_increment

提示: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 唯一键的索引名;

一般唯一键的索引名与字段名相同
四、实体与实体的关系(了解)
实体:
现实任何事物都是一个实体,用MySQL保存实体时的信息时,那么一个实体的信息就保存在一个表中
现实中实体与实体之间具有关系,在MySQL数据库中,保存实体的表和表之间也会反映出现实中实体与实体之间的关系
主要分三类:
一对一
一对多
多对多
五、高级操作、
1、复制表结构
语法:
create table 表B like 表A;
只是复制结构,不包含数据
2、别分SQL执行结果
语法:
create table 表名 select 语句;
将一条select语句得到的结果保存到一个新的表中
3、限制更新
update 表名 set 字段=值 【where 子句】【limit 子句】;
用于将where子句匹配到记录,仅更改limit子句限制的条数

4、限制删除
delete 表名 【where 子句】【limit 子句】;
用于将where子句匹配到记录,仅删除limit子句限制的条数
5、批量插入
insert into 表A【字段列表】 select 字段列表 from 表B;
将select语句得到的记录插入到表A中

6、蠕虫复制
蠕虫复制是批量插入的一个特殊情况,在使用批量插入语句时,若插入的表和数据查询的表是同一个表,这就叫作蠕虫复制
7、主键冲突
主要讲主键冲突的解决方案
(1)、冲突更新
insert into 表名【字段列表】 values(值列表) on duplicate key update 字段=值,字段=值...;


(2)、冲突交替
replace into 表名【字段列表】 values(值列表);
如果主键冲突,会将所有的字段替换掉
8、清空表
delete from 表名;
只会将表中的数据删除,不会重建索引
truncate 表名;
不仅会将表中的数据删除,而且会重建索引
本文详细介绍了MySQL数据库中显示宽度、列属性如null、not null、default、unique、primary key、auto_increment的使用,以及如何修改表结构,包括增加、删除和修改字段,主键和复合主键的概念。还涉及了高级操作如复制表结构、限制更新和删除、批量插入等。

478

被折叠的 条评论
为什么被折叠?



