查询
select
o.order_code AS’订单号’,
r.restaurant_name AS ‘饭店名’,
o.eat_time AS’出单时间’,
food_list AS’菜名’,
unit_price AS’单价’,
courier_name AS’快递员’
– COUNT(courier) AS’送单次数’,
– SUM(unit_price)AS’送单总价’
from order_20 o
LEFT JOIN restaurant_20 r ON o.restaurant_code = r.restaurant_code
LEFT JOIN courier_20 c ON o.order_code = c.order_code
LEFT JOIN person_name20 pn2 ON c.courier = pn2.name_code
LEFT JOIN order_food20 of2 ON of2.order_code = o.order_code
LEFT JOIN food_20 f2 ON of2.food_code = f2.food_code
– WHERE courier_name=’李四’
– WHERE unit_price>20 AND unit_price<50
左外连接查询
- 如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
SELECT
s.name,c.name
FROM student AS s
LEFT JOIN
class AS c
ON
s.class_id=c.id
右外连接查询
- 如果右表的某行在左表中没有匹配行,则将为左表返回空值。
SELECT
s.name,c.name
FROM student AS s
RIGHT JOIN
class AS c
ON
s.class_id=c.id
多条记录查询
SELECT
s.name,c.name
FROM student AS s,class AS c
WHERE
s.class_id=c.id
内连接查询
SELECT
s.name,c.name
FROM student AS s
INNER JOIN
class AS c
ON
s.class_id=c.id
全连接查询
- 完整外部连接返回左表和右表中的所有行。左表中没有匹配的值时,则为空值,右表数值正常匹配;右表同理。如果两个表之间有匹配行,则整个结果集行包含基表的数据值。
SELECT
s.name,c.name
FROM student AS s
FULL JOIN
class AS c
ON
s.class_id=c.id
索引
- 目的是为了加快检索速率
- 虽然加快了检索速率,但是会降低表的更新速率。通常我们在设置表的时候设定外键的同时就已经创建了索引,不需要我们再去额外创建索引
- 索引分为单列索引(一个索引包含单个列)和组合索引(一个索引包含多个列)
语法
CREATE INDEX index_name ON table_name(field1,field2…视图
常用但又比较复杂的语句,将这一部分写作一个视图,当我们需要查询的时候,就可以快捷查询视图名就可以得到我们需要的数据
- 语法
CREATE VIEW view_name AS
SELECT 字段名 FROM 视图名