2.1创建数据表
创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。
2.1.1创建表的语法形式
在创建数据表前,应该使用语句“USE<数据库名>”指定操作是在哪个数据库中进行,否则会抛出“No database selected"的错误。
CREATE TABLE<表名>
要创建的表的名字,不区分大小写,不能使用SQL中的关键字。
可见test数据库中已经有了数据表tb_emp1
2.1.2使用主键约束
主键,又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能唯一地标识表中地一条记录,可以结合外键来定义不同数据表之间的关系,并加快数据库查询的速度。
1.单字段主键
由一个字段组成
(1)在定义列的同时指定主键
字段名 数据类型 PRIMARY KEY [默认值]
(2)在定义完所有列后指定主键
[CONSTRAINT<约束名>] PRIMARY KEY(字段名)
2.多字段联合主键
PRIMARY KEY (字段1,字段2,,,字段n)
2.1.3使用外键约束
外键:它可以不是本表的主键,但对应另一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。
参照完整性规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中的每个元组在F上的值必须:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
[CONSTRAINT 外键名 ]FOREIGN KEY 字段名1[字段名2,....]
REFERENCES<主表名>主键列1[主键列2...]
在表5中添加了名称为fk_emp_dept1的外键约束,依赖于表1中的主键id。
2.1.4使用非空约束
字段名 数据类型 NOT NULL
用户在添加数据时没有指定值,数据库系统会报错
2.1.5使用唯一性约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值。
(1)在定义完列后直接指定唯一约束
字段名 数据类型 UNIQUE
(2)在定义完所有列之后指定唯一约束
[CONSTRAINT<约束名>]UNIQUE(<字段名>)
UNIQUE和PRIMARY KEY的区别:一个表中可有多个唯一性约束,而主键只有一个;唯一性约束的列可取空,主键不允许。
2.1.6使用默认约束
指定某列的默认值
字段名 数据类型 DEFAULT 默认值
2.1.7设置表的属性值自动增加
希望在每次插入新记录时,系统自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。在MySQL中AUTO_INCREMENT默认初始值为1,每新增一条数据,字段值自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。
字段名 数据类型 AUTO_INCREMENT
2.2查看数据表结构
2.2.1查看表基本结构语句DESCRIBE
DESCRIBE/DESC语句可查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。
DESCRIBE/DESC 表名
Key:表示该列是否已编制索引。
2.2.2查看表详细结构语句SHOW CREATE TABLE
SHOW CREATE TABLE<表名\G>;
使用SHOW CREATE TABLE语句,不仅可以查看表创建时候的详细语句,还可以查看存储引擎和字符编码。
2.3修改数据表
修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。
2.3.1修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名> ;
2.3.2修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
2.3.3修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样即可,但数据类型不能为空。
2.3.4添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型>
[约束条件] [FIRST|AFTER已存在字段名];
FIRST 或 ALTER用于指定新增字段在表中的位置,如果SQL语句中没有则两个参数,则默认将新添加的字段设置为数据表的最后列。
2.3.5删除字段
ALTER TABLE <表名> DROP <字段名>;
2.3.6修改字段的排列位置
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
2.3.7更改表的存储引擎
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
2.3.8删除表的外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
2.4删除数据表
2.4.1删除没有被关联的表
DROP TABLE [IF EXISTS]表1,表2,。。。表n;
IF EXIST 用于在删除前判断删除的表是否存在,加上该参数再删除表的时候,如果表不存在,SQL语句可以顺利执行,但是会发出警告。
2.4.2删除被其他表关联的主表
数据表之间存在外键关联的情况下,如果直接删除父表,会破坏表的参照完整性,结果会显示失败。需先删除与它关联的主表或将关联的表的外键约束条件取消