索引:
- 普通索引 index
- 唯一索引 unique
- 主键索引&自增长:
PRI不允许重复且不能为NULL,注意一个表中只能有一个主键字段,通常把编号设为主键字段;
创建表时创建主键:
primary key(字段名)
已有表时创建主键
alter table 表名 add primary key(字段名);
删除主键
alter table 表名 modify 字段名 数据类型;#先删自增长属性
later table 表名 drop primary key #再删除主键
再已有表中添加自增长属性:
alter table 表名 modify 字段名 数据类型 primary key auto_increment;
- 外键索引:
作用:让当前表字段值在另一个表的范围内选择;
创建表时创建:
foreign key (参考字段)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作
已有表添加外建:
alter table 表名 add foreign key (参考表名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作
#在已有表中添加外键回受到表中原有数据的限制
级联动作:
cascade 级联更新当主表删除记录时,从表级联删除 当主表更新参考字段值时,从表级联更新
restrict 检查外键限制,默认
当主表删除记录生,从表若有相关级联记录则不让删除 当主表更新被参考字段值时,从表有相关级联记录则不让主表更新
set null :
当主表删除记录时,从表中相关联记录的参考字段值设置为NULL
当主表更新记录时,从表中相关联记录的参考值设置为NULLno action (同restrict,立即检查外键限制)
当两张表被参考字段和参考字段数据类型要一致
被参考字段必须是key的一种,一般是primary key删除外键:
查看外键名
show create table 表名;
删除外键限制
alter table 表名 drop foreign key 外键名;
数据导入
load data infield "文件名"
into table 表名
fields terminated by "分隔符"
lines terminated by"分隔符"
##文件名要写绝对路径
在数据库中创建的对应的表
查看数据库的搜索路径
show variables like "secure_file_priv";
将文件拷贝到搜索路径中
sudo cp 文件名 搜索路径 #该步骤在终端操作
执行导入命令
load data infile.....
数据导出
select 字段名列表 from 表名
into outfield "文件名"
fields terminated by "分隔符"
lines terminated by "分隔符"
##文件名必须要写绝对路径
导出步骤:
1. 查看数据库的搜索路径
show variables like "%secure%"
- 执行命令:
load data outfile.....
表复制
create table 表名 select 查询语句;
复制表结构:
create table 表名 select *from 表名 where false;
#复制表不会把原来表的键的属性复制过来,只能复制原来表的结构。
嵌套查询
定义:把内层的查询结果作为外层的查询条件
select 查询语句 where 字段名 运算符(select 查询语句);
多表查询
笛卡尔积(是不加where条件)
selecte 字段名列表 from 表名列表;
加where条件的查询:
selecte 字段名列表 from 表名列表 where 条件;
连接查询
内连接:inner join
select 字段名列表 from 表1 inner join 表2 on 条件.......;
#只显示匹配到的行,没匹配到的行则不显示出来
左连接:left join
select 字段名列表 from 表1 left join 表2 on 条件.......;
右连接:right join
select 字段名列表 from 表1 right join 表2 on 条件.......;
补充
select sheng.S_name,city.C_name from sheng
left join city on sheng.S_ID=city.CFather_ID;
#显示省市
select sheng.S_name,city.C_name,xian.X_name
from sheng left join city
on city.CFather_ID=sheng.S_iD
left join Xian on city.C_ID=xian.XFather_ID;
#显示省市区