SQL语法快速回顾

学习及整理来源:

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';

注意数值字段不要用引号

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

= 等于
<> or !=(并不是都适用) 不等于

>

大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN ... (AND) ... 在某个范围内,一般接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] or [!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;

 

10. CONCAT,AS,TRIM(LTRIM、RTRIM)

用来把表按你想要的格式显示

CONCAT把多个列合成一列,用逗号分隔(没分之前是竖线分隔的)

AS 改名字,可以给列改,也可以给表改,还可以跟CONCAT合起来用

TRIM去掉(两边)空格,如果输出的内容里有空格,就去掉。(LTRIM,RTRIM只去掉左边/右边空格)

 

SELECT name, CONCAT(location,'SorN')AS L_S FROM Friends;

结果就是把名字和L_S(位置和SorN在一个方框里)输出到屏幕上。

 

 

 

 

未完。。。

posted @ 2023-05-19 23:45  阿田Toby  阅读(35)  评论(0)    收藏  举报