这个博客记录的好像就是mysql8从零开始学的笔记
2.3.2 使用主键约束
主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key constraint)要求主键列的数据唯一,并且不允许为空。
单字段主键
字段名 数据类型 PRIMARY KEY [默认值]
多字段联合主键
PRIMARY KEY [字段1, 字段2,. . ., 字段n]
2.3.3 使用外键约束(外键与主键的数据类型要一样)
外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。
[CONSTRAINT <外键名>] FOREIGN KEY 列名1 [ ,列名2,…]
REFERENCES <主表名> 主键列1 [ ,主键列2,…]
constraint<外键名可以自己设置> froeign key(需要做外键的字段名称) refernces 主键数据表的名字(该数据表中的主键名)
2.3.4 使用非空约束
非空约束(Not Null constraint)指字段的值不能为空。对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。
字段名 数据类型 not null
2.3.5 使用唯一性约束
唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
字段名 数据类型 UNIQUE
2.3.6 使用默认约束
默认约束(Default Constraint)指定某列 的默认值。
字段名 数据类型 DEFAULT 默认值
2.3.7 设置表的属性值自动增加
在数据库应用中,经常希望在每次插入新记录时,系统就会自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
字段名 数据类型 AUTO_INCREMENT
属性值自动增加意味着
在插入数据操作时候,可以用添加该属性值,它会自动加到该上面(每次加一条,该属性数据相应的加并赋值给这个插入的数据)
2.4.1 查看表基本结构语句DESCRIBE
该语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。
DESCRIBE <表名>/DESC <表名>
2.4.2 查看表详细结构语句SHOW CREATE TABLE
语句可以用来显示数据表的创建语句。
SHOW CREATE TABLE <表名\G>
这里最好加\G,时显示结果更加直观,易于查看
不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码
2.5.1 修改表名
MySQL是通过ALTER TABLE语句来实现表名的修改的。
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
2.5.2 修改字段的数据类型
修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
2.5.3 修改字段名
MySQL中修改表字段名的语法规则如下:
ALTER TABLE <表名>
CHANGE <旧字段名> <新字段名> <新数据类型>;
2.5.4 添加字段
在已经存在的表添加新的字段。
ALTER TABLE <表名>
ADD <新字段名> <数据类型>
[约束条件] [FIRST | AFTER 已存在字段名];
FIRST为可选参数,作用是将新添加的字段设置为表的第一个字段
AFTER可选参数,其作用是将添加的字段添加到指定的已存在的字段之后
2.5.5 删除字段
删除字段是将数据表中的某个字段从表中移除。
ALTER TABLE <表名> DROP <字段名>;
2.5.6 修改字段的排列位置
ALTER TABLE来改变表中字段的相对位置。
ALTER TABLE <表名>
MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
alter table biaoming modify ziduan1 shujuleixing first # 把字段1添加为表的第一个字段
2.5.7 更改表的存储引擎
在MySQL中,存储引擎是指MySQL数据库中表的存储类型。可以根据自己的需要,选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
可以使用show engines;语句查看系统支持的存储引擎
2.5.8 删除表的外键约束
对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系。
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
2.6.1 删除没有被关联的表
MySQL中,使用DROP TABLE可以一次删除一个或多个没有被其它表关联的数据表。
DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
2.6.2 删除被其它表关联的主表
在数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败,原因是直接删除,将破坏表的参照完整性。如果必须要删除,可以先删除与之关联的子表,再删除父表。但是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表。
2.7 MySQL 8.0的新特性1——默认字符集改为utf8mb4
在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码将改为utf8mb4,从而避免了上述的乱码的问题。
2.8 MySQL 8.0的新特性2——自增变量的持久化
在MySQL 8.0之前,自增主键AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重启后,会重置AUTO_INCREMENT=max(primary key)+1,这种现象在某些情况下会导致业务主键冲突或者其他难以发现的问题。
2.9 综合案例——数据表的基本操作
吐槽下,在命令行写sql语句很不方便啊,
报错了:也找不到;估计是中英文逗号问题吧
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tableeemployess(
employee int(11) not null primary key auto_increment,
ln varch' at line 1
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。