教程:https://www.runoob.com/sql/sql-tutorial.html
SELECT
SQL SELECT 语法
SELECT column_name,column_name
FROM table_name;
与
SELECT * FROM table_name;
SELECT DISTINCT
只列出不同的值
SELECT DISTINCT column_name,column_name
FROM table_name;
WHERE
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜索某种模式 |
IN | 指定针对某个列的多个可能值 |
AND | 逻辑与 |
OR | 逻辑或 |
NOT | 逻辑非 |
特殊条件: | |
is null | 空值判断。Select * from emp where comm is null; |
between A and B | 在A 与B 之间(闭区间)Select * from emp where sal between 1500 and 3000; |
IN | Select * from emp where sal in (5000,3000,1500); 查询 EMP 表 SAL 列中等于 5000,3000,1500 的值。 |
LIKE | 模糊查询。Select * from emp where ename like 'pattern'; 其中'pattern' 为要模糊匹配的内容,可包含:% : 多个字符,_ : 一个字符 |
ORDER BY
默认升序排序,加上DESC
关键字降序排序
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name [ASC|DESC];
ORDER BY
多列的时候,先按照第一个column name
排序,在按照第二个column name
排序DESC
或者ASC
只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。
INSERT INTO
INSERT INTO
语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可(需要列出插入行的每一列数据):
INSERT INTO table_name
VALUES (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
- Values可以不提供id,id 列是自动更新的,表中的每条记录都有一个唯一的数字(id必须有Auto Increment约束)。
UPDATE
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。
- 在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update / delete 语句后携带 where 条件,否则就会报错。
set sql_safe_updates=1;
表示开启该参数
DELETE
DELETE FROM table_name
WHERE some_column=some_value;
请注意 SQL DELETE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
- 删除所有数据:
DELETE FROM table_name;
或
DELETE * FROM table_name;
**注释:**在删除记录时要格外小心!因为您不能重来!
drop, delete, truncate 比较:
-
相同点:drop、delete、truncate 都是删除表的内容。
-
不同点:
- delete:删除表的内容,表的结构还存在,不释放空间,可以回滚恢复;
- drop:删除表内容和结构,释放空间,没有备份表之前要慎用;
- truncate:删除表的内容,表的结构存在,可以释放空间,没有备份表之前要慎用;
SELECT LIMIT
限制显示前n条数据
SELECT column_name(s)
FROM table_name
LIMIT number;
实例:
下面的 SQL 语句从 “Websites” 表中选取头两条记录:
SELECT * FROM Websites LIMIT 2;
后两条记录:
SELECT * FROM Websites ORDER BY id DESC LIMIT 2;
LIKE
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
通配符 | 含义 |
---|---|
% | 任意多个(可以是0个)字符 |
_ | 一个字符 |
- 可以
NOT LIKE
REGEXP(正则表达式)
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或 [!charlist] | 不在字符列中的任何单一字符 |
下面的 SQL 语句选取 name 以 “G”、“F” 或 “s” 开始的所有网站:
实例
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
SQL函数
SQL 拥有很多可用于计数和计算的内建函数。
SQL Aggregate 函数
SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
有用的 Aggregate 函数:
- AVG() - 返回平均值
- COUNT() - 返回行数
- FIRST() - 返回第一个记录的值
- LAST() - 返回最后一个记录的值
- MAX() - 返回最大值
- MIN() - 返回最小值
- SUM() - 返回总和
SQL Scalar 函数
SQL Scalar 函数基于输入值,返回一个单一的值。
有用的 Scalar 函数:
- UCASE() - 将某个字段转换为大写
- LCASE() - 将某个字段转换为小写
- MID() - 从某个文本字段提取字符,MySql 中使用
- SubString(字段,1,end) - 从某个文本字段提取字符
- LEN() - 返回某个文本字段的长度
- ROUND() - 对某个数值字段进行指定小数位数的四舍五入
- NOW() - 返回当前的系统日期和时间
- FORMAT() - 格式化某个字段的显示方式