Mysql-select语法笔记

选择,表记为 T,列名记为C,某个具体取值记为X

单表查询

*顺序
SELECT *
FROM T
WHERE C1 = X
ORDER BY C2

*列运算与重命名
SELECT
C3,
C4+10 AS ‘newname’
FROM T
WHERE C1 = X
ORDER BY C2

*去重
SELECT DISTINCT C1
FROM T

*时间
SELECT *
FROM T
WHERE C > ‘1990-01-01’

*多条件(AND > OR,NOT)
SELECT *
FROM T
WHERE NOT (C1 > ‘1990-01-01’ AND C2 >1000)

*多条件(IN)
SELECT *
FROM T
WHERE C IN (‘VA’,‘FL’,‘GA’)
– WHERE C=‘VA’ OR C=‘GL’ OR C = ‘GA’

*多条件(BETWEEN)
SELECT *
FROM T
WHERE C BETWEEN 1000 AND 3000

*通配符(LIKE)
SELECT *
FROM T
WHERE C LIKE ‘b%’
– WHERE C LIKE ‘%b%’
– WHERE C LIKE ‘%b’
– WHERE C LIKE ‘_b’(一个空格表示一个字符,如ab符合,但aab不符合)

*通配符(REGEXP)
SELECT *
FROM T
– WHERE C LIKE ‘%field%’
– WHERE C REGEXP ‘field’
– WHERE C REGEXP ‘^field’(必须以field开头)
– WHERE C REGEXP ‘field$’(必须以field结尾)
– WHERE C REGEXP ‘^field | mac | rose’
– WHERE C REGEXP ‘[gim]e’ (包含ge、ie、me的都会被选上。另一种’e[a-h]’,ea、eb…eh都会被选上)

*NULL操作
SELECT *
FROM T
WHERE C IS NULL

*ORDER BY
SELECT *
FROM T
ORDER BY C2 DESC
– ORDER BY C1 DESC, C2 DESC

*LIMIT
SELECT *
FROM T
LIMIT 3
– LIMIT 6,3(从第6行开始,查询第7,8,9这三行数据)

多表查询

*内连接(INNER JOIN,默认JOIN就是内连接)
SELECT A.C1,T2.C3
FROM T1 AS A
JOIN T2
ON A.C1 = T2.C2

*跨数据库连接,数据库1,2分别记为DB1,DB2
SELECT *
FROM DB1.T1 AS A
JOIN DB2.T2 AS B
ON A.C1 = B.C2

*自连接
SELECT E.C1,M.C1
FROM T E
JPIN T M
ON E.C1 = M.C2

*多表连接
SELECT *
FROM T1
JOIN T2
ON T1.C1 = T2.C1
JOIN T3
ON T1.C2 = T3.C2

*复合连接(复合主键情形)
SELECT *
FROM T1
JOIN T2
ON T1.C1 = T2.C1
AND T1.C2 = T2.C2

*隐式连接
SELECT *
FROM T1,T2 (交叉链接)
WHERE T1.C1 = T2.C1

*外连接(LEFT/RIGHT JOIN)
SELECT *
FROM T1
LEFT JOIN T2
ON T1.C1 = T2.C1
ORDER BY T1.C1

*多表外连接
SELECT *
FROM T1
LEFT JOIN T2
ON T1.C1 = T2.C1
LEFT JOIN T3
ON T3.C2 = T2.C2
ORDER BY T1.C1

*自外连接
SELECT *
FROM T E
LEFT JOIN T M
ON E.C1 = M.C2

*USING子句(名字必须一样)
SELECT *
FROM T1
JOIN T2
– ON T1.C1 = T2.C1
USING (C1)
– USING (C1,C3)(复合主键)
LEFT JOIN T3
USING (C2)

*交叉连接(主键笛卡尔积)
SELECT *
FROM T1
CROSS JOIN T2
– SELECT * FROM T1,T2

*Unions(合并多条查询记录)
SELECT C1 AS newname
FROM T1
UNION
SELECT C2
FROM T2(列的数目必须一致)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值