数据表的基本操作
数据表的基本操作
在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据储存的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来储存的,每一行代表一条唯一的记录,每一列代表记录中的一个域。
1.创建数据表
创建数据表的过程是规定数据列的属性过程,同时也是实施数据完整性约束的过程。
1.1)创建表的语法形式
在创建数据表之前首先应该指定在那个数据库中。使用“USE <数据库名>”语句。如果没有数据库会抛出“no database selected”异常
语法:
CREATE TABLE <表名>
(
字段名1 数据类型[列级别约束条件] [默认值],
字段名2 数据类型[列级别约束条件] [默认值]
);
注意:1.创建表的名称不区分大小写,不能使用SQL语言中的关键字
- 数据表中每一列的名称和数据类型,如果创建多个列,用逗号隔开。
1.2)使用主键约束
主键又称为主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键可以唯一的确定表中的一条记录,可以通过外键来确定不同数据表之间的关系,并且课可以加快数据库查询的速度。主键和记录之间的关系如同身份和人之间的关系,他们是一一确定的。
- 单字段主键
单字段主键是由一个字段组成,他有两种方式来声明
【方式一】在声明列的同时就声明
CREATE TABLE tb
(
Id INT(11) PRIMARY KEY,
name VARCHAR(25),
……
);
【方式二】在声明创建表之后
CREATE TABLE tb
(
Id INT(11),
name VARCHAR(25),
……
PRIMARY KEY(id)
);
2.多字段联合主键
主键可以由多个字段来表是,例如在表中,没有主键id,为了确定某一条数据,可以用id、name联合起来作为一个主键。
CREATE TABLE tb
(
Id INT(11),
name VARCHAR(25),
……
PRIMARY KEY(id,name)
);
1.3)使用外键约束
外键用来在两个表的数据之间建立链接,他可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的参考完整性,一个表的外键可以为空值,若为空值,则每一个外键值必须等于另一个表中主键的某个值。
外键:首先是一个字段,他可以不是本表的主键,但一定是对应另一个表的主键。定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保护数据的一致性和完整性。
主表:对于两个相关联的表,相关字段主键所在的表为主表
子表:对于两个想关联的表,相关字段外键所在的表为子表。
语法:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2……]
PEFERENCES <主表名> 主键列1 [,主键列2……]
外键名为定义的外键约束的名称,一个表中不能有相同名称的外键。
例如:
创建表1:
CREATE TABLE tb_1
(
Id INT(11) PRIMARY KEY,
name VARCHAR(25),
……
);
创建表2:
CREATE TABLE tb_2
(
Id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
……
CONSTRAINT fk FOREIGN KEY(deptId) REFERENCES tb_1(id)
);
以上表示表2中添加了名称为fk的外键约束,字段名称为deptId,依赖于表1中的id。
1.4)使用非空约束
非空约束指的是字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库就会报错
语法:字段名 数据类型 NOT NULL
CREATE TABLE tb_1
(
Id INT(11) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
……
);
1.5)使用唯一性约束
设置了唯一性约束的一列或者多列,该列的值都是唯一的,不会出现相同的值,可以为空但只能出现一次。
语法:字段名 数据类型 UNIQUE
在定义完列后就直接指定;也可以 CONSTRAINT STH UNIQUE(name,其他)
一个表中可以由多个表声明UNIQUE但是只能有一个PRIMARY KEY
1.6)使用默认约束
指定某列为默认值,例如男生较多,性别默认为男,当插入一条新的语句为这个字段赋值,那么系统就会赋值新的,否则还是男。
语法:字段名 数据类型 DEFAULT 默认值。
1.7)设置表的属性自增
可以通过AUTO_INCREMENT关键字来实现自增,表中只能一个字段使用,默认从1开始,可以使用在任何的整数类型中(TINYINT、SMALLIN、INT、BIGINT等)
- 查看数据表结构
2.1)查看表的基本结构
DESCRIBE/DESC可以用来查看表的字段信息、数据类型、是否为主键、是否为外键、是否可以为空、是否默认值等。
语法:DESCRIBE 表名
或者 可以缩写为 DESC 表名。
2.2)查询表详细结构语句
SHOW CREATE TABLE 表名\G;
3.修改数据表
3.1)修改表名
语法:ALTER TABLE 旧表名 RENAME 新表名
3.2)修改字段的数据类型
语法:ALTER TABLE 表名 MODIFY 字段名 修改的数据类型
如:ALTER TABLE tb_1 MODIFY name INT(11);
3.3)修改字段名
语法:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型
数据类型可以修改也可以不修改
3.4)添加字段
随着业务的需求的变化,可能会在已经存在的表中,添加一个字段。
1.添加无完整性约束条件的字段
语法:ALTER TABLE 表名 ADD 新字段 数据类型
例如:ALTER TABLE tb_1 ADD managerId INT(10);
2.添加有完整性约束的字段
语法:ALTER TABLE 表名 ADD 新字段 数据类型 约束
例如:ALTER TABLE tb_1 ADD managerId INT(10) not null;
3.在表中的第一列添加字段 FIRST
语法:ALTER TABLE tb_1 ADD managerId INT(10) FIRST
4.在表中的指定列之后添加一个字段
语法:ALTER TABLE tb_1 ADD managerId INT(10) AFTER name
在name之后的一列添加
3.5)删除字段
语法:ALTER TABLE 表名 DROP 字段名
3.6)修改表字段的排列位置
1.修改字段为表的第一个字段
ALTER TABLE tb_1 MORIFY name INT(11) FIRST;
将name字段修改为表中第一字段
2.修改字段为表的指定列之后
ALTER TABLE tb_1 MORIFY name INT(11) AFTER id;
将name放在id之后
3.7)更改表的存储引擎
语法:ALTER TABLE 表名 ENGINE=修改后的引擎名
3.8)删除外键约束
语法:ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名
4.删除数据表
1.删除没有关联的表
语法:DROP TABLE IF EXISTS 表1,表2…..
IF EXISTS判断表是否为空
2.删除有关联的表
如果直接删除,结果会显示失败。可以选择先删除子表,在删除父表。如果只删除父表,可以取消外键约束,在删除。
-————20180919周三下午 图书馆
还没有评论,来说两句吧...