学习自用_SQL相关

1 - DISTINCT : 去除重复项

去除 state 列 查询 出的重复项.

SELECT DISTINCT state FROM customers

2 - BETWEEN : 查询区间值

查询 points 列中 大于等于 (>=) 1000 小于等于 (<=) 3000 的数据.

SELECT * FROM customers
WHERE points BETWEEN 1000 AND 3000

3 - REGEXP : 正则表达式

SELECT * FROM customers 
WHERE last_name REGEXP '[a-h]e'

功能:

-- ^ 检索时匹配打头字段   例:   REGEXP '^e' 注: 匹配以 'e' 开头的字段;

-- $ 检索式匹配结尾字段   例:   REGEXP 'e$' 注: 匹配以 'e' 结尾的字段;

-- | 匹配多个检索字段(或者or) 例:REGEXP '^e|e&' 注: 匹配 'e' 开头的字段 或者匹配以 'e' 结尾的字段;

-- [abc] 分别组合匹配   例:   REGEXP '[abc]e'   注: 分别匹配 'ae' 'be' 'ce';

-- [a-c] 分别组合匹配   例:   REGEXP '[a-c]e'   注: 分别匹配 'ae' 'be' 'ce';

4 - IS NULL : 查询字段为空的数据

查询 phone 字段为空的行

这里不能用 "=" 查询 ; 因为null不是一个值

注 : IS NOT NULL 是查询不等于空

SELECT * FROM customers
WHERE phone IS NULL

5 - ORDER BY ~~ DESC (ASC) : 排序

查询表中 order_id 等于 2 的条目,

按照 数量quantity 乘以 单价 unit_price降序排列

默认是升序排列~~

SELECT *, 
quantity * unit_priceAS total  FROM order_items
WHERE order_id = 2
ORDER BY total DESC

6 - LIMIT : 分页

查询表 customers 按字段 points 降序排序

查出 偏移索引 0 条数据 ,显示 3 条数据

注 : LIMIT 要放在sql语句的最后

SELECT * FROM customers
ORDER BY points DESC
LIMIT 0,3

7 - JOIN : 表连接

内连接 : INNER JOIN 一般省略 INNER

左外连接 : LEFT JOIN 查询时显示主表的所有条目,和连接表匹配的条目

右外连接 : RIGHT JOIN 与左外相反,感觉关系复杂,我不会用

例:

SELECT 
    o.order_date,
    o.order_id,
    c.first_name,
    s.name AS shipper,
    os.name AS status
FROM orders o
LEFT JOIN shippers s
    USING (shipper_id)
JOIN customers c
    ON o.customer_id = c.customer_id
JOIN order_statuses os
    ON o.status = os.order_status_id

USING : 设置连接表的规则时,如果两个表列字段一样可以用 USING 代替 ON

8 - CREATE TABLE | 利用查询复制表

例:

CREATE TABLE ${复制后的表名} AS
    SELECT ${可以指定需要复制的列} FROM ${被复制的表名}
    JOIN ${还可以关联查询,复制} 
        NO xxx
    WHERE XXX -- 还可添加条件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值