视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql高效编程阅读摘要--基础篇_MySQL
2020-11-09 18:46:32 责编:小采
文档


bitsCN.com

mysql高效编程阅读摘要--基础篇

一,多个表的连接

1,内连接--表间的主键与外键进行相连,只取出键值一致的数据。

select user.name,order_basic.oid from order_basic inner join user on order_basic.uid = user.uid;

添加表的别名:select u.name,o.oid form order_basic as o inner join user as u on o.uid = u.uid;

//当域名太多时,以及外表的名称本身比较长时可以可以使用别名。

2,外连接--使用外连接可以取出只在一方表中存在的数据。分为左外连接和右外连接。

select u.name,o.oid from user as u left outer join order_basic as o on u.uid = o.uid;

//没有任何订单信息的用户也会被检索出来。--左外连接

select u.name, o.oid from user as u right outer join order_basic as o on u.uid p o.uid;

//没用用户的订单信息也会被取出来--右外连接

连接向哪边,哪边的信息更全!!内连接时抽取两表间键值一致的记录,而外连接时以其中一个表的全部记录为基准进行检索!!

3,多个表之间的连接

select ob.oid,ob.odate,p.pname,p.price,od.quantity,u.name from

(

(order_basic as ob inner join order_detail as od on ob.oid = od.oid)

inner join product as p on od.pid=p.pid

)inner join user as u on ob.uid = u.uid;

二,在其他查询的基础上进行数据检索

1,基本子查询

select * from product where price > (select avg(price) from product);

2,多个返回值的子查询

select name,address from user where uid not in (select uid from order_basic where odate='2010-07-24');

//返回在这一天没有下单的用户数据

3,子查询与exists运算符

select name,address from user where exists (select * from order_basic where user.uid = order_basic.uid)

//相关子查询户对基础表的每一条记录进行子查询的动作,如果基础表的数据量太大时会给数据库服务器带来很大的负荷,使用时要特别小心

三,表的维护和改造

1,alter table 命令

alter table ...modify 修改列的定义

alter table ...add 添加列

alter table ...change 修改列的名称和定义

alter table ...drop 删除列

alter table visitor modify name varchar(20)---修改列的类型,但通常情况下如果已经存在列数据是不宜修改类型的

alter table visitor add age int;添加了一个新的age列

alter table visitor add age int after name 在任意位置添加列

alter table visitor add age int first 在表开头处加新列

alter table visitor modify age int after name 改变列的位置

alter table visitor change birth birthday DATE 修改列名称和类型

alter table visitor drop age 删除列

2,复制表和删除表

create table customH select * from custom;这样的复制将表结构和数据同时复制过来了

create table customG like custom 只复制表的列构造

insert into customG select * from custom; 将数据复制到新建的表中【可以添加where和limit来获取数据】

drop table customG / drop table if exists customG

bitsCN.com

下载本文
显示全文
专题