MySQL入门学习--数据表的基本操作
创建数据表
创建数据表,就是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列属性的过程,同时也是实施数据完整性约束的过程。
创建表的语法形式
在创建数据表之前,用use <数据库名>指定操作的数据库,如果没有选择确定的数据库,会显“No database selected”的error信息。
创建数据表的语句是create table;语法规则如下:
CREATE TABLE <表名>
(
字段名1,数据类型 [列级别约束条件] [默认值],
字段名2,数据类型 [列级别约束条件] [默认值],
…
[表级别约束条件]
);
创建表时,必须指定
表名,不区分大小写,不能使用sql的关键字;
数据表中的每一列(字段)的名称和数据类型,多个列用,隔开;
示例:
使用主键约束
主键(主码),是表中一列或多列的集合。主键约束要求主键列的数据唯一,且不为空。主键和记录之间是一一对应的关系。
单字段主键
单字段主键由一个字段组成。
在定义列时同时指定主键
create table tb_emp3
(
id int(11) PRIMARY KEY ,
name varchar(25),
deptId int (11),
salary float
);
在定义完所有列之后指定主键
create table tb_emp3
(
id int(11) ,
name varchar(25),
deptId int (11),
salary float,
PRIMARY KEY(id)
);
多个字段联合主键
create table tb_emp4
(
name varchar(25),
deptId int (11),
salary float,
PRIMARY KEY (name,deptId)
);
使用外键约束
外键用来在两个表的数据之间建立链接。他可以是一列或多列。一个表可以有一个或多个外键。
主表:对于两个具有关联关系的表而言,相关联字段主键所在的表
从表:外键所在的表
创建外键规则:
CONSTRAINT <外键约束名> FOREIGN KEY (外键列) REFERENCES <主表名>(主键列)
创建一个部门表tb_dept1:
id是部门编号,name是部门名称,location是部门位置
再定义一个数据表tb_emp5,让他的键作为外键关联到tb_dept1的主键id
以上语句执行后,在表tb_emp5上添加了名为fk_emp_dept1的外键约束,外键名称为deptId,它依赖于tb_dept1的主键id。
使用非空约束
非空约束指字段的值不能为空。对于使用非空约束的字段 ,用户在添加数据时没有指定值,数据库系统会报错。
字段名 数据类型 not null
使用唯一性约束
unique constraint
在定义完一列之后指定约束-----〉 字段名 数据类型 UNIQUE
在定义完所有列之后指定约束—〉CONSTRAINT STH UNIQUE(字段名)
UNIQUE与PRIMARY KEY的区别:
一个表中可以有多个字段声明为UNIQUE,但只有一个主键,且声明主键的列不能有空值,而unique可以为空。
使用默认约束
default constraint默认约束,指定某列的默认值。
语法规则:
字段名 数据类型 DEFAULT 默认值
查看数据表结构
查看表的基本结构语句
describe 表名
desc 表名
查看表的详细结构语句
show create table\G
可以显示创建表示的create table语句
修改数据表
修改表名
alter table <旧表名> rename [to] <新表名>
修改字段的数据类型
alter table <表名> modify <字段名> <数据类型>
修改字段名
alter table <表名> change <旧字段> <新字段> <新数据类型>
添加字段
alter table <表名> add <新字段> <数据类型>
删除字段
alter table <表名> drop <字段名>
修改字段的排列位置
alter table <表名> modify <字段1> <数据类型> first | after <字段2>
更改表的存储引擎
alter table <表名> engine=<更改后的存储引擎名>
修改完后使用show create table 数据表名 \G查看引擎是否修改成功
删除表的外键约束
alter table <表名> drop foreign key <外键约束名>
删除数据表
删除没有被关联的表
drop table [if exists] 表1,表2,…表n
删除被其他表关联的主表
先删除外键约束
alter table <表名> drop foreign key <外键约束>
再删除主表
drop table 数据表名