数据库知识点整理,包括数据库和表的创建,增删改查,子查询,关联查询,连接,交并差集,索引,序列,视图,各种函数,DDL、DML、DQL的实例。 存储过程,触发器,PL/SQL的基本使用。 每个知识点都有基于ORACLE scott 账户下employee 表的实例代码。 ### 数据库知识点整理 #### 一、数据库与表的基本操作 - **数据库和表的创建**: - 创建数据库:`CREATE DATABASE database_name;` - 创建表:`CREATE TABLE table_name (column_name datatype constraint);` - 示例:创建一个名为`employees`的表,包含员工ID(主键)、姓名、年龄、薪水、出生日期等字段。 ```sql CREATE TABLE employees ( id NUMBER PRIMARY KEY, name VARCHAR2(50) NOT NULL, age NUMBER, salary NUMBER, birth DATE ); ``` - **增删改查**: - **插入数据**:`INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);` - **注意事项**: - 必须满足表结构中的约束条件,如主键唯一性和非空约束。 - 插入数据时,数据的顺序和数量需与列保持一致,除非明确指定了列名。 - 使用单引号括起字符串值。 - 插入日期时建议使用`TO_DATE`函数,确保格式正确。 - 如果没有使用`DEFAULT`关键字指定默认值,则对应字段可能默认为`NULL`。 - **示例**:向`employees`表中插入一条新记录。 ```sql INSERT INTO employees (id, name, age, salary, birth) VALUES ('15010730', 'xr', '24', '100000', TO_DATE('1997-05-13', 'YYYY-MM-DD')); SELECT * FROM employees; ``` - **更新数据**:`UPDATE table_name SET column1=value1, column2=value2,... WHERE condition;` - **示例**:更新名为`xr`的员工年龄和出生日期。 ```sql UPDATE employees SET age='21', birth=TO_DATE('1997-05-13', 'YYYY-MM-DD') WHERE name='xr'; SELECT * FROM employees; ``` - **多表联合更新**:当涉及两个或多个表的数据更新时。 ```sql UPDATE productinfo JOIN priceinfo ON productinfo.pdtid = priceinfo.pdtid SET productinfo.pricecount = productinfo.pricecount + 1, priceinfo.realtimeprice = 100000 WHERE productinfo.pdtid = "5"; ``` - **删除数据**:`DELETE FROM table_name WHERE condition;` - **注意事项**: - `DELETE`语句必须添加`WHERE`子句来限制删除范围,避免误删全部记录。 - 使用`ROLLBACK`可以撤销删除操作。 - `TRUNCATE`命令可以快速清空表中的所有数据,但无法通过`ROLLBACK`撤销。 - **示例**:删除ID为`15010731`的记录。 ```sql DELETE FROM employees WHERE id = '15010731'; SELECT * FROM employees; ROLLBACK; SELECT * FROM employees; ``` - **多表删除**(使用连接):在删除涉及多个表的数据时。 ```sql DELETE productinfo.*, priceinfo.* FROM productinfo JOIN priceinfo ON productinfo.pdtid = priceinfo.pdtid WHERE productinfo.pdtid = "11"; ``` - **查询语句执行顺序**: - **FROM子句**:执行顺序为从后往前,从右往左。 - **WHERE子句**:执行顺序自下而上,从左到右。 - **GROUP BY子句**:执行顺序从左往右。 - **HAVING子句**:消耗资源,应在检索出所有记录之后对结果集进行过滤。 - **SELECT子句**:尽量减少使用通配符`*`。 - **ORDER BY子句**:执行顺序从左到右。 - **查询语句注意事项**: - `SELECT`子句中可以使用算术运算符(`+`、`-`、`*`、`/`)和函数。 - 可以为查询结果中的字段设置别名,例如`salary * 1.2 AS sal`。 - 使用`<>`表示不等于。 - `AND`和`OR`逻辑运算符,其中`AND`的优先级高于`OR`。 - `LIKE`和`NOT LIKE`用于模糊查询,其中`%`代表任意数量的字符,`_`代表单个字符。 - `IN`和`NOT IN`用于判断某值是否在给定列表中。 - `BETWEEN AND`用于判断某值是否在一个范围内。 - `IS NULL`和`IS NOT NULL`用于判断字段是否为空。 - `ANY`和`ALL`配合单行比较操作符使用,分别表示满足任一条件或所有条件。 - `DISTINCT`关键字用于去除查询结果中的重复行。 - `ORDER BY`子句用于排序结果集,支持升序(ASC)和降序(DESC),默认为升序。 - **子查询**:子查询是一种嵌套查询,可以作为更大的查询的一部分。 - **示例**:找出薪水高于平均薪水的所有员工。 ```sql SELECT * FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); ``` - **关联查询**:当需要从两个或多个表中检索数据时使用。 - **内连接**:返回两个表中匹配的记录。 ```sql SELECT e.name, d.department_name FROM employees e JOIN departments d ON e.department_id = d.department_id; ``` - **连接**:主要包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN)、全连接(FULL OUTER JOIN)。 - **示例**:左连接(LEFT JOIN)。 ```sql SELECT e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id; ``` - **交并差集**:用于处理集合操作。 - **UNION**:返回两个查询结果集的并集。 - **INTERSECT**:返回两个查询结果集的交集。 - **MINUS**:返回第一个查询结果集中不在第二个查询结果集中的记录。 - **索引**:用于提高数据检索速度。 - 创建索引:`CREATE INDEX index_name ON table_name (column_name);` - **序列**:自动递增的数值序列。 - 创建序列:`CREATE SEQUENCE sequence_name START WITH start_value INCREMENT BY increment_value;` - **视图**:虚拟表,由一个或多个表或视图中的数据组成。 - 创建视图:`CREATE VIEW view_name AS SELECT column1, column2,... FROM table_name WHERE condition;` - **存储过程**:一组预先编写的、经编译后存储在数据库中的SQL语句。 - 创建存储过程:使用`CREATE OR REPLACE PROCEDURE procedure_name (parameter_list)`。 - **触发器**:在特定事件发生时自动执行的一组SQL语句。 - 创建触发器:使用`CREATE TRIGGER trigger_name BEFORE/AFTER event ON table_name FOR EACH ROW`。 - **PL/SQL**:过程化SQL语言,增强了SQL的功能。 - 示例:声明变量、控制流结构等。 ```plsql DECLARE v_name employees.name%TYPE; BEGIN SELECT name INTO v_name FROM employees WHERE id = '15010730'; DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_name); END; ``` 以上是对数据库基本操作的一些重要知识点总结,涵盖了创建、修改、查询等方面的内容,对于初学者和需要复习的人来说都非常有用。
剩余37页未读,继续阅读
- WESTWOODS2020-07-30不是按照数据库目录的顺序整理的,有点乱
- 粉丝: 56
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2025计量基础知识考试题库及答案.doc
- 2025金属冶炼(炼钢)安全员考试题库(含答案).pptx
- 2025健康管理师三级专业能力考核试卷及答案.doc
- 2025交管12123驾驶证学法减分题库附含答案.doc
- 建筑工程员工工资表.xls
- 工程部薪酬2018年6月.doc
- 工程施工操作员薪酬管理制度.doc
- 2025教育心理学与德育工作基础知识点大全.doc
- 2025教育心理学与德育工作基础知识点整理总复习资料.doc
- 2025基本公共卫生知识考试题及答案.docx
- 2025基本公共卫生知识题库及答案.docx
- 2025基础知识与规范要求技能大赛题库及答案.docx
- 2025脊柱术后脑脊液漏应急预案考试试题(含答案).docx
- 2025计量基础知识题库及答案.docx
- 2025计算机二级考试全真试题库及答案(通用版).docx
- 2025计算机基础理论信息安全基本知识试题及答案.docx