在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。
一、创建数据表:
1.语法规则:
create table <表名>(
字段名1,数据类型[列级别约束条件][默认值],
字段名2,数据类型[列级别约束条件][默认值],
...,
[表级别约束条件]
);
案例:
创建tb_emp1表,SQL语句如下:
create table tb_emp1(
id int(11),
name varchar(25),
deptId int(11),
salary float
);
使用show tables语句可以查看数据表是否创建成功。
2.主键约束
a.单字段主键:
语法规则一:
字段名 数据类型 primary key[默认值];
案例:
定义数据表tb_emp2,其中主键为id,SQL语句如下:
create table tb_emp2(
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float
);
语法规则二:
[constraint <约束名>] primary key [字段名];
案例:
定义数据表tb_emp3,其中主键为id,SQL语句如下:
create table tb_emp3(
id int(11),
name varchar(25),
deptId int(11),
salary float,
primary key(id)
);
b.多字段联合主键
语法规则:
primary key[字段1,字段2,...,字段n];
案例:
定义数据表tb_emp4,假设没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来作为主键,SQL语句如下:
create table tb_emp4(
name varchar(25),
deptId int(11),
salary float,
primary key(name,deptId)
);
3.外键约束
语法规则:
[constraint<外键>] foreign key 字段1 [,字段2,...] references <主表名> 主键列1 [,主键列2,...];
案例:
部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptId与这个id关联。
创建部门表tb_dept1,SQL语句如下:
create table tb_dept1(
id int(11) primary key,
name varchar(20) not null,
location varchar(50)
);
定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句如下:
create table tb_emp5(
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
);
4.非空约束
语法规则:
字段名 数据类型 not null;
5.唯一性约束
语法规则:
字段名 数据类型 unique;
6.默认约束
语法规则:
字段名 数据类型 default 默认值;
7.属性值自动增加
语法规则:
字段名 数据类型 auto_increment;
二、查看数据表结构
1.查看表基本结构语句
语法规则:
descirbe 表名;
desc 表名;
2.查看表详细结构语句
语法规则:
show create table <表名\G>;
三、修改数据表
1.修改表名:
语法规则:
alter table <旧表名> rename [to] <新表名>;
案例:将数据表tb_dept3改名成tb_department3,SQL语句如下:
alter table tb_dept3 rename tb_department3;
2.修改字段的数据类型
语法规则:
alter table <表名> modify <字段名> <数据类型>;
案例:将数据表tb_dept1中的name字段的数据类型有varchar(22)修改成varchar(30),SQL语句如下:
alter table tb_dept1 modify name varchar(30);
3.修改字段名
语法规则:
alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
案例一:将tb_dept1中的location字段名称改成loc,数据类型保持不变,SQL语句如下:
alter table tb_dept1 change location loc varchar(30);
案例二:将tb_dept1中的loc字段名称改为location,同时将数据类型变为varchar(60),SQL语句如下:
alter table tb_dept1 change loc location varchar(60);
4.添加字段
语法规则:
alter table <表名> add <新字段名> <数据类型>;
场景一:添加无完整性约束条件的字段
案例:在数据表tb_dept1中添加一个没有完整性约束的int类型的字段managerId(部门经理编号),SQL语句如下:
alter table tb_dept1 add managerId int(10);
场景二:添加有完整性约束条件的字段
案例:在数据表tb_dept1中添加一个不能为空的varchar(20)类型的字段column1,SQL语句如下:
alter table tb_dept1 add column1 varchar(20) not null;
场景三:在表的第一列添加一个字段
案例:在数据表tb_dept1中添加一个int类型的字段column2,SQL语句如下:
alter table tb_dept1 add column2 int(11) first;
场景四:在表的指定列之后添加一个字段
案例:在数据表tb_dept1中name列后添加一个int类型的字段column3,SQL语句如下:
alter table tb_dept1 add column3 int(11) after name;
5.删除字段
语法规则:
alter table <表名> drop <字段名>;
案例:删除数据表tb_dept1中的column2字段
alter table tb_dept1 drop column2;
6.修改字段的排列位置
语法规则:
alter table <表名> modify <字段1> <字段1的数据类型> first|after <字段2>;
场景一:修改字段为表的第一个字段
案例:将数据表tb_dept1中的column1字段修改为表的第一个字段,SQL语句如下:
alter table tb_dept1 modify column1 var(12) first;
场景二:修改字段到表的指定列之后
案例:将数据表tb_dept1中的column1字段插入到location字段后面,SQL语句如下:
alter table tb_dept1 modify column1 varchar(12) after location;
7.更改表的存储引擎
语法规则:
alter table <表名> engine=<更改后的存储引擎>;
案例:将数据表tb_deptment3的存储引擎修改为MyISAM,SQL语句如下:
alter table tb_department3 engine=MyISAM;
8.删除表的外键约束
语法规则:
alter table <表名> drop foreign key <外键约束名>;
案例:删除tb_emp5中的外键约束,SQL语句如下:
alter table tb_emp5 drop foreign key fk_emp_dept1;
四、删除数据库
1.删除没有被关联的表
语法规则:
drop table [if exists]表1,表2,...表n;
案例:删除数据表tb_dept2,SQL语句如下:
drop table if exists tb_dept2;
2.删除被其他表关联的主表
案例:删除数据表tb_dept1
step1:删除外键,SQL语句如下:
alter table tb_emp5 drop foreign key fk_emp_dept1;
step2:删除表
drop table tb_dept1;