共计 3062 个字符,预计需要花费 8 分钟才能阅读完成。
简略的 SQL 总结
SQL 增删改查 (CRUD) 语句与罕用函数总结。
SQL Introduction
个别咱们对数据库的操作次要分为四种,增 C(CREATE)、删D(DELETE)、改U(UPDATE)、查R(READ),所以,我就从CRUD 这四个方面来制作查问表。
开发规定:
1. 尽量减少对数据库的拜访次数,且不能查问无用的数据,节约效力(例如:我只有男生的数据,你把所有人的数据都查问进去)。
2. 属于 SQL
语法的要应用大写(SELECT, WHERE, INSERT etc…)。
3. 属于使用者本人定义的要应用小写(表名、列名 etc…)。
4. 表名与列名前后应用 \` 包起来,避免与关键字抵触(例如:INSERT INTO \`user\` VALUES(a,b);)。
5. 禁止应用 Table Join。
6. 禁止应用 Oracle Trigger。
7. 禁止应用 SELECT *(为了增强代码可读性)。
8. 不能将查询数据库的 SQL 放在循环中查问。
新增(CREATE)
性能 | 语句 |
---|---|
创立数据库 | CREATE DATABASE < 数据库名 >; |
创立数据表 | CREATE TABLE < 表名 > ( <br/>< 列名 1 > < 数据类型 > < 约束条件 >, <br/>< 列名 2 > < 数据类型 > < 约束条件 >, <br/>< 列名 3 > < 数据类型 > < 约束条件 >, <br/>...... <br/>< 该表的的约束条件 1 > <br/>< 该表的的约束条件 2 >...); |
插入数据 | INSERT INTO < 表名 > (列名 1, 列名 2,...) VALUES (值 1, 值 2,...); <br/>(每列都有数据插入时,可省略列名。然而为了代码的可读性,不倡议如此操作。) |
减少列 | ALTER TABLE < 表名 > ADD < 列名 > < 数据类型 > < 约束条件 > AFTER < 前一列列名 >; <br/>(默认插入到最初一列) |
删除(DELETE)
性能 | 语句 |
---|---|
删除数据库 | DROP DATABASE < 数据库名 >; |
删除数据表 | DROP TABLE < 表名 >; |
清空表数据 | DELETE FROM < 表名 >; 或者 TRUNCATE TABLE < 表名 >; |
删除行数据 | DELETE FROM < 表名 > WHERE < 条件 >; |
删除列数据 | ALTER TABLE < 表名 > DROP < 列名 >; |
批改(UPDATE)
性能 | 语句 |
---|---|
批改数据库名 | RENAME DATABASE < 旧名称 > TO < 新名称 >; |
批改表名 | RENAME TABLE < 旧名称 > TO < 新名称 >; |
留神: |
重命名数据库与数据表个别不举荐应用,若想测试,请先备份好本人的数据库~ |
批改数据 | UPDATE < 表名 > SET < 列名 1 > = < 新值 1 >,< 列名 2 > = < 新值 2 > WHERE < 条件 >; |
批改列名 | ALTER TABLE < 表名 > CHANGE < 旧列名 > < 新列名 > < 数据类型 > < 约束条件 >; |
查问(R E A D)
性能 | 语句 |
---|---|
查问所有数据库 | SHOW DATABASES; |
查问指定数据库中所有表名 | USE < 数据库名 >; 而后 SHOW TABLES; <br/> 或者 SHOW TABLES FROM < 数据库名 >; |
查问表中所有列信息 | SHOW COLUMNS FROM < 表名 >; |
查问表中所有数据 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 >; |
查问表中某个数据 | SELECT < 列名 > FROM < 表名 >; |
查问表中指定多个数据 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 > WHERE < 条件 >; |
查问表中指定一个数据 | SELECT < 列名 > FROM < 表名 > WHERE < 条件 >; |
查问指定范畴数据 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 > WHERE <br/>< 某列名 > BETWEEN < 某列名范畴值 - 小 > AND < 某列名范畴值 - 大 >; |
字符串模式匹配查问 | SELECT < 列名 > FROM < 表名 > WHERE name LIKE 'Y%'; <br/>(查问以 Y 结尾的,更多匹配形式自行百度哦~。) |
指定多个值数据查问 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 > WHERE <br/>< 某列名 > IN ('< 某列名值 1 >','< 某列名值 2 >','< 某列名值 3 >',...); |
查问后果排序 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 > ORDER BY < 某列名 > DESC; <br/>(此处为递加排列,默认为递增ASC ) |
查问指定几笔数据 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 > LIMIT n,m; <br/>(从 n 到m 笔数据) |
分群查问 | SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,...,< 函数 > FROM < 表名 > GROUP BY < 列名 1 >,< 列名 2 >,< 列名 3 >,...; <br/>(常搭配函数有:SUM() 、AVG() 、COUNT() 、MAX() 、MIN() ) |
查问不反复后果 | SELECT DISTINCT < 列名 1 >,< 列名 2 >,< 列名 3 > FROM < 表名 > WHERE 条件 |
罕用函数
函数名 | 用处 |
---|---|
ABS(数值) |
ABS 函数(求绝对值) |
MOD(被除数, 除数) |
MOD 函数(求余) |
ROUND(对象数值, 保留小数的位数) |
ROUND 函数(四舍五入) |
字符串 1 丨丨字符串 2 |
丨丨函数(拼接) |
LENGTH(字符串) |
LENGTH 函数(求字符串长度) |
LOWER(字符串) |
LOWER 函数(小写转换) |
UPPER(字符串) |
UPPER 函数(大写转换) |
REPLACE(对象字符串, 替换前的字符串, 替换后的字符串) |
REPLACE 函数(字符串的替换) |
SUBSTRING (对象字符串, 截取的起始地位, 截取的字符数) |
SUBSTRING 函数(字符串的截取) |
CURRENT_DATE |
CURRENT_DATE 函数(以后日期) |
CURRENT_TIME |
CURRENT_TIME 函数(以后工夫) |
CURRENT_TIMESTAMP |
CURRENT_TIMESTAMP 函数(以后日期和工夫)若用于 on update 能够在更新数据时更新此栏位 |
EXTRACT(日期元素 FROM 日期) |
EXTRACT 函数(截取日期元素) |
CAST(转换前的值 AS 想要转换的数据类型) |
CAST 函数(类型转换) |
COALESCE(数据 1, 数据 2, 数据 3....) |
COALESCE 函数(将 NULL 转换为其余值) |
SELECT uuid() as uuid |
能够利用数据库生成 Version 1 的 UUID |
OPTIMIZE TABLE table1, table2 |
能够最佳化数据表 |
补充:CASE 表达式。
CASE WHEN < 求值表达式 > THEN < 表达式 >
WHEN < 求值表达式 > THEN < 表达式 >
WHEN < 求值表达式 > THEN < 表达式 >
......
ELSE < 表达式 >
END
其余常识
常见数据类型
别名
给表设置别名,让 SQL 更简洁。例如:
SELECT < 列名 1 >,< 列名 2 >,< 列名 3 >,... FROM < 表名 1 > < 别名 a >,< 表名 2 > < 别名 b > WHERE < 别名 a >.< 某值 > = < 别名 b >.< 某值 >;
列名也能够设置别名。例如:
SELECT < 列名 1 > < 别名 a >,< 列名 2 > < 别名 b >,< 列名 3 > < 别名 c >,... FROM < 表名 >;
或者 SELECT < 列名 1 > AS < 别名 a >,< 列名 2 > AS < 别名 b >,< 列名 3 > AS < 别名 c >,... FROM < 表名 >;
总结
如须要找到符合条件的一些表能够去查问 information_schema 中的信息,例如:SELECT * FROM information_schema.TABLES
以上整顿的内容均为根底内容,更多进阶常识还需各位自行 Google。