0x01 创建数据表
1 创建员工表tb_emp1
首先创建数据库,sql语句:create database test_db;选择创建表的数据库,sql语句:use test_db;
创建tb_emp1表,sql语句为:
create table tb_emp1
(
id int(11),
name varchar(25),
deptid int(11),
salary float
);
语句执行后,便创建了一个名称为tb_emp1的数据表,使用show tables;语句查看数据表是否创建成功,sql语句如下:
show tables;
可以看到,test_db数据库中已经有了数据表tb_tmp1,数据表创建成功。
0x02 主键的创建
1 定义数据表tb_emp 2,其主键为id,sql语句如下:
create table tb_emp2(
id int(11) primary key,
name varchar(25),
deptid int(11),
salary float
);
2 定义数据表tb_emp 3,其主键为id,sql语句如下:
create table tb_emp3
(
id int(11),
name varchar(25),
deptid int(11),
salary float,
primary key(id)
);
上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。
3 定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptid联合起来做为主键,sql语句如下:
create table tb_emp4
(
name varchar(25),
deptid int(11),
salary float,
primary key(name,deptid)
);
0x03 外键约束
1 定义数据表tb_emp5,并在tb_emp5表上创建外键约束。创建一个部门表tb_dept1,sql语句如下:
create table tb_dept1
(
id int(11) primary key,
name varchar(22) not null,
location varchar(50)
);
2 定义数据表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)
);
以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,外键名称为deptid,其依赖于表tb_dept1的主键id。
0x04 非空约束
定义数据表tb_emp6,指定员工的名称不能为空,sql语句如下:
create table tb_emp6(
id int(11) primary key,
name varchar(25) not null,
deptid int(11),
salary float
);
0x05 唯一性约束
1 定义数据表tb_dept2,指定部门的名称唯一,sql语句如下:
create table tb_dept2(
id int(11) primary key,
name varchar(22) unique,
location varchar(50)
);
2 定义数据表tb_dept3,指定部门的名称唯一,sql语句如下:
create table tb_dept3
(
id int(11) primary key,
name varchar(22),
location varchar(50),
constraint sth unique(name)
);
0x06 使用默认约束
1 定义数据表tb_emp7,指定员工的部门编号默认为1111,sql语句如下:create table tb_emp7
(
id int(11) primary key,
name varchar(25) not null,
deptid int(11) default 1111,
salary float
);
0x07 表的属性值自动增加
1 定义数据表tb_emp8,指定员工的编号自动递增,sql语句如下:create table tb_emp8
(
id int(11) primary key auto_increment,
name varchar(25) not null,
deptid int(11),
salary float
);
2 执行如下插入语句:
insert into tb_emp8 (name,salary) values('lucy',1000), ('lura',1200),('kevin',1500);
语句执行完后,tb_emp8表中增加3条记录,在这里并没有输入id的值,但系统已经自动添加该值。
使用select命令查看记录:select * from tb_emp8;
0x08 desc 查看表结构
1 使用describe和desc查看表结构查看tb_dept1表结构,sql语句:describe tb_dept1;
查看tb_emp1表结构,sql语句:desc tb_emp1;
2 show 查看表结构
使用show create table查看表tb_emp1的详细信息,sql语句:show create table tb_emp1;
使用参数’\g’ 来查看表结构: show create table tb_emp1 \g;0x09 重命名表的名称
使用alter table将表tb_dept3改名为tb_deptment3,sql语句:alter table tb_dept3 rename tb_deptment3;0x10 修改字段类型
将数据表tb_dept1中name字段的数据类型由varchar(22)修改成varchar(30)。1 执行修改表名操作之前,使用desc查看tb_dept表结构。
2 输入如下sql语句并执行:alter table tb_dept1 modify name varchar(30);
0x10 修改字段名称
1 将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变,sql语句如下:alter table tb_dept1 change location loc varchar(50);
2 将数据表tb_dept1中的loc字段名称改为location,同时将数据类型变为varchar(60),sql语句如下:
alter table tb_dept1 change loc location varchar(60);
0x11 添加删除修改字段
1 在数据表tb_dept1中添加一个没有完整性约束的int类型的字段managerid(部门经理编号),sql语句如下:alter table tb_dept1 add managerid int(10);
2 在数据表tb_dept1中添加一个不能为空的varchar(12)类型的字段column1,sql语句如下:
alter table tb_dept1 add column1 varchar(12) not null;# 插入在该表中的最后一列
3 在数据表tb_dept1中添加一个int类型的字段column2,sql语句如下:
alter table tb_dept 1 add column2 int(11) first; # 插入在该表中的首列
3 在数据表tb_dept1中name列后添加一个int类型的字段column3,sql语句如下:
alter table tb_dept1 add column3 int(11) after name;# 插入在该表中的字段name 后门
4 删除数据表tb_dept1表中的column2字段。
删除column2字段,sql语句如下:alter table tb_dept1 drop column2;
5 将数据表tb_dept中的column1字段修改为表的第一个字段,sql语句如下:
alter table tb_dept1 modify column1 varchar(12) first;
6 将数据表tb_dept1中的column1字段插入到location字段后面,sql语句如下:
alter table tb_dept1 modify column1 varchar(12) after location;
0x12 修改表的存储引擎
1 将数据表tb_deptment3的存储引擎修改为myisam。先使用show create table查看表tb_deptment3当前的存储引擎,输入如下sql语句并执行:show create table tb_deptment3 \g
接下来修改存储引擎类型,输入如下sql语句并执行:alter table tb_deptment3 engine=myisam;
最后使用show create table,输入如下sql语句并执行:show create table tb_deptment3 \g;
我们可以查看表tb_deptment3的存储引擎,发现表tb_dept的存储引擎变成了“myisam”
0x013 删除外键约束
1 删除数据表tb_emp9中的外键约束首先创建表tb_emp9,创建外键deptid关联tb_dept1表的主键id,sql语句如下:
create table tb_emp9
(
id int(11) primary key,
name varchar(25),
deptid int(11),
salary float,
constraint fk_emp_dept foreign key (deptid) references tb_dept1(id)
);
使用show create table查看表tb_emp9的结构:show create table tb_emp9 \g
删除表tb_emp的外键约束,输入并执行:alter table tb_emp9 drop foreign key fk emp_dept;
使用show create table再次查看表tb_emp9结构:show create table tb_emp9 \g
0x14 删除已存在的表
删除数据表tb_dept2,sql语句如下:drop table if exists tb_dept2;
0x15 删除关联表
1 在数据库中创建两个关联表,首先,创建表tb_dept2,sql语句如下:create table tb_dept2
(
id int(11) primary key,
name varchar(22),
location varchar(50)
);
2 接下来创建表tb_emp,sql语句如下:
create table tb_emp
(
id int(11) primary key,
name varchar(25),
deptid int(11),
salary float,
constraint fk_emp_dept foreign key (deptid) references tb_dept2(id)
);
3 使用show create table命令查看表tb_emp的外键约束,结果如下:show create table tb_emp\g
可以看到,以上执行结果创建了两个关联表tb_dept2和表tb_emp,其中tb_emp表为子表,具有名称为fk_emp_dept的外键约束,tb_dept2为父表,其主键id被子表tb_emp所关联。
3 如前所述,在存在外键约束时,主表不能被直接删除。
4 接下来,解除关联子表tb_emp的外键约束,sql语句:alter table tb_emp drop foreign key fk_emp_dept;
5 将取消表tb_emp和表tb_dept2之间的关联关系,此时,可以输入删除语句,将原来的父表tb_dept2删除,sql语句如下:
drop table tb_dept2;
最后通过show tables;查看数据表列表,如下所示:show tables;
欢迎大家分享更好的思路,热切期待^^_^^ !