SQL
查询
SELECT name, hp_max, mp_max, attack_max, defense_max FROM heros
SELECT name AS n FROM heros // 起别名
SELECT '王者荣耀' as platform, name FROM heros // 新增一列, 全部为王者荣耀的platform列
SELECT DISTINCT attack_range FROM heros // DISTINCT用于去除重复的最后的结果会去重, DISTINCT 需要放到所有列名的前面
SELECT name, hp_max FROM heros ORDER BY hp_max DESC // 排序 order by, 以最大血量 倒序进行排序
ORDER BY name desc,age asc // 先按照名字降序排列, 然后再按照年龄升序排列
SELECT name, hp_max FROM heros WHERE hp_max > 6000
SELECT name, hp_max FROM heros WHERE hp_max BETWEEN 5399 AND 6811
WHERE hp_max > 6000 AND mp_max > 1700
SELECT name FROM heros WHERE name LIKE '% 太 %' // % 表示通配符, like用于模糊匹配
SELECT player_id, a.team_id, player_name, height, team_name FROM player AS a, team AS b WHERE a.team_id = b.team_id // 笛卡尔积, 查询 player中team_id 和 team中team_id 相同的集合
// 查询在什么中间的集合
SELECT p.player_name, p.height, h.height_level
FROM player AS p, height_grades AS h
WHERE p.height BETWEEN h.height_lowest AND h.height_highest
// 外连接
// 左外连接, 左边是主表全部保留, 右边是从表, 对齐左表, (+)表示是从表
SELECT * FROM player, team where player.team_id = team.team_id(+)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
插入
// 按照上面的顺序依次插入数据
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
1
2
3
2
3
更新
// 更新表, 在满足条件时, 将column1改为value1, update的时候一定要写条件
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
1
2
3
4
2
3
4
删除
// 从website表中删除facebook并且国家是美国的数据
DELETE FROM Websites
WHERE name='Facebook' AND country='USA';
// 删除所有数据
DELETE FROM table_name;
1
2
3
4
5
6
2
3
4
5
6
表操作
函数
算术函数
SELECT ABS(-2),运行结果为 2。 // 取绝对值
SELECT MOD(101,3),运行结果 2。 // 取余
SELECT ROUND(37.25,1),运行结果 37.3。 // 四舍五入小数位, 第二个参数表示要保留的小数位数
1
2
3
4
5
6
2
3
4
5
6
字符串函数
SELECT CONCAT('abc', 123),运行结果为 abc123。 // 拼接
SELECT LENGTH('你好'),运行结果为 6。 // 字符长度, 一个汉字3个字节
SELECT CHAR_LENGTH('你好'),运行结果为 2。 // 字符串长度
SELECT LOWER('ABC'),运行结果为 abc。 // 转小写
SELECT UPPER('abc'),运行结果 ABC。 // 转大写
SELECT REPLACE('fabcd', 'abc', 123),运行结果为 f123d。 // 替换, 第一个是原字符串, 第二个是要被替换的, 第三个是替换后的内容
SELECT SUBSTRING('fabcd', 1,3),运行结果为 fab。 // 字符串截取, (原字符串, 开始位置, 截取长度)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
日期函数
SELECT CURRENT_DATE(),运行结果为 2019-04-03。
SELECT CURRENT_TIME(),运行结果为 21:26:34。
SELECT CURRENT_TIMESTAMP(),运行结果为 2019-04-03 21:26:34。
SELECT EXTRACT(YEAR FROM '2019-04-03'),运行结果为 2019。
SELECT DATE('2019-04-01 12:00:05'),运行结果为 2019-04-01。
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
转换函数
CAST COALESCE