8000 auto commit · Freeecode/Interview-Notebook@3b567e0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 3b567e0

Browse files
committed
auto commit
1 parent dbe4c30 commit 3b567e0

File tree

1 file changed

+98
-95
lines changed

1 file changed

+98
-95
lines changed

notes/SQL 语法.md

Lines changed: 98 additions & 95 deletions
< F438 tr class="diff-line-row">
```
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<!-- GFM-TOC -->
22
* [基础](#基础)
3+
* [创建表](#创建表)
4+
* [插入](#插入)
5+
* [更新](#更新)
6+
* [删除](#删除)
7+
* [修改表](#修改表)
38
* [查询](#查询)
49
* [排序](#排序)
510
* [过滤](#过滤)
@@ -18,11 +23,6 @@
1823
* [自然连接](#自然连接)
1924
* [外连接](#外连接)
2025
* [组合查询](#组合查询)
21-
* [插入](#插入)
22-
* [更新](#更新)
23-
* [删除](#删除)
24-
* [创建表](#创建表)
25-
* [修改表](#修改表)
2626
* [视图](#视图)
2727
* [存储过程](#存储过程)
2828
* [游标](#游标)
@@ -43,6 +43,90 @@ SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,
4343

4444
SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。
4545

46+
```sql
47+
# 注释
48+
SELECT *
49+
FROM mytable; -- 注释
50+
/* 注释1
51+
注释2 */
52+
```
53+
54+
# 创建表
55+
56+
```sql
57+
CREATE TABLE mytable (
58+
id INT NOT NULL AUTO_INCREMENT,
59+
col1 INT NOT NULL DEFAULT 1,
60+
col2 VARCHAR(45) NULL,
61+
col3 DATE NULL,
62+
PRIMARY KEY (`id`));
63+
```
64+
65+
# 插入
66+
67+
**普通插入**
68+
69+
```sql
70+
INSERT INTO mytable(col1, col2)
71+
VALUES(val1, val2);
72+
```
73+
74+
**插入检索出来的数据**
75+
76+
```sql
77+
INSERT INTO mytable1(col1, col2)
78+
SELECT col1, col2
79+
FROM mytable2;
80+
```
81+
82+
**将一个表的内容复制到一个新表**
83+
84+
```sql
85+
CREATE TABLE newtable AS
86+
SELECT * FROM mytable;
87+
```
88+
89+
# 更新
90+
91+
```sql
92+
UPDATE mytable
93+
SET col = val
94+
WHERE id = 1;
95+
```
96+
97+
# 删除
98+
99+
```sql
100+
DELETE FROM mytable
101+
WHERE id = 1;
102+
```
103+
104+
**TRUNCATE TABLE** 可以清空表,也就是删除所有行。
105+
106+
使用更新和删除操作时一定要用 WHERE 子句,不然会把整张表的数据都破坏。可以先用 SELECT 语句进行测试,防止错误删除。
107+
108+
# 修改表
109+
110+
**添加列**
111+
112+
```sql
113+
ALTER TABLE mytable
114+
ADD col CHAR(20);
115+
```
116+
117+
**删除列**
118+
119+
```sql
120+
ALTER TABLE mytable
121+
DROP COLUMN col;
122+
```
123+
124+
**删除表**
125+
126+
```sql
127+
DROP TABLE mytable;
128+
```
129+
46130
# 查询
47131

48132
**DISTINCT**
@@ -80,15 +164,6 @@ FROM mytable
80164
LIMIT 2, 3;
81165
```
82166

83-
**注释**
84-
85-
```sql
86-
# 注释
87-
SELECT *
88-
FROM mytable; -- 注释
89-
/* 注释1
90-
注释2 */
91-
```
92167

93168
# 排序
94169

@@ -320,7 +395,7 @@ ORDER BY cust_name;
320395

321396
# 连接
322397

323-
连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON。
398+
连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 Where
324399

325400
连接可以替换子查询,并且比子查询的效率一般会更快。
326401

@@ -378,7 +453,7 @@ where e1.department = e2.department
378453

379454
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。
380455

381-
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列;内连接属于自然连接
456+
内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。
382457

383458
```
384459
select *
@@ -387,14 +462,14 @@ from employee natural join department;
387462

388463
## 外连接
389464

390-
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表的所有行
465+
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行
391466

392467
检索所有顾客的订单信息,包括还没有订单信息的顾客。
393468

394469
```
395470
select Customers.cust_id, Orders.order_num
396471
from Customers left outer join Orders
397-
on Customers.cust_id = Orders.curt_id
472+
on Customers.cust_id = Orders.curt_id;
398473
```
399474

400475
如果需要统计顾客的订单数,使用聚集函数。
@@ -404,14 +479,16 @@ select Customers.cust_id,
404479
COUNT(Orders.order_num) as num_ord
405480
from Customers left outer join Orders
406481
on Customers.cust_id = Orders.curt_id
407-
group by Customers.cust_id
482+
group by Customers.cust_id;
408483
```
409484

410485
# 组合查询
411486

412-
使用 **UNION** 来连接两个查询,每个查询必须包含相同的列、表达式或者聚集函数。
487+
使用 **UNION** 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果为 M+N 行。
488+
489+
每个查询必须包含相同的列、表达式或者聚集函数。
413490

414-
默认会去除相同行,如果需要保留相同行,使用 UNION ALL
491+
默认会去除相同行,如果需要保留相同行,使用 UNION ALL。
415492

416493
只能包含一个 ORDER BY 子句,并且必须位于语句的最后。
417494

@@ -425,81 +502,7 @@ FROM mytable
425502
WHERE col =2;
426503
427504

428-
# 插入
429-
430-
**普通插入**
431-
432-
```sql
433-
INSERT INTO mytable(col1, col2)
434-
VALUES(val1, val2);
435-
```
436-
437-
**插入检索出来的数据**
438-
439-
```sql
440-
INSERT INTO mytable1(col1, col2)
441-
SELECT col1, col2
442-
FROM mytable2;
443-
```
444-
445-
**将一个表的内容复制到一个新表**
446-
447-
```sql
448-
CREATE TABLE newtable AS
449-
SELECT * FROM mytable;
450-
```
451-
452-
# 更新
453-
454-
```sql
455-
UPDATE mytable
456-
SET col = val
457-
WHERE id = 1;
458-
```
459-
460-
# 删除
461-
462-
```sql
463-
DELETE FROM mytable
464-
WHERE id = 1;
465-
```
466-
467-
**TRUNCATE TABLE** 可以清空表,也就是删除所有行。
468-
469-
使用更新和删除操作时一定要用 WHERE 子句,不然会把整张表的数据都破坏。可以先用 SELECT 语句进行测试,防止错误删除。
470-
471-
# 创建表
472-
473-
```sql
474-
CREATE TABLE mytable (
475-
id INT NOT NULL AUTO_INCREMENT,
476-
col1 INT NOT NULL DEFAULT 1,
477-
col2 VARCHAR(45) NULL,
478-
col3 DATE NULL,
479-
PRIMARY KEY (`id`));
480-
```
481-
482-
# 修改表
483-
484-
**添加列**
485-
486-
```sql
487-
ALTER TABLE mytable
488-
ADD col CHAR(20);
489-
```
490-
491-
**删除列**
492-
493-
```sql
494-
ALTER TABLE mytable
495-
DROP COLUMN col;
496-
```
497505

498-
**删除表**
499-
500-
```sql
501-
DROP TABLE mytable;
502-
```
503506

504507
# 视图
505508

0 commit comments

Comments
 (0)
0