一.数据库高级操作
1.1.克隆表
(1)克隆表,将数据表的数据记录生成到新的表中
方法一:
create table test01 like KY08; #通过LIKE方法,复制KY08表结构生成test01 表
insert into test01 select * from KY08;
#此方法能保证新表的表结构、表数据跟旧表都是一致的
方法二:
CREATE TABLE test02 (SELECT * from KY08);
#此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致
show create table test02\G #获取数据表的表结构、索引等信息
SELECT * from test02;
1.2.清空表
(2)清空表,删除表内的所有数据
方法一:
delete from test01;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
方法二:
truncate table test01;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。
1.3.创建临时表
(3)temporary关键字,创建临时表
#临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。
CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
例:
create temporary table test03 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50));
insert into test03 values(1,'zhangsan',123456,'running');
select * from test03;
show tables;
quit
select * from test03;
二.MySQL的六大约束
参数 | 含义 |
primary key | 表示此字段的主键约束,此字段数据不能重复,不能为null。一个表中只能由要给主键 |
unique key | 表示此字段唯一键约束,此字段数据不可以重复。一张表中只能有一个主键,但是一张表中可以有多个唯一键 |
not nul | 表示此字段为非空约束,此字段的值不允许为NULL |
default | 默认值约束 字段的值如果没有设置则使用默认值自动填充 |
auto_increment | 表示此字段为自增长字段(自增约束),即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
foregin key | 表示此字段为外键约束,保证相关的表的数据的完整性和一致性 |
use mybl;
create table if not exists info ( #表示检测要创建的表是否已存在,如果不存在就继续创建。
id int(4) zerofill primary key auto_increment, #指定主键的第二种方式。其中int(4) zerofill表示若数值不满4位数,则前面用"0"填充,例如0001。
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));
注意:
int(N) 需要和zerofill primary配合使用,否则N的值没有意义。
三.外键约束
3.1.外键概述
创建外键约束,保证数据的完整性和一致性。
外键的定义:
如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。
主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
**注意:**
与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
3.2.创建主从表
#创建主表 profession
create table profession (pid int,pname char(6));
#创建从表 student
create table student (sid int,sname varchar(10),age int,proid int);
#为主表profession添加一个主键约束,主键名建议以“PK_”开头,constraint PK_pid指定主键名称,可以省略不写,系统会自动分配一个名称
alter table profession add constraint PK_pid primary key (pid);
#为从表student表添加外键,并将student表的proid字段和 profession表的pid字段建立外键关联。外键名建议以“FK_”开头,constraint FK_pro指定外键约束,可以省略不写,系统会自动分配一个名称
alter table student add constraint FK_pro foreign key (proid) references profession (pid);
desc profession; #查看主键表的表结构
desc student; #查看外键表的表结构
show create table student; #可以查看表结构的详细信息
3.3.主从表中插入数据
#插入新的数据记录时,要先主表再从表
insert into student values (1,'王二',12,3);
#向主键表profession中添加数据内容
insert into profession values (1,'云计算');
insert into profession values (2,'大数据');
insert into profession values (3,'JAVA');
insert into profession values (4,'UI设计');
#向外键表student中添加数据内容
desc profession;
insert into student values (1,'王二',12,3);
insert into student values (2,'毛五',16,2);
insert into student values (3,'肖三',40,4);
insert into student values (3,'李六',30,1);
3.4.主从表中删除数据
#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录
select * from student;
select * from student;
delete from profession where pid=4;
update student set proid=2 where sname='肖三';
delete from profession where pid=4;
select * from profession;
3.5.删除外键约束
#查看和删除外键约束
show create table student;
alter table student drop foreign key FK_pro; #先删除外键约束
alter table student drop key FK_pro;
desc student;
show create table student;