SQL语法快速回顾

发布时间 2023-05-19 23:52:52作者: 阿田Toby

学习及整理来源:

SQL 教程 | 菜鸟教程 (runoob.com)

做了些笔记快速记忆

以下为示例表(在'People'数据库中创建了'Friends'表)

DATABASE NAME: People

TABLE NAME: Friends

id name location item SorN
1 zty CN switch Y
2 ter CA xbox Y
3 jo5 CN ps5 N
4 ada CA pc N

0. 首先。。

比如mysql:

mysql> use People; (打开数据库'People')

mysql> set names utf8;(编码啥的)

 

1. SELECT

SELECT id,name, ...

FROM Friends;

SELECT id, name, ... FROM Friends;

如果

SELECT * FROM Friends;

就会显示整个表

 

2. SELECT DISTINCT

只会显示不重复的,比如说第3列

SELECT DISTINCT location FROM Friends;

会输出 cn和ca(当然是以表格形式)

 

3. WHERE

其实就是加了'条件',比如

SELECT * FROM Friends WHERE id=1;

SELECT * FROM Friends WHERE name='zty';

注意数值字段不要用引号

以上例子中"="就是运算符,常用运算符有

= 等于 <> 不等于(有时能够被换成!=) >大于 <小于 >=大于等于 <=小于等于

BETWEEN 在某个范围内,一般接AND用 这里范围边缘是包括的(比如SELECT * FROM Friends WHERE id BETWEEN 2 AND 4,那么就是输出id为2,3,4的各个数)

LIKE 模糊搜索(好玩的部分,比如 SELECT * FROM Friends WHERE item LIKE 'p%', 那么会输出带有ps5的第三行和带有pc的第四行。假如是SELECT * FROM Friends WHERE item LIKE 'p_',那么只会输出带有pc的第四行。因为 %表示多个字值,_表示一个字符)

关于通配符:

% 替代0个或多个字符

- 替代一个字符

[charlist]字符列中的任何单一字符

[^charlist]或[!charlist]不在字符列中的任何单一字符

IN 精确查询(可查多个),比如

SELECT * FROM Friends WHERE id IN (3,2,4);  且并不需要按顺序。

空值 is null

SELECT * FROM Friends WHERE id is null; 这条没结果的,我这个表没有空值。

逻辑运算优先级: () not and or

 

4. AND和OR运算符

SELECT * FROM Friends WHERE location='CN' AND id<3

SELECT * FROM Friends WHERE location='CN' or item='pc'

通过括号还能变更复杂

SELECT * FROM Friends WHERE location='CN' AND (id<3 OR id>4) 当然这句意义不大,只是做个例子

 

5.排序 ORDER BY

ASC升序 DESC降序

SELECT * FROM Friends ORDER BY id DESC 按照id降序排整个表

多个列也可以排,具体参考例子(因为懒)。总结就是谁在前面就先排谁

SQL ORDER BY 关键字 | 菜鸟教程 (runoob.com)

 

6.插入INSERT INTO 注意id列自动更新且唯一,不用管

不指定 INSERT INTO Friends VALUES ('zyc','CA','ps4','N');

指定列 INSERT INTO Friends ('name','location','SorN') VALUES ('zyc','CA','N')

还不清楚如果不填的话是空值还是0

 

7.更新UPDATE

UPDATE Friends SET location='CA' WHERE name='zty';

把zty的location更新成CA

注意!!如果没有WHERE语句,会把所有location的值都变成CA(坏)

在MySQL中,可以设置set sql_safe_updates=1;  这样没写WHERE就会报错

 

8. 删DELETE

DELETE FROM Friends WHERE name='zty' AND location='CA';

同样,不加WHERE就会删除所有行

 

9.SELECT TOP,LIMIT,ROWNUM

TOP:前百分之多少的子句显示,是SQL SERVER/MS Access语法

SELECT TOP 10 name

From Friends;

 

LIMIT:前面几条数据,是MySQL语法:

SELECT * FROM Friends LIMIT 5;

 

ROWNUM: 同上,但是是Oracle的语法:

SELECT name FROM Friends WHERE ROWNUM <=3;

 

未完。。。