SQL基础
#文件名啥的不分大小写
提取列
SELECT *
# 所有列
FROM 表名称
SELECT A,B,C
FROM 表名称
# 筛选出A、B、C列
SELECT DISTINCT 列名称
FROM 表名称
# 对列去重
提取行
SELECT *
FROM 表名称
WHERE 列名称 (筛选条件:= != <= >= < >) AND/OR (筛选条件)
# 可以在(列表名)前加NOT
AND优先于OR
WHERE 列名称 IN/NOT IN ('A','B','C')
# 非字符串不用加''
WHERE 列名称 BETWEEN 1000 AND 3000
# 相当于:列名称>=1000 AND 列名称<=3000
WHERE 列名称 LIKE/NOT LIKE 'b%'
# %表示任意个数的字母
_表示一个字母
可以加在给出字母或单词前后,确定位置
WHERE 列名称 REGEXP '^field|mac'
# 表示以field开头或含有mac的内容
开头加^表示以其后方单词为开头
结尾加$表示以其前方单词为结尾
中间加|表示OR
WHERE 列名称 REGEXP '[gim]e'
# 表示含有ge、ie、me的内容
如果字母连续可以用[a-h]表示区间
WHERE 列名称 IS NULL/IS NOT NULL
# 选出空值的行
排序
SELECT 列名称,列名称,10 AS points
# AS定义新的一列
FROM 表名称
ORDER BY 列表名
# 默认升序,加DESC变为降序,加ASC表示顺序,也可用123排序代替SELECT后方列表名
限制显示数量
SELECT *
FROM 表名称
LIMIT 偏移量,限制个数
# 偏移量:跳过n条数据
引入其他表格数据
INNER JOIN
SELECT *
FROM 表名称
JOIN 另一个表名称
ON 表名称.列名称 = 另一个表名称.列名称
AND 表名称.列名称 = 另一个表名称.列名称
# 两个表中同时包含某一列,SELECT后需要注明那张表格
表名称后可以用" 某一字母"的形式简化表名称以简化代码
ON:以给出的列名称为基准加入另一个表的信息
如果表格在不同的数据库里可以用"数据库名称.表名称"的形式提取
SELECT *
FROM 表名称,(表名称
WHERE 表名称.列名称 = 表名称.列名称
# 如不加WHERE语句结果会出现笛卡尔积(第一张表中行数乘第二章表中行数)
SELECT *
FROM 表名称
JOIN 表名称
USING (列名称,列名称)
# USING适用于两张表中列名称相同时,列名称需加括号
OUTER JOIN
SELECT *
FROM 表1
LEFT/RIGHT JOIN 表2
ON 表1.列名称 = 表2.表名称
ORDER BY 列名称
# LEFT:保留表1中所有内容 RIGHT:保留表2中所有内容
为方便一般使用LEFT
NATURAL JOIN
SELECT *
FROM 表名称
NATURAL JOIN 表名称
# 系统自动连接两表
CROSS JOIN
SELECT *
FROM 表名称
CROSS JOIN 表名称,表名称
# 产生笛卡尔积(第一张表中行数乘第二章表中行数)
组合查询
SELECT 列名称
FROM 表名称
UNION
SELECT 列名称
FROM 表名称
# 将两个查询结果合并,两个查询的列数必须一致
表格中间按钮
界面:

Datetype:
INT(n): 整数
VARCHAR(n): 字符串(最大长度为n)
CHAR(n): 字符串(固定长度n)
PK: 主键,最前端以黄色标出
NN: 非null的缩写,打钩则单元格必须有内容
AI: 自动增量,通常和主键一起选择,用于计数
Default/Expression: 当单元格没有内容时显示的内容
插入行
一行
INSERT INTO 表名称
VALUES (…,'…','…',…);
# …: 按顺序填入单元格
DEFAULT: 为AI或Default中自动生成的值
INSERT INTO 表名称 (列名称,列名称)
VALUES (列内容,列内容);
多行
INSERT INTO 表名称 (列名称,列名称,列名称)
VALUES ('内容','内容','内容'),
('内容','内容','内容'),
('内容','内容','内容');
在多个表格插入相关信息
INSERT INTO 表1 (列名称,列名称,列名称)
VALUES (内容,内容,内容);
INSERT INTO 表2
VALUES
(LAST_INSERT_ID(),内容,内容,内容),
(LAST_INSERT_ID(),内容,内容,内容);
# 在表2中加入与表1添加内容相关的补充信息
创建新表格
CREAT TABLE 新表名称 AS
SELECT * FROM 表名称
# 创建该表格后默认不会勾选主键和AI
在左侧右击新建的表格,点击Truncate Table...
复制黏贴
INSERT INTO 新表名称
SELECT *
FROM 表名称
WHERE 新表名称+删选条件
更新单元格
UPDATE 表名称
SET
列名称 = 数值/公式,
列名称 = 数值/公式;
WHERE 列名称+筛选条件
# 筛选条件可以用子查询的方式
删除数据
DELETE FROM 表名称
WHERE 列名称 =
(SELECT *
FROM 表名称
WHERE 列名称 = ...)
恢复数据库
顶部右击选择SQL script,选择create-datebases.sql,点右下角open,点小闪电重建所有数据库,刷新左列

浙公网安备 33010602011771号