一、SQL语句的种类
1、DDL(Data Definition Language,数据定义语言):
sql
CREATE:用于创建数据库和表等对象。
DROP:用于删除数据库和表等对象。
ALTER:用于修改数据库表的结构,如添加、删除或修改列。
2、DML(Data Manipulation Language,数据操纵语言):
sql
SELECT:用于从数据库中检索数据。
INSERT INTO:用于向数据库中插入新的数据行。
UPDATE:用于修改数据库表中已存在的数据。
DELETE:用于从数据库表中删除数据。
3、DCL(Data Control Language,数据控制语言):
sql
GRANT:用于赋予用户操作权限。
REVOKE:用于取消用户的操作权限。
COMMIT:用于确认对数据库中的数据进行的变更。
ROLLBACK:用于取消对数据库中的数据进行的变更。
二、SQL的基本书写规则
sql
1、SQL语句要以分号(;)结尾。
2、SQL语句不区分大小写,但通常为了可读性,关键字大写,表名和列名小写。
3、常数的书写方式是固定的,字符串用单引号括起来,日期也可以用单引号括起来,数字则直接书写。
4、单词需要用半角空格或者换行来分隔,不能使用全角空格。
三、常用SQL语句的语法
1、SELECT语句:
sql
基本语法:SELECT 列名1, 列名2, ... FROM 表名;
检索所有列:SELECT * FROM 表名;
去除重复值:SELECT DISTINCT 列名 FROM 表名;
2、WHERE子句:
sql
用于筛选满足指定条件的记录。
语法:SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
3、AND & OR运算符:
sql
AND运算符表示同时满足所有条件。
OR运算符表示满足任一条件。
语法示例:SELECT * FROM 表名 WHERE 条件1 AND 条件2; 或 SELECT * FROM 表名 WHERE 条件1 OR 条件2;
4、ORDER BY关键字:
sql
用于对结果集进行排序。
语法:SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC;
5、INSERT INTO语句:
go
用于向表中插入新记录。
语法:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
6、UPDATE语句:
sql
用于修改表中的记录。
语法:UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2, ... WHERE 条件;
7、DELETE语句:
go
用于从表中删除记录。
语法:DELETE FROM 表名 WHERE 条件;
四、进阶语法
1、SELECT TOP/LIMIT/ROWNUM子句:
sql
用于限制查询结果的记录数。
SQL Server/MS Access:SELECT TOP number|percent 列名 FROM 表名;
MySQL:SELECT 列名 FROM 表名 LIMIT number;
Oracle:SELECT 列名 FROM 表名 WHERE ROWNUM <= number;
2、LIKE操作符:
sql
用于在WHERE子句中搜索列中的指定模式。
语法:SELECT 列名 FROM 表名 WHERE 列名 LIKE 模式;
3、IN操作符:
sql
允许在WHERE子句中规定多个值。
语法:SELECT 列名 FROM 表名 WHERE 列名 IN (值1, 值2, ...);
4、BETWEEN操作符:
sql
用于选取介于两个值之间的数据范围内的值。
语法:SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
5、SQL别名:
sql
可以为表或列指定别名,以便在查询中引用。
列的别名语法:SELECT 列名 AS 别名 FROM 表名;
表的别名语法:SELECT 列名 FROM 表名 AS 别名;
6、SQL连接(JOIN):
sql
用于将来自两个或多个表的行结合起来。
常见的连接类型有INNER JOIN、LEFT JOIN、RIGHT JOIN等。
五、常见的函数
1. 聚合函数
聚合函数主要用于对一组值执行计算,并返回单个值。常见的聚合函数包括:
sql
AVG(column):返回某列的平均值。
COUNT(column):返回某列的行数(不包括NULL值)。COUNT(*)则返回被选行数,包括NULL值。
MAX(column):返回某列的最大值。
MIN(column):返回某列的最小值。
SUM(column):返回某列数值的总和。
2. 字符串函数
字符串函数用于对字符串数据进行操作。常见的字符串函数包括:
sql
CONCAT(str1, str2, ...):将两个或多个字符串连接成一个字符串。
LENGTH(str) 或 LEN(str):返回字符串的长度。
UPPER(str):将字符串转换为大写。
LOWER(str):将字符串转换为小写。
SUBSTR(str, start, length) 或 SUBSTRING(str, start, length):返回字符串的子串。
REPLACE(str, from_str, to_str):将字符串中的子串替换为另一个子串。
TRIM(str):去除字符串两端的空格。
3. 数学函数
数学函数用于执行数学计算。常见的数学函数包括:
sql
ROUND(num, decimal_places):将数字四舍五入到指定的小数位数。
ABS(num):返回数字的绝对值。
CEIL(num) 或 CEILING(num):向上取整。
FLOOR(num):向下取整。
MOD(x, y):返回x除以y的余数。
RAND():返回0到1之间的随机浮点数。
4. 日期和时间函数
日期和时间函数用于处理日期和时间数据。常见的日期和时间函数包括:
sql
NOW():返回当前的日期和时间。
CURDATE():返回当前的日期。
CURTIME():返回当前的时间。
YEAR(date):返回日期中的年份。
MONTH(date):返回日期中的月份。
DAY(date):返回日期中的天数。
DATE_ADD(date, INTERVAL value unit):将日期加上指定的时间间隔。
DATE_SUB(date, INTERVAL value unit):从日期减去指定的时间间隔。
DATEDIFF(date1, date2):计算两个日期之间的天数差。
5. 转换函数
转换函数用于将一种数据类型转换为另一种数据类型。常见的转换函数包括:
sql
CAST(expression AS data_type):将表达式转换为指定的数据类型。
CONVERT(data_type[(length)], expression [, style]):将表达式转换为指定的数据类型,并可选择性地指定样式。
6. 系统函数
系统函数用于返回数据库服务器的系统信息。常见的系统函数包括:
sql
VERSION():返回数据库的版本号。
DATABASE():返回当前数据库的名称。
USER() 或 SYSTEM_USER:返回当前数据库用户的名称。
7. 流程控制函数
流程控制函数用于在SQL查询中执行条件逻辑。常见的流程控制函数包括:
sql
IF(condition, true_value, false_value):如果条件为真,则返回true_value;否则返回false_value。
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END:根据条件返回不同的结果。