在MySQL数据库中,表是一种重要的数据库对象,是组成数据库的基本元素,有若干个字段组成,主要用来实现存储数据记录,表的操作包含创建表、查看表、删除表、和修改表,这些操作是数据库对象的表管理中最基本,最重要的操作。
1.表的基本概念
表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在于电子表格中相似,都是按行按列的格式组织的。其中每一行代表一条唯一的记录,每一列代表记录中的一个字段。
表中的数据库对象包含列、索引和触发器
列(Columns):也称属性列,在具体创建表时,必须指定列的名字和数据类型。
索引(Indexes):是指根据指定的数据库表列建立起来的顺序提供了快速访问数据库的途径且可监督表的数据,使其索引所指向的列中的数据不重复。
触发器(Tiggers):google翻译居然是“跳跳虎”的意思,醉了。触发器是指用户定义的事物命令集合,当对一个表中的数据进行插入、更新或删除时这组命令就会自动执行,可以用来确保数据的完整性和安全性。
2.创建表
创建表的语法形式
上述语句中table_name参数表示所要创建的表名字,表名紧跟在关键字 CREATE TABLE 后面。表的具体内容定义在与圆括号之中,各列之间用逗号分隔。其中“属性名”参数表示表字段的名称,“数据类型”参数指定字段的数据类型,例如,如果列中存储的为数字,则相应的数据类型为数值类型。再具体穿件数据表的时候,表名不能与以存在的表对象重名,其命名规范与数据库命名(标示符)规则一致。
- 建议表名标识符为t_xxx或tab_xxx
- 属性之间用“,”符号隔开,最后一个属性后面却不需要“,”符号
- 在创建数据表的时候,如果没有选择数据库,创建表的时候回出现“No database selected”错误。
- 在创建数据表的时候,如果数据库中已存在该表,则会出现“Table ‘t_xxx’ already exists”错误
- 一般也可以通过 SQLyog或者Navicat等客户端软件来用过可视化操作界面来创建表。
3.查看表结构
创建完表后,如果需要查看表的定义,可以通过执行SQL语句 DESCRIBE 来实现,其语法如下
上述语句中 table_name参数表示所要查看表名。
显示内容如下
创建完表后,如果要查看表结构的详细定义,可以通过SQL语句 SHOW CREATE TABLE 来实现,其语法如下
上述语句中 table_name参数表示所要查看表名。
显示内容如下
4.删除表
在MySQL数据库管理系统中,删除表通过SQL语句 DROP TABLE 来实现,其语法如下
上述语句中 table_name参数表示所要查看表名,所要删除的表必须是数据库中已存在的数据表。
执行结果如下
为了检验数据库中是否存在数据库。可以执行SQL语句 DESCRIBE t_xxx ,如果表不存在,则会报错信息“ Table ’ t_xxx ’ doesn’t exist ”
5.修改表
- 5.1修改表名
在数据库中,可以通过表名来区分不同的表,应为表名在一个数据库对象中是唯一的,不能重复。在MYSQL数据库管理系统中修改表名可以通过SQL语句 ALTER TABLE 来实现,其语法如下
上述语句中,old_table_name 参数表示所要修改的表的名字, new_table_name参数表示修改后的新名字。所要操作的表对象必须在数据库中存在。
- 5.2增加字段
在MySQL数据库管理系统中增加字段通过SQL语句 ALTER TABLE 来实现,其语法形式如下
上述语句中,参数 table_name 表示所要修改表的的名字,“属性名” 参数为所要增加字段的名称,“属性类型”为所要增加字段能存储数据的数据类型。如果该语句执行成功,字段将增加到所有字段的最后一个位置。
通过SQL语句 “ALTER TABLE t_xxx ADD 属性名 属性类型 FIRST” 让新增加的字段排在所有字段的第一位;
当然也可以在表的指定字段之后增加字段,通过SQL语句“ALTER TABLE t_xxx ADD 属性名1 属性类型 AFTER 属性名2” 让新增加的字段 属性名1 排在 属性名2之后,属性名2必须是在表中已存在的字段。
- 5.3删除字段
既然可以修改表时进行字段的增加操作,那么也可以在修改表时进行字段的删除。所谓删除字段是指删除已经存在在表中的某个字段。通过SQL语句 ALTER TABLE 来实现,其语法形式如下
上述语句中 table_name 参数表示所要修改的表的名字,“属性名”参数表示索要删除的字名,
- 5.4修改字段
根据创建表的语句可以发现,字段是由字段名和数据类型来进行定义的,如果要实现修改字段,除了可以修改字段名外,还可以实现修改字段所能存储数据的数据类型。由于一个表中会拥有许多字段,因此还可以实现修改字段的顺序。
5.4.1.修改字段的数据类型
上述语句中 table_name 参数表示所要修改表的名字,“属性名”参数为所要修改的字段名,“数据类型”为修改后的数据类型
5.4.2.修改字段的名字
上述语句中 table_name 参数表示所要修改表的名字,“旧属性名”参数为所要修改的字段名,“新属性名”参数表示所要修改成的字段名。
5.4.3.同时修改字段的名称和数据类型
上述语句中 table_name 参数表示所要修改表的名字,“旧属性名”参数为所要修改的字段名,“新属性名”和“新数据类型”表示要修改成的字段名和所存储数据的数据类型
5.4.4修改字段的顺序
上述语句中 table_name 参数表示所要修改表的名字,“属性名1”参数表示所要调整的顺序的字段名,“FIRST”参数表示将字段调整到表的第一个位置,“AFTER 属性名2”参数表示将字段调整到属性名2字段的位置之后。
6.操作表的约束
对于已近创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查。在具体使用MySQL软件时,如果想针对表中的数据做一些完整性的检查操作,可以通过表的约束来完成。
所谓完整性是指数据的准确性和一致性,而完整性检查就是检查数据的准确性和一致性。MySQL数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保证数据库表中数据的准确性和一致性,这种机制就是约束。
根据约束数据列限制,约束可以分为:,
单列约束,即每个约束只约束一列数据;
多列约束:即每个约束可以约束多列数据
6.1 设置非空约束(NOT NULL,NK)
但数据表中的某个字段上的内容不希望设置为NULL时,准则可以使用NK约束进行设置。即NK约束在创建数据库表时为某些字段加上“NOT NULL”约束条件,保证所有记录中该字段都有值。如果用户插入的记录中,该字段为控制,则数据库管理系统会报错!
在上述语句中,属性名参数表示所要设置非空约束的字段名字。
6.2设置字段的默认值(DEFAULT)
当为数据库表中插入一条新纪录时,如果没有为某个字段赋值,那么数据库系统会自动为这个字段插入默认值,为了达到这种效果,可以通过SQL语句关键字“DEFAULT”来设置
在上述语句中,属性名参数表示所要设置默认值的字段名字,“默认值”为该字段的默认值。
6.3设置唯一约束(UNIQUE,UK)
但数据库表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。即UK约束在创建数据库表时为某些字段加上“UNIQUE” 约束条件,保证所有记录中该字段上的值不重复。如果用户插入的记录中,该字段的值与其他记录里该字段的值重复,则数据库管理系统会报错
上述语句中,属性名参数表示要设置唯一约束的字段名字。
6.4设置主键约束(PRIMARY KEY,PK)
当想用数据库表中的某个字段来唯一标识所有的记录时,则可以使用PK约束进行设置,即OK约束在创建数据库表时为某些字段加上“PRIMARY KEY” 约束条件,则该字段可以唯一地标识所有记录。在数据库表中之所以要设置主键,是为了便于数据库管理系统快速地查找表中的记录。再具体设置主键约束时,必须要满足主键字段的值是唯一、为空的。由于主键可以是单一字段,也可以是多个字段,因此分为单字段主键和多字段主键。
6.4.1单字段主键
上述语句中,属性名参数表示所要设置的PK约束字段名字,主键约束相当于非空约束+唯一约束,如果用户插入的记录中,该字段上有重复,则数据库管理系统则会报错,如果该字段上的值为“NULL”,则数据库管理系统也会报错。
6.4.2多字段主键
在上述语句中,在字段定义完之后统一设置主键,PRIMARY KEY关键字括号中的字段可以有多个,需要用“,”逗号分隔,用来实现设置多字段主键
6.5设置字段值自动增加
AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当为数据库表中插入新的记录时,字段上的值会自动生成唯一的ID。再具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常会设置成PK主键。
在上述语句中,属性名参数表示所要设置自动增长约束的字段名字,默认情况下,该字段的值是从1开始增加的,没增加一条记录,记录中该字段的额值机会在前一条记录的基础上加1。
6.6设置外键约束
设置外键约束的两个表之间会具有父子关系,即字表中的某个字段的取值范围由父表决定。例如,表示一种部门和雇员的关系,即每个部门有多个雇员。首先应该有两张表:部门表和雇员表,然后雇员表中有一个部门编号的字段 deptno ,其依赖于部门表的主键,这样字段deptno就是雇员表的外键,通过该字段部门表和雇员表建立了关系。 在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已近存在的父表的主键,同事外键可以为NULL。
在上述语句中,“外键约束名”用来表示约束名,“属性名1”参数是字表中设置外键约束的字段名,“属性名2”参数是父表中设置主键约束的字段名。
在具体设置外键时,子表中所设外键的字段的数据类型必须与父表中所参考的主键的数据类型一致。