[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/ByteVortex/JavaGuide/main/docs/database/sql/sql-syntax-summary.md [Back]  [Original]

---
title: SQL
category: 
tag:
  - 
  - SQL
---

> 
>
> - [SQL ](https://juejin.cn/post/6844903790571700231)
> - [MySQL ](https://www.begtut.com/mysql/mysql-tutorial.html)

## 

### 

- `database` - 
- `table` - 
- `schema` - 
- `column` - 
- `row` - 
- `primary key` - 

### SQL 

SQLStructured Query Language) SQL  ANSI  ANSI SQL DBMS  PL/SQLTransact-SQL 

#### SQL 

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cb684d4c75fc430e92aaee226069c7da~tplv-k3u1fbpfcp-zoom-1.image)

SQL 

- **``** - 
- **``** - 
- **``** -  SQL 3VLtrue/false/unknown
- **``** -  SQL 
- **``** - 

#### SQL 

- **SQL ** DBMS `SELECT`  `select` `Select` 
- ** SQL `;`**
-  SQL ****

SQL 

```sql
--  SQL 

UPDATE user SET username='robot', password='robot' WHERE username = 'root';

--  SQL 
UPDATE user
SET username='robot', password='robot'
WHERE username = 'root';
```

SQL 

```sql
## 1
-- 2
/* 3 */
```

### SQL 

#### DDL

Data Definition LanguageDDL SQL 

DDL ****

DDL  `CREATE``ALTER``DROP`

#### DML

Data Manipulation Language, DML

DML  ********

DML  `INSERT``UPDATE``DELETE``SELECT` CRUD(Create, Read, Update, Delete)

#### TCL

 (Transaction Control Language, TCL) **** DML 

TCL  `COMMIT``ROLLBACK`

#### DCL

 (Data Control Language, DCL) 

DCL  `GRANT``REVOKE`

DCL **** DCL `CONNECT``SELECT``INSERT``UPDATE``DELETE``EXECUTE``USAGE``REFERENCES`

 DBMS 

** DML  DML **

## 

 CRUD

### 

`INSERT INTO` 

****

```sql
# 
INSERT INTO user
VALUES (10, 'root', 'root', 'xxxx@163.com');
# 
INSERT INTO user
VALUES (10, 'root', 'root', 'xxxx@163.com'), (12, 'user1', 'user1', 'xxxx@163.com'), (18, 'user2', 'user2', 'xxxx@163.com');
```

****

```sql
INSERT INTO user(username, password, email)
VALUES ('admin', 'admin', 'xxxx@163.com');
```

****

```sql
INSERT INTO user(username)
SELECT name
FROM account;
```

### 

`UPDATE` 

```sql
UPDATE user
SET username='robot', password='robot'
WHERE username = 'root';
```

### 

- `DELETE` 
- `TRUNCATE TABLE` 

****

```sql
DELETE FROM user
WHERE username = 'robot';
```

****

```sql
TRUNCATE TABLE user;
```

### 

`SELECT` 

`DISTINCT` 

`LIMIT`  0 

- `ASC` 
- `DESC` 

****

```sql
SELECT prod_name
FROM products;
```

****

```sql
SELECT prod_id, prod_name, prod_price
FROM products;
```

****

```sql
SELECT *
FROM products;
```

****

```sql
SELECT DISTINCT
vend_id FROM products;
```

****

```sql
--  5 
SELECT * FROM mytable LIMIT 5;
SELECT * FROM mytable LIMIT 0, 5;
--  3 ~ 5 
SELECT * FROM mytable LIMIT 2, 3;
```

## 

`order by`  `desc` 

`order by` 

```sql
SELECT * FROM products
ORDER BY prod_price DESC, prod_name ASC;
```

## 

**`group by`** 

- `group by` 
- `group by` 
- `group by` `count``max``sum``avg` 
- `group by` 
- `group by` `order by` 

****

```sql
SELECT cust_name, COUNT(cust_address) AS addr_num
FROM Customers GROUP BY cust_name;
```

****

```sql
SELECT cust_name, COUNT(cust_address) AS addr_num
FROM Customers GROUP BY cust_name
ORDER BY cust_name DESC;
```

**`having`**

- `having`  `group by` 
- `having`  `group by` 
- `where`  `having` 

** WHERE  HAVING **

```sql
SELECT cust_name, COUNT(*) AS num
FROM Customers
WHERE cust_email IS NOT NULL
GROUP BY cust_name
HAVING COUNT(*) >= 1;
```

**`having` vs `where`** 

- `where``where` `group by` 
- `having` `group by` `having`  `group by` 

## 

 SQL  `select`  SQL 

 `SELECT``INSERT``UPDATE`  `DELETE`  `=````IN``BETWEEN``EXISTS` 

 `WHERE`  `FROM` 

-  `WHERE`  `WHERE` 
-  `FROM`  `FROM` 

> MYSQL  4.1 

 `WHERE` 

```sql
select column_name [, column_name ]
from   table1 [, table2 ]
where  column_name operator
    (select column_name [, column_name ]
    from table1 [, table2 ]
    [where])
```

- `( )`
- `operator`  where 

 `FROM` 

```sql
select column_name [, column_name ]
from (select column_name [, column_name ]
      from table1 [, table2 ]
      [where]) as temp_table_name
where  condition
```

 `FROM`  AS 

****

```sql
SELECT cust_name, cust_contact
FROM customers
WHERE cust_id IN (SELECT cust_id
                  FROM orders
                  WHERE order_num IN (SELECT order_num
                                      FROM orderitems
                                      WHERE prod_id = 'RGAN01'));
```



![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c439da1f5d4e4b00bdfa4316b933d764~tplv-k3u1fbpfcp-zoom-1.image)

### WHERE

- `WHERE` 
- `WHERE`  `true`  `false` 
- `WHERE`  `SELECT``UPDATE`  `DELETE` 
-  `WHERE` 

|   |                                                    |
| ------- | ------------------------------------------------------ |
| =       |                                                    |
|       |  SQL  != |
| >       |                                                    |
| <       |                                                    |
| >=      |                                                |
|   MySQL  `;` MySQL  BEGIN  END
>
>  `DELIMITER` DELIMITER `DELIMITER new_delemiter``new_delemiter`  1  `;` `$` - `DELIMITER $`  `$`

 MySQL 5.7.2 

- `BEFORE INSERT` - 
- `AFTER INSERT` - 
- `BEFORE UPDATE` - 
- `AFTER UPDATE` - 
- `BEFORE DELETE` - 
- `AFTER DELETE` - 

 MySQL  5.7.2+

**`NEW`  `OLD`** 

- MySQL  `NEW`  `OLD` 
-  `INSERT` `NEW` `BEFORE``AFTER`
-  `UPDATE` `OLD` `NEW` 
-  `DELETE` `OLD` 
-  `NEW.columnName` columnName 

### 

> 

`CREATE TRIGGER` 



```sql
CREATE TRIGGER trigger_name
trigger_time
trigger_event
ON table_name
FOR EACH ROW
BEGIN
  trigger_statements
END;
```



- `trigger_name` 
- `trigger_time` :  `BEFORE`  `AFTER`
- `trigger_event` :  `INSERT``UPDATE`  `DELETE`
- `table_name` : 
- `FOR EACH ROW`: Mysql  DBMS 
- `trigger_statements`:  SQL  `;` 

 `BEGIN`  `END` 



```sql
DELIMITER $
CREATE TRIGGER `trigger_insert_user`
AFTER INSERT ON `user`
FOR EACH ROW
BEGIN
    INSERT INTO `user_history`(user_id, operate_type, operate_time)
    VALUES (NEW.id, 'add a user',  now());
END $
DELIMITER ;
```

### 

```sql
SHOW TRIGGERS;
```

### 

```sql
DROP TRIGGER IF EXISTS trigger_insert_user;
```

## 

- [SQL35+GET!](https://mp.weixin.qq.com/s/I-ZT3zGTNBZ6egS7T09jyQ)
- [SQL30](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486461&idx=1&sn=60a22279196d084cc398936fe3b37772&chksm=cea24436f9d5cd20a4fa0e907590f3e700d7378b3f608d7b33bb52cfb96f503b7ccb65a1deed&token=1987003517&lang=zh_CN#rd)

Web Proxy Viewer  |  New URL  |  Original Page