简略的 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/>(从nm笔数据)
分群查问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_DATECURRENT_DATE函数(以后日期)
CURRENT_TIMECURRENT_TIME函数(以后工夫)
CURRENT_TIMESTAMPCURRENT_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。