这次记得比较杂,随意记录一些看文档 / 视频的过程中觉得重要的
在workbench中你或者通过USE关键字来选中数据库或者双击左边schemas里面的具体栏目
SELECT *
FROM customers
-- WHERE customer_id = 1
order by first_name
注意除了SELECT clause,其他都不是必须的,但是注意这些clause的顺序不能变,先查询再排序(好理解)
你甚至可以直接SELECT数字
SELECT 1, 2
此外,换行符,大间隔和tab符号在执行SQL语句时都没有起作用
可以直接在取列的时候进行计算,运算优先级可以根据符号进行改变,AS用于起别名
SELECT
last_name,
first_name,
points,
(points + 100) * 10 AS discount_fact
FROM customers
`AND(&&), OR(||), NOT```
注意下面这样写逻辑判断是不对的
SELECT *
FROM customers
WHERE state = 'VA' OR 'GA' OR 'FL'
因为state = 'VA'
是一个boolean(念作不连安)值,而’GA’是字符串,再SQL里面你不能使用OR
连接这两种类型
如果要这样简单写可以用in
,如下
SELECT *
FROM customers
WHERE state IN ('VA', 'GA', 'FL')
当然可以NOT IN
相似的还有BETWEEN...AND...
LIKE
clause,这个表示有点像正则表达式那个意思,但是具体符号有点不同
%
匹配任意多个任意字符,_
(underscore)匹配一个字符
也可以NOT LIKE
注意同样也存在以下问题:
SELECT *
FROM customers
-- WHERE address LIKE '%TRAIL%' OR '%AVENUE%'
WHERE address LIKE '%TRAIL%' OR
address LIKE '%AVENUE%'
用注释掉那种方法,也是只能识别%TRAIL%
要用正则表达式的话,用关键字REGEXP
^
开头,$
结尾,|
(vertical bar)表示或者,选择性匹配
注意^field|mac|rose
里头只有field是必须开头,不是说三个开头
[gim]e
表示g或i过m可以粗现在e前头
SELECT first_name, last_name
FROM customers
ORDER BY birth_date
注意只有MySQL里里面才可以这么么写,其他DBMS你这样写可能就会出.
还有下面这种写法,再MySQL里面也是合法的:
SELECT first_name, last_name, 10 AS points
FROM customers
ORDER BY points, first_name
10
那个地方你可以写一系列复杂的数学式子,注意只有10设置了alias为points,而不是把这三个一起起了alias
SELECT first_name, last_name, 10 AS points
FROM customers
ORDER BY 1, 2
这个表示用上面选出来的第1列first_name和第2列last_name来排序,但是我们应该避免这种写法,因为如果你再select后面多加一列就错了,还是要用列明来排序
如果要控制输出的行数,可以用LIMIT
关键字如下
SELECT *
FROM customers
LIMIT 6, 3
注意这里LIMIT
之后两个数字,第一个是跳过前6条的意思,然后在显示3条,这个在那种网页显示的时候特别有用
LIMIT
要放在WHERE
和ORDER BY
后面.