【key】
PRIMARY KEY主键:只能有一个
UNIQUE唯一约束: 确保每一行的数据是唯一的。比如email unique就不能加两条数据都是一样的email
CHECK:添加条件
----
【数据过滤】
DISTINCT:只查不重复的数据。//SELECT DISTINCT state FROM locations,就只有不重复的state
AND OR可以一起用,加括号就行了
IN:匹配列表中的任何值。//SELECT order_id,customer_id,status,salesman_id FROM orders WHERE salesman_id IN (54,55,56)
BETWEEN AND:指定一个范围
UNION,INTERSECT,MINUS
----
【连接表】
LEFT JOIN:左表的数据一定有
CROSS JOIN笛卡尔连接:硬乘,有两个有m和n行的表,这些表的笛卡尔乘积就有m × n行。
自连接:自己连接自己。需要指出别名。总有麻烦的employee-manager问题:
SELECT
(e.first_name || ' ' || e.last_name) employee,
e.job_title,
(m.first_name || ' ' || m.last_name) manager
FROM
employees e
LEFT JOIN employees m ON
m.employee_id = e.manager_id
ORDER BY
manager;
----
【分组数据】
GROUP BY:就是提出一个依据,把一条一条的数据分成一组。//SELECT status FROM orders GROUP BY status;
HAVING:分组完了再加个条件
----
【子查询】
就是嵌套查询咯。
SELECT
product_id, product_name, list_price
FROM
products
WHERE
list_price = (
SELECT
MAX( list_price )
FROM
products
EXISTS全选。查询下单了的客户:
SELECT
name
FROM
customers c
WHERE
EXISTS (
SELECT
1
FROM
orders
WHERE
customer_id = c.customer_id
)
ORDER BY
name;
ANY,SOME和ALL也能用用
----