MySql学习04----数据库表的基本操作

一. 创建数据表

1. 创建数据表的语法规则如下:

使用CREATE TABLE创建表时,必须指定以下信息:

  • 要创建的表的名称,不区分大小写,不可以使用SQL语言中的关键字;
  • 数据表中的每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。

note: 比如再创建一个User,则会提示错误,因为表名是不区分大小写的。

2. 使用主键约束

主键,又称为主码,是表中的一列或多列的组合。主键约束(Primary Key Consraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条数据,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键分为两种类型:单字段主键和多字段联合主键。

(1)单字段主键

可以使用两种方法来创建这种主键:

法一:在定义类的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY [默认值]

法二:在定义完所有列之后指定主键,语法规则如下:

[CONSTRANT <约束名>] PRIMARY KEY [字段名]

 

(2)多字段联合主键

语法规则:PRIMARY KEY [字段1,字段2,...,字段n] 

note: 不可以在创建列的时候就指定多个primary key。会提示错误:

 3. 使用外键约束

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或者多个外键。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性。定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

创建外键的语法规则如下:

[CONSTRANT <外键名>] FOREIGN KEY 字段名1 [,字段名2,...] REFERENCES <主表名> 主键列1 [,主键列2,...]

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所依赖的表的名称;“主键列”表示主表中定义的主键列,或者列组合。

举例1:如果外键是主键

假设有table1和table2

举例2:如果外键不是主键

举例3:references后面的一定要是主键,否则要报错

说明:因为table1中的age并不是主键;

举例4:有两个外键

Note: 还是上面的table1,table2,table3.因为table2和table3都存在外键,和table1关联。倘若直接删除table1的话,就会报错,提示说“Cannot delete or update a parent row: a foreign key constraint fails”。因此,要想删除table1,就必须撤除和它主键间的关联,即消除table2和table3中的外键(依赖table1部分)。或者直接删除table2和table3后,直接删除table1就可以了。

 4. 使用非空约束

非空约束指的是字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

非空约束的语法规则如下:

字段名 数据类型 not null

5. 使用唯一性约束

唯一性约束要求该列唯一,允许为空,但是只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则如下:

(1)在定义完列之后直接指定唯一约束

字段名 数据类型 unique

(2)在定义完所有列之后指定唯一约束

[CONSTRAINT <约束名>] unique (<字段名>)

6. 使用默认约束

默认约束指定某列的默认值。

语法规则如下:

字段名 数据类型 DEFAUTL 默认值

7. 设置表的属性值自动增加

在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。默认的,在MySql中AUTO_INCREMENT的初始值为1,每新增加一条记录,字段值就自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TNYINT、SMALLINT等)。

语法规则如下:

字段名 数据类型 AUTO_INCREMENT

note:必须保证自增长的列是主键,否则要报错。

二. 查看数据表结构

可以通过DESCRIBE和SHOW CREATE TABLE语句。

1. 查看表基本结构语句DESCRIBE

2. 查看表详细结构语句SHOW CREATE TABLE

加上\G是为了显示结果更加直观。

三. 修改数据表

1. 修改表名

ALTER TABLE <旧表名> RENAME [TO] <新表名>

2. 修改字段的数据类型

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

上面的字段名指的是需要修改的字段,数据类型指的是修改后字段的数据类型。

3. 修改字段名

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

4. 添加字段

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];

方括号是可选参数。“FIRST”表示将新添加的字段设置为表的第一个字段;“AFTER"是将新添加的字段添加到指定的”已存在字段名“的后面。如果这两个参数没有说明,默认是放在数据表的最后列。

5. 删除字段

ALTER TABLE <表名> DROP <字段名>;

6. 修改字段的排列位置

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

比如:

想把b的类型修改了,且放在表的第一行:

7. 修改表的存储引擎

ALTER TABEL <表名> ENGINE <更改后的存储引擎名>

8. 删除表的外键约束

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>

这样,就可以删除user表了。因为person中的外键约束已经取消拉。

四. 删除数据表

1. 删除没有被关联的表

DROP TABLE [IF EXISTS]表1,表2,...表n;

2. 删除被其他表关联的主表

数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,在删除父表。但是,如果想要保留子表,只是需要单独删除父表,只需要将关联的表的外键的约束条件取消,然后就可以删除父表了。正如前面所将的那样。

参考文献

《Mysql5.7从入门到精通》

猜你喜欢

转载自www.cnblogs.com/Hermioner/p/10310517.html