帮我写一份SQL教材的PPT,并带有例子
时间: 2024-03-09 19:48:46 浏览: 17
好的,以下是一份SQL教材的PPT大纲,带有具体的例子:
第一部分:基础概念
1. 什么是SQL
- SQL的全称是Structured Query Language,是一种用于管理关系型数据库的编程语言
2. 关系型数据库的基本概念
- 数据库、表、字段、记录
3. SQL的分类
- DDL、DML、DQL、DCL
第二部分:DDL语句
1. CREATE
- 创建数据库、表、视图、索引等
示例:
```
CREATE DATABASE mydb; -- 创建数据库
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(20),
age INT,
gender VARCHAR(10)
); -- 创建表
```
2. ALTER
- 修改数据库、表、视图、索引等
示例:
```
ALTER TABLE students ADD COLUMN email VARCHAR(50); -- 增加列
ALTER TABLE students MODIFY age SMALLINT; -- 修改列类型
ALTER TABLE students DROP COLUMN gender; -- 删除列
```
3. DROP
- 删除数据库、表、视图、索引等
示例:
```
DROP TABLE students; -- 删除表
DROP DATABASE mydb; -- 删除数据库
```
第三部分:DML语句
1. INSERT
- 插入数据
示例:
```
INSERT INTO students (id, name, age, gender)
VALUES (1, 'Tom', 18, 'Male'); -- 插入单条数据
INSERT INTO students (id, name, age, gender)
VALUES (2, 'Lucy', 20, 'Female'),
(3, 'Jack', 19, 'Male'); -- 插入多条数据
```
2. UPDATE
- 更新数据
示例:
```
UPDATE students SET age = 21 WHERE id = 1; -- 更新单条数据
UPDATE students SET age = age + 1 WHERE gender = 'Male'; -- 更新多条数据
```
3. DELETE
- 删除数据
示例:
```
DELETE FROM students WHERE id = 2; -- 删除单条数据
DELETE FROM students WHERE gender = 'Male'; -- 删除多条数据
```
第四部分:DQL语句
1. SELECT
- 查询数据
- 基本查询、多表查询、条件查询、排序、分组、聚合函数等
示例:
```
SELECT * FROM students; -- 查询表中所有数据
SELECT id, name, age FROM students WHERE gender = 'Male'; -- 查询符合条件的数据
SELECT name, COUNT(*) AS num FROM students GROUP BY name HAVING num > 1; -- 分组统计数据
```
2. 子查询
- 单行子查询、多行子查询、任意子查询
示例:
```
-- 单行子查询
SELECT name, age FROM students WHERE age = (SELECT MAX(age) FROM students);
-- 多行子查询
SELECT name, age FROM students WHERE age IN (SELECT age FROM students WHERE gender = 'Male');
-- 任意子查询
SELECT name, age FROM students WHERE age > ANY (SELECT age FROM students WHERE gender = 'Female');
```
第五部分:DCL语句
1. GRANT
- 授权
示例:
```
GRANT SELECT, INSERT ON students TO user1; -- 授予查询、插入权限给user1
```
2. REVOKE
- 收回授权
示例:
```
REVOKE INSERT ON students FROM user1; -- 收回user1的插入权限
```
第六部分:高级应用
1. 视图
- 创建视图、更新视图、删除视图
示例:
```
CREATE VIEW male_students AS
SELECT id, name FROM students WHERE gender = 'Male'; -- 创建视图
ALTER VIEW male_students AS
SELECT id, name, age FROM students WHERE gender = 'Male'; -- 更新视图
DROP VIEW male_students; -- 删除视图
```
2. 索引
- 创建索引、删除索引
示例:
```
CREATE INDEX idx_age ON students (age); -- 创建索引
DROP INDEX idx_age ON students; -- 删除索引
```
3. 事务
- 事务的概念、ACID特性、事务的控制
示例:
```
START TRANSACTION; -- 开始事务
INSERT INTO students (id, name, age) VALUES (4, 'Jerry', 22);
ROLLBACK; -- 回滚事务
COMMIT; -- 提交事务
```
第七部分:SQL的优化
1. 优化查询语句
- 查询语句的性能瓶颈、避免全表扫描、使用索引等
示例:
```
-- 查询语句的性能瓶颈
SELECT * FROM students WHERE name LIKE '%Tom%'; -- 不推荐使用模糊查询
-- 避免全表扫描
SELECT * FROM students WHERE gender = 'Male' AND age > 20; -- 使用索引提高查询效率
-- 使用索引
CREATE INDEX idx_name ON students (name);
SELECT * FROM students WHERE name = 'Tom'; -- 使用索引提高查询效率
```
2. 优化数据库结构
- 合理设计表结构、优化索引、规范数据类型等
示例:
```
-- 合理设计表结构
CREATE TABLE classes (
id INT PRIMARY KEY,
name VARCHAR(20),
teacher VARCHAR(20),
students_num INT
);
-- 优化索引
CREATE INDEX idx_name ON classes (name);
CREATE INDEX idx_teacher ON classes (teacher);
-- 规范数据类型
ALTER TABLE classes MODIFY students_num SMALLINT;
```