基础语法
- SELECT语句
- SELECT DISTINCT语句: (SELECT DISTINCT 语句用于返回唯一不同的值)在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT 关键词用于返回唯一不同的值。
- WHERE子句: WHERE 子句用于提取那些满足指定标准的记录。
- AND & OR运算符: AND & OR 运算符用于基于一个以上的条件对记录进行过滤。
- ORDER BY 关键字: ORDER BY 关键字用于对结果集进行排序。
- INSERT INTO 语句: INSERT INTO 语句用于向表中插入新记录
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
- UPDATE 语句: UPDATE 语句用于更新表中的记录。
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
- DELETE 语句: DELETE 语句用于删除表中的行
DELETE FROM table_name WHERE some_column=some_value;
高级语法
- SELECT LIMIT 子句:SELECT LIMIT 子句用于规定要返回的记录的数目
SELECT column_name(s) FROM table_name LIMIT number;
- LIKE 操作符:LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
- 通配符: 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。SQL 通配符用于搜索表中的数据。
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] | 不在字符列中的任何单一字符 |
SELECT * FROM Websites WHERE url LIKE 'https%';
- IN 操作符: IN 操作符允许在 WHERE 子句中规定多个值。
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
- BETWEEN 操作符: BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
别名: 通过使用 SQL,可以为表名称或列名称指定别名
SELECT column_name AS alias_name FROM table_name;
连接(JOIN): SQL join 用于把来自两个或多个表的行结合起来。
INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行SELECT Websites.id, Websites.name, access_log.count, access_log.date FROM Websites INNER JOIN access_log ON Websites.id=access_log.site_id;
INNER JOIN 关键字
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
- LEFT JOIN 关键字: LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
- RIGHT JOIN 关键字: RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
- FULL OUTER JOIN 关键字: FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name;
- UNION 操作符: UNION 操作符合并两个或多个 SELECT 语句的结果。
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
- SELECT INTO 语句: SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中.
SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;
- CREATE INDEX 语句: CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
ALTER TABLE 语句: ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
1.如需在表中添加列,请使用下面的语法:
ALTER TABLE table_name ADD column_name datatype
2.如需删除表中的列,请使用下面的语法:
ALTER TABLE table_name DROP COLUMN column_name
3.要改变表中列的数据类型,请使用下面的语法:
ALTER TABLE table_name MODIFY COLUMN column_name datatype
SQL 函数
- AVG() 函数: AVG() 函数返回数值列的平均值。
SELECT AVG(column_name) FROM table_name
COUNT() 函数: COUNT() 函数返回匹配指定条件的行数。
1.计算列的和:
SELECT COUNT(column_name) FROM table_name;
2.返回表中的记录数录:SELECT COUNT(*) FROM table_name;
3.返回指定列的不同值的数目:SELECT COUNT(DISTINCT column_name) FROM table_name;
FIRST() 函数: FIRST() 函数返回指定的列中第一个记录的值.(只有 MS Access 支持 FIRST() 函数。)
- LAST() 函数: LAST() 函数返回指定的列中最后一个记录的值. (只有 MS Access 支持 FIRST() 函数。)
- MAX() 函数: MAX() 函数返回指定列的最大值。
SELECT MAX(column_name) FROM table_name;
- MIN() 函数: MIN() 函数返回指定列的最小值。
SELECT MIN(column_name) FROM table_name;
- SUM() 函数: SUM() 函数返回数值列的总数。
SELECT SUM(column_name) FROM table_name;
- GROUP BY 语句: GROUP BY 语句可结合一些聚合函数来使用。
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
- HAVING 子句: HAVING 子句可以让我们筛选分组后的各组数据。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
- UCASE() 函数: UCASE() 函数把字段的值转换为大写。
SELECT UCASE(column_name) FROM table_name;
- LCASE() 函数: LCASE() 函数把字段的值转换为小写。
SELECT LCASE(column_name) FROM table_name;
- MID() 函数: MID() 函数用于从文本字段中提取字符。
SELECT MID(column_name,start[,length]) FROM table_name;
SELECT MID(name,1,4) AS ShortTitle FROM Websites;
- LENGTH() 函数: 返回文本字段中值的长度。
SELECT LENGTH(column_name) FROM table_name;
- ROUND() 函数: ROUND() 函数用于把数值字段舍入为指定的小数位数。
SELECT ROUND(column_name,decimals) FROM table_name;
- NOW() 函数: NOW() 函数返回当前系统的日期和时间。
- FORMAT() 函数: FORMAT() 函数用于对字段的显示进行格式化。
SELECT FORMAT(column_name,format) FROM table_name;
SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date FROM Websites;