简略的 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。