0%

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 <表名> (
<列名1> <数据类型> <约束条件>,
<列名2> <数据类型> <约束条件>,
<列名3> <数据类型> <约束条件>,
......
<该表的的约束条件1>
<该表的的约束条件2>...);
插入数据INSERT INTO <表名> (列名1,列名2,...) VALUES (值1,值2,...);
(每列都有数据插入时,可省略列名。但是为了代码的可读性,不建议如此操作。)
增加列ALTER TABLE <表名> ADD <列名> <数据类型> <约束条件> AFTER <前一列列名>;
(默认插入到最后一列)

删除(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;
或者 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
<某列名> BETWEEN <某列名范围值-小> AND <某列名范围值-大>;
字符串模式匹配查询SELECT <列名> FROM <表名> WHERE name LIKE 'Y%';
(查询以Y开头的,更多匹配方式自行百度哦~。)
指定多个值数据查询SELECT <列名1>,<列名2>,<列名3>,... FROM <表名> WHERE
<某列名> IN ('<某列名值1>','<某列名值2>','<某列名值3>',...);
查询结果排序SELECT <列名1>,<列名2>,<列名3>,... FROM <表名> ORDER BY <某列名> DESC;
(此处为递减排列,默认为递增ASC
查询指定几笔数据SELECT <列名1>,<列名2>,<列名3>,... FROM <表名> LIMIT n,m;
(从nm笔数据)
分群查询SELECT <列名1>,<列名2>,<列名3>,...,<函数> FROM <表名> GROUP BY <列名1>,<列名2>,<列名3>,...;
(常搭配函数有: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表达式。

1
2
3
4
5
6
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。

bulb