学有小成-mysql数据库-02

一显示宽度与0填充

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

语法:

整型(显示宽度)

二列属性

create table 表名(

字段名  列类型  【列属性】,

字段名  列类型  【列属性】,

…..

)【表选项】

 

1列类型  VS 列属性

 

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

 

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

2null

 提示:

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

MySQL系统的默认值,

 

默认,在插入记录时当我们没有为某个字段提供数据时,那么mysql会使用null值为填充。

提示:

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

3not null

 主要用于约束当前的字段不允许为null(不允许MySQL使用null值进行填充)

插入测试数据:

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

4default

 自定义默认值。

 

插入测试数据:

 

default关键字

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

提示:

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

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

5unique

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

示例:unique的特点

提示:

unique约束,不允许字段的值重复,但是允许为null,原因是null值根本等于null

6primary key

primary   主要的意思

key   键,字段

primary key 重要的主要的字段。此处的重要并不说对用户重要,而是对MySQL来说重要。主要体现在对记录的查找上。

  

示例:

示例:插入测试

提示:
主键的特点,不允许重复,且不允许为null

 

查看下一个自增长的主键的值。

7auto_increment

对于主键的值,我们选择了整数型,就是想达到一种自动增长,这样就不会重复。而且能唯一标识一条记录。

auto_increment,是自增长,就是用于解决主键值的问题。

示例:

提示:

对于auto_increment属性,必须应用在整型字段并且是primary key 或者unique。但是绝大多数与primary key联合使用。

8模拟主键

 当一个表中如果没有设置primary key,那么MySQL会在表中寻找第1个具有uniquenot null约束的字段,作为主键字段。

提示:

一个表中能有1个主键

一个表中能有多个唯一键

一个表中能有1个自增长

9复合主键

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

语法:

primary key(字段1,字段2)

示例:

对于复合主键的值,只要当组成复合主键的字段的值完全相同才算是重复。

10备注

 语法:

comment ‘备注

 

三修改表结构

 总的语法:

alter table 表名 add column|add primary key|drop|drop primary key|drop key|modify|change|rename|

 1增加与删除字段

①、添加

alter table 表名 add column 字段名 列类型 列属性 first| afterp字段名

②、删除

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校验集

提示:

虽然MySQL提供了修改存储字符集的命令,但是如果一个表中已有数据,那么不要执行修改存储字符集的命令。

6修改列属性

 

列属性包含not nulldefaultuniqueauto_incrementprimary key

 

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

 

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

 

①、增加列属性

 

普通的列属性

 

alter table 表名 modify 字段名 not null defult uniqueauto_increment

 

示例:

提示:

注意uniquedefault不能联合使用。

主键字段的添加

语法:

alter table 表名 add primary key(字段名)

 

②、删除属性

 

普通的列属性

对于not nulldefaultauto_increment不书写就是删除。

 

primary keyunique的删除

alter table 表名 drop primary key;

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

默认唯一键的索引名与字段名相同。

小节:

四实体与实体关系

 实体:

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

现实中的实体与实体之间具有关系,那么MySQL数据库中,保存实体的表与表之间也会反应出现实中实体与实体之间的关系。

 

这样的关系可以分为以下三类:

一对一

 

一对多

多对多

 

五高级操作

 1复制表结构

语法:

create  table B  like A;

说明:
使用表A的结构重新创建一个表B

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

2备份sql执行结果

语法:

create table 表名 select 语句;

说明:

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

3限制更新

语法:

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

说明:

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

4限制删除

 

语法:

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

说明:

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

5批量插入

 

语法:

insert  into  A(字段列表) select 字段列表 from B;

说明:

select语句得到的数据,插入到表A中。

6蠕虫复制

蠕虫复制是批量插入的一个特殊情况,在使用批量插入语句时,如果插入的表与数据查询的表是同一个表,那么这种情况,术语就叫蠕虫复制。

7主键冲突

主要讲述的就是主键冲突的解决方案》

①、冲突更新。

语法:

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

②、冲突替换

语法:

replace into 表名(字段列表)values(值列表

说明:

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

8清空表

 

语法:

delete from 表名;

说明:

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

 

语法:

truncate 表名;

说明:
不但会删除表中的数据,而且还会重建索引。

 

posted @ 2018-08-31 14:24  PHPer1  阅读(215)  评论(0编辑  收藏  举报