markdown
### 基础拓展
```text
#自然连接 -- 将两张表中的所有相同字段进行等值连接
SELECT emp.employee_id,dep.department_name
FROM employees AS emp NATURAL JOIN departments AS dep;
```
```text
#USING -- (使用该关键字,对某字段进行等值连接)
SELECT emp.employee_id,dep.department_name
FROM employees AS emp JOIN departments AS dep
USING (department_id);
```
```text
#GROUP BY filed(安某一个字段进行分组)
SELECT AVG(salary),emp.department_id,emp.job_id
FROM employees AS emp
GROUP BY department_id,job_id;
```
```text
# HAVING 使用聚合函数时,用HAVING替换WHERE
SELECT AVG(salary) AS sal,emp.department_id,emp.job_id
FROM employees AS emp
GROUP BY department_id,job_id
HAVING sal > 6000
```
### SQL函数
#### 单行函数
1. 数值函数
2. 字符串函数
3. 时间函数
4. 流程控制函数
5. 加密函数
#### 聚合函数
*
*常用*
* 1. AVG() 2. SUM() 3. COUNT() 4. MAX() 5. MIN() ### SQL操作 #### 1. DDL 数据定义语言 **DDL操作不可以回滚*
* ```text CREATE #创建database CREATE DATABASE IF NOT EXISTS information; #创建table CREATE TABLE personal( id int primary key not null , name varchar(20), insertTime timestamp ); DROP #删除table DROP TABLE IF EXISTS personal; #删除database DROP DATABASE IF EXISTS information; ALTER #等新 RENAME #重命名 TRUNCATE #清空表中数据 TRUNCATE TABLE information; DELETE FROM information; ``` ```text 查询表信息 DESCRIBE tableName; 查询database信息 SHOW CREATE DATABASE databaseName; ``` #### 2. DML 数据操纵语言 ```text INSERT INSERT INTO person(name) VALUES ('将'); INSERT INTO person(name) SELECT语句; DELETE DELETE FROM person WHERE id = 5; UPDATE UPDATE person SET name='hello',city_id = 10 WHERE id <=> 2; SELECT ``` ```text #设置该项后,DML操作语句不会自动提交并修改数据库 SET AUTOCOMMIT = FALSE #需要手动 COMMIT ``` ### 约束 CONSTRAINT ```text #设置数据库字符 CREATE DATABASE personal CHARACTER SET 'utf8'; 数据完整性 Data Integrity 是指数据精确性和可靠性,它是防止数据库中存在不符合语义规定的数 据和防止因错误信息的输入输出造成无效操作或错误信息而提出的 为保证数据完整性,SQL规范以约束的方式对表数据造成额外的条件限制 ``` ```text 非空约束 NOT NULL 唯一性约束 UNIQUE (可以为NULL) ALTER TABLE a ADD UNIQUE (b); ALTER TABLE a DROP INDEX b; 主键约束 PRIMARY KEY 主键默认唯一且非空 外键约束 FOREIGN KEY 自增长 AUTO_INCREMENT 检查约束 CHECK ``` ### 视图 View ```text 依赖于已经存在的表,创建虚拟的表 #创建视图 CREATE VIEW TEST AS SELECT id,name FROM person where id > 10; #删除视图 DROP VIEW Name; #基本用于查询 ``` ### 触发器 ```text 触发器是由事件(INSERT,DELETE,UPDATE)来出发某一个操作,将事务包裹起来,形成原子操作,保证事务的完整性 #创建触发器 DELIMITER % CREATE TRIGGER temp AFTER DELETE ON person FOR EACH ROW BEGIN INSERT INTO log(name) VALUES('DELETE'); END % #删除触发器 DROP TRIGGER temp; ``` **Tips*
* ```text 如果是整数就是 INT 小数就是 DECIMAL(长度, 精度) 日期就用 DATATIME 字符串长度就用 CHAR 定长 不定长就用 VARCHAR ``` **[返回教程主页](https://www.monody.net/p/blog-page_3.html)*
*
评论