mysql博客园day_mysql day03

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值