没有合适的资源?快使用搜索试试~ 我知道了~
关系型数据库(如MySQL,PostgreSQL):高级查询技巧与数据分析.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 136 浏览量
2024-08-28
07:47:43
上传
评论
收藏 38KB DOCX 举报
温馨提示
关系型数据库(如MySQL,PostgreSQL):高级查询技巧与数据分析.docx
资源推荐
资源详情
资源评论
1
关系型数据库(如 MySQL,PostgreSQL):高级查询技巧与
数据分析
1 关系型数据库基础回顾
1.1 数据库与表结构设计
在设计关系型数据库时,首要任务是定义数据库的结构,这包括确定数据
库中需要哪些表,以及这些表之间的关系。表结构设计遵循以下原则:
� 实体识别:识别出系统中需要存储的实体,如用户、订单、产品
等。
� 属性定义:为每个实体定义属性,如用户实体可能有姓名、邮箱、
密码等属性。
� 关系建立:确定实体之间的关系,如用户与订单之间是一对多的
关系。
� 规范化:通过规范化过程减少数据冗余,提高数据完整性。
1.1.1 示例:设计一个简单的图书管理系统
假设我们需要设计一个图书管理系统,包含书籍、作者和出版社三个实体。
每个书籍有标题、作者、出版社和出版日期等属性。作者和出版社分别有自己
的属性,如作者的姓名和出版社的名称。
1.1.1.1 表结构设计
1. books 表
o id (INT, 主键)
o title (VARCHAR)
o author_id (INT, 外键)
o publisher_id (INT, 外键)
o publication_date (DATE)
2. authors 表
o id (INT, 主键)
o name (VARCHAR)
3. publishers 表
o id (INT, 主键)
o name (VARCHAR)
1.1.2 创建表的 SQL 语句
--
创建
authors
表
CREATE TABLE authors (
2
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
--
创建
publishers
表
CREATE TABLE publishers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
--
创建
books
表
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
author_id INT,
publisher_id INT,
publication_date DATE,
FOREIGN KEY (author_id) REFERENCES authors(id),
FOREIGN KEY (publisher_id) REFERENCES publishers(id)
);
1.2 SQL 语言基础与数据操作
SQL(Structured Query Language)是用于管理关系型数据库的标准语言。
它包括数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)和
数据控制语言(DCL)。
1.2.1 数据定义语言(DDL)
DDL 用于定义数据库的结构,包括创建、修改和删除表、索引、视图等。
1.2.1.1 示例:创建表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE
);
3
1.2.1.2 示例:修改表
ALTER TABLE users
ADD COLUMN phone VARCHAR(20);
1.2.2 数据操纵语言(DML)
DML 用于插入、更新和删除数据。
1.2.2.1 示例:插入数据
INSERT INTO users (username, password, email)
VALUES ('john_doe', 'password123', 'john@example.com');
1.2.2.2 示例:更新数据
UPDATE users
SET password = 'new_password'
WHERE username = 'john_doe';
1.2.2.3 示例:删除数据
DELETE FROM users
WHERE username = 'john_doe';
1.2.3 数据查询语言(DQL)
DQL 主要用于查询数据,其中最常用的是 SELECT 语句。
1.2.3.1 示例:基本查询
SELECT * FROM users;
1.2.3.2 示例:条件查询
SELECT * FROM users
WHERE email LIKE '%example.com';
4
1.2.3.3 示例:连接查询
SELECT books.title, authors.name, publishers.name
FROM books
JOIN authors ON books.author_id = authors.id
JOIN publishers ON books.publisher_id = publishers.id;
1.2.4 数据控制语言(DCL)
DCL 用于管理数据库的权限,包括授予和撤销权限。
1.2.4.1 示例:授予权限
GRANT SELECT, INSERT ON users TO 'new_user'@'localhost';
1.2.4.2 示例:撤销权限
REVOKE SELECT ON users FROM 'new_user'@'localhost';
通过以上基础回顾,我们了解了关系型数据库设计的基本原则以及 SQL 语
言的常用操作。在后续的高级查询技巧与数据分析模块中,我们将深入探讨如
何利用 SQL 进行复杂查询和数据分析。
2 高级查询技巧
2.1 子查询与嵌套查询
子查询,也称为嵌套查询,是在一个查询语句中包含另一个查询语句。这
种查询方式允许你使用内部查询的结果作为外部查询的一部分,从而实现更复
杂的数据筛选和处理。子查询可以出现在 SELECT、FROM、WHERE、INSERT、
UPDATE、DELETE 等语句中。
2.1.1 原理
子查询的执行顺序是先执行内部查询,然后将结果作为外部查询的一部分。
内部查询的结果可以是一个值、一个列表、或者一个表。子查询可以是单行子
查询或多行子查询,这取决于内部查询返回的结果集的大小。
2.1.2 示例
假设我们有一个 employees 表和一个 departments 表,employees 表中包含
员工信息和部门 ID,departments 表中包含部门 ID 和部门名称。我们想要找出
所有在“销售”部门工作的员工的姓名和工资。
5
--
创建示例数据
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(50)
);
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
salary DECIMAL(10, 2),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
INSERT INTO departments (department_id, department_name)
VALUES (1, '销售'), (2, '市场'), (3, '研发');
INSERT INTO employees (employee_id, first_name, last_name, salary, department_id)
VALUES (1, '张', '三', 5000.00, 1),
(2, '李', '四', 6000.00, 1),
(3, '王', '五', 7000.00, 2),
(4, '赵', '六', 8000.00, 3);
2.1.2.1 单行子查询
--
找出销售部门的
ID
SELECT department_id
FROM departments
WHERE department_name = '销售';
2.1.2.2 多行子查询
--
使用
IN
关键字找出所有在销售部门工作的员工
SELECT first_name, last_name, salary
FROM employees
WHERE department_id IN (
SELECT department_id
FROM departments
WHERE department_name = '销售'
);
剩余31页未读,继续阅读
资源评论
kkchenjj
- 粉丝: 1w+
- 资源: 5460
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功