10:50分
3、多表查询
1、两种方式
1、不加where条件(笛卡尔积)
select t1.name,t2.name from t1,t2;
2、加where条件
select 字段名列表 from 表1,表2 where 条件;
3、示例
1、查询省、市详细信息
河北省 石家庄市
河北省 廊坊市
湖北省 武汉市
select sheng.s_name,city.c_name from sheng,city where sheng.s_id=city.cfather_id;
2、查询省、市、县详细信息
select sheng.s_name,city.c_name,xian.x_name from sheng,city,xian
where
sheng.s_id=city.cfather_id and
city.c_id=xian.xfather_id;
4、连接查询
1、内连接(inner join)
1、语法格式
select ... from 表1 inner join 表2 on 条件
inner join 表3 on 条件;
2、示例
1、查找省、市详细信息
select sheng.s_name,city.c_name from sheng
inner join city
on sheng.s_id=city.cfather_id;
2、查找省、市、县详细信息
select sheng.s_name,city.c_name,xian.x_name from
sheng inner join city
on sheng.s_id=city.cfather_id
inner join xian
on city.c_id=xian.XFATHER_ID;
2、外连接
1、左连接(left join)
1、以左表为主显示查询结果
2、右连接(right join)
1、以右表为主显示查询结果
select sheng.s_name,city.c_name,xian.x_name from
sheng left join city
on sheng.s_id=city.cfather_id
right join xian
on city.c_id=xian.xfather_id;
5、约束
1、非空约束(not null)
1、不允许该字段的值为NULL
## name varchar(20) not null
2、默认约束(default)
1、插入记录时,不给该字段赋值,则使用默认值
## sex enum("M","F","S") not null default "S";
6、索引
1、定义
对数据库表的一列或者多列的值进行排序的一种结构(BTree方式)
2、优点
加快数据的检索速度
3、缺点
1、占用物理存储空间
2、当对表中数据更新时,索引需要动态维护,占用系统资源,降低数据维护速度
4、索引示例
1、开启运行时间检测
set profiling=1;
2、执行查询语句(没有索引)
select name from t1 where name="lucy88888";
3、在name字段创建索引
create index name on t1(name);
4、再执行查询语句(有索引)
select name from t1 where name="lucy99999";
5、对比执行时间
show profiles;
7、索引分类
1、普通索引(index) && 唯一索引(unique)
1、使用规则
1、可设置多个字段
2、约束
普通索引:无约束 key标志 :MUL
唯一索引:字段值不允许重复,可为NULL UNI
3、把经常用来查询的字段设置为索引字段
2、创建表创建
create table 表名(
... ...
index(name),
index(age),
unique(phnumber),
unique(cardnumber)
);
3、已有表创建
create [unique] index 索引名 on 表名(字段名);
4、查看索引
1、desc 表名; --> key标志
2、show index from 表名\G;
5、删除索引
drop index 索引名 on 表名;
2、主键(primary key) && 自增长(auto_increment)
1、使用规则
1、只能有1个字段
2、约束 :字段值不允许重复,且不能为 NULL
3、KEY标志 :PRI
4、通常设置编号id为主键,能唯一锁定1条记录
2、创建表时创建
create table 表名(
id int primary key auto_increment,
...
alter table 表名 auto_increment =1000;
);
3、已有表创建
alter table 表名 add primary key(id);
4、删除
1、先删除自增长
alter table 表名 modify id int;
2、删除主键
alter table 表名 drop primary key;
3、外键(foreign key)
1、定义
让当前表字段的值在另一个表的范围内选择
2、语法
foreign key(参考字段名)
references 主表(被参考字段名)
on delete 级联动作
on update 级联动作
3、使用规则
1、主表、从表字段数据类型要一致
2、主表被参考字段 :主键
4、示例
1、缴费信息表(财务)
id 姓名 班级 缴费金额
1 唐伯虎 AID08 300
2 点秋香 AID08 200
create table jftab(
id int primary key,
name varchar(20) not null,
class char(5) default "AID",
money smallint
)charset=utf8;