### SQL语句大全知识点解析 #### 一、数据操作 **1. SELECT** - **功能:** 用于从数据库表中检索数据行和列。 - **语法示例:** `SELECT * FROM table_name WHERE column_name operator value;` - **解释:** 这里`*`表示选择所有列;`table_name`是目标表的名字;`WHERE`子句用于指定过滤条件,`column_name operator value`则是具体的条件表达式。 - 示例: - `SELECT * FROM stock_information WHERE stockid = 'str(nid)' AND stockname LIKE '%findthis%';` - 从`stock_information`表中选择所有列,并且筛选出`stockid`等于某个值(这里假设是通过函数`str(nid)`得到),同时`stockname`包含特定字符串`findthis`的记录。 **2. INSERT** - **功能:** 向数据库表添加新数据行。 - **语法示例:** `INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` - **解释:** 在`table_name`表中插入数据,括号内列出要插入数据的列名,后面的VALUES部分对应各列的值。 - 示例: - `INSERT INTO stock_information (stockid, stockname) VALUES ('123', 'Example Stock');` **3. DELETE** - **功能:** 从数据库表中删除数据行。 - **语法示例:** `DELETE FROM table_name WHERE condition;` - **解释:** 删除`table_name`表中满足`condition`条件的所有行。 - 示例: - `DELETE FROM stock_information WHERE stocknumber < 1000;` **4. UPDATE** - **功能:** 更新数据库表中的数据。 - **语法示例:** `UPDATE table_name SET column1=value1, column2=value2, ... WHERE condition;` - **解释:** 更新`table_name`表中的数据,将`column1`设置为`value1`等,只更新满足`condition`条件的行。 - 示例: - `UPDATE employee SET e_wage = CASE WHEN job_level = '1' THEN e_wage * 1.08 WHEN job_level = '2' THEN e_wage * 1.07 WHEN job_level = '3' THEN e_wage * 1.06 ELSE e_wage * 1.05 END WHERE job_level IN ('1', '2', '3');` #### 二、数据定义 **1. CREATE TABLE** - **功能:** 创建一个数据库表。 - **语法示例:** `CREATE TABLE table_name (column1 datatype, column2 datatype, ...);` - **解释:** 创建名为`table_name`的新表,其中包含指定的数据列和类型。 - 示例: - `CREATE TABLE employee (id INT, name VARCHAR(50), salary DECIMAL(10,2));` **2. DROP TABLE** - **功能:** 从数据库中删除表。 - **语法示例:** `DROP TABLE table_name;` - **解释:** 删除名为`table_name`的表。 **3. ALTER TABLE** - **功能:** 修改数据库表结构。 - **语法示例:** `ALTER TABLE table_name ADD column_name datatype;` - **解释:** 向`table_name`表中添加新的列`column_name`,并指定其数据类型`datatype`。 - 示例: - `ALTER TABLE employee ADD department_id INT;` **4. CREATE VIEW** - **功能:** 创建一个视图。 - **语法示例:** `CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;` - **解释:** 创建名为`view_name`的视图,该视图基于`table_name`表的选择,并可以指定条件。 - 示例: - `CREATE VIEW top_employees AS SELECT name, salary FROM employee WHERE salary > 50000;` **5. DROP VIEW** - **功能:** 从数据库中删除视图。 - **语法示例:** `DROP VIEW view_name;` - **解释:** 删除名为`view_name`的视图。 **6. CREATE INDEX** - **功能:** 为数据库表创建一个索引。 - **语法示例:** `CREATE INDEX index_name ON table_name (column1, column2, ...);` - **解释:** 在`table_name`表上为列`column1`, `column2`, ...创建名为`index_name`的索引。 - 示例: - `CREATE INDEX idx_employee_salary ON employee (salary);` **7. DROP INDEX** - **功能:** 从数据库中删除索引。 - **语法示例:** `DROP INDEX index_name;` - **解释:** 删除名为`index_name`的索引。 **8. CREATE PROCEDURE** - **功能:** 创建一个存储过程。 - **语法示例:** `CREATE PROCEDURE procedure_name (param1 datatype, param2 datatype, ...) AS BEGIN SQL statements; END;` - **解释:** 定义名为`procedure_name`的存储过程,接受参数`param1`, `param2`, ...,并执行一系列SQL语句。 - 示例: - `CREATE PROCEDURE sp_get_top_employee (@min_salary DECIMAL(10,2)) AS BEGIN SELECT name, salary FROM employee WHERE salary > @min_salary; END;` **9. DROP PROCEDURE** - **功能:** 从数据库中删除存储过程。 - **语法示例:** `DROP PROCEDURE procedure_name;` - **解释:** 删除名为`procedure_name`的存储过程。 **10. CREATE TRIGGER** - **功能:** 创建一个触发器。 - **语法示例:** `CREATE TRIGGER trigger_name ON table_name AFTER INSERT, UPDATE, DELETE AS BEGIN SQL statements; END;` - **解释:** 定义名为`trigger_name`的触发器,在对`table_name`表进行`INSERT`, `UPDATE`, `DELETE`操作之后执行一系列SQL语句。 - 示例: - `CREATE TRIGGER tr_log_changes ON employee AFTER UPDATE AS BEGIN INSERT INTO audit_log (action, timestamp, details) VALUES ('UPDATE', GETDATE(), 'Employee details updated.'); END;` **11. DROP TRIGGER** - **功能:** 从数据库中删除触发器。 - **语法示例:** `DROP TRIGGER trigger_name;` - **解释:** 删除名为`trigger_name`的触发器。 **12. CREATE SCHEMA** - **功能:** 向数据库添加一个新模式。 - **语法示例:** `CREATE SCHEMA schema_name;` - **解释:** 创建名为`schema_name`的新模式。 **13. DROP SCHEMA** - **功能:** 从数据库中删除一个模式。 - **语法示例:** `DROP SCHEMA schema_name;` - **解释:** 删除名为`schema_name`的模式。 **14. CREATE DOMAIN** - **功能:** 创建一个数据值域。 - **语法示例:** `CREATE DOMAIN domain_name AS datatype [ CONSTRAINT constraint_name CHECK (expression) ];` - **解释:** 创建名为`domain_name`的新数据域,其数据类型为`datatype`,并且可选地定义约束`constraint_name`来检查域的值是否满足条件`expression`。 - 示例: - `CREATE DOMAIN positive_number AS INT CONSTRAINT pos_num_check CHECK (value > 0);` **15. ALTER DOMAIN** - **功能:** 改变域定义。 - **语法示例:** `ALTER DOMAIN domain_name [ RENAME TO new_domain_name ] [ SET DEFAULT default_value ] [ SET NOT NULL ] [ DROP CONSTRAINT constraint_name ];` - **解释:** 修改域`domain_name`的定义,例如重命名、设置默认值、设置非空约束或移除约束。 - 示例: - `ALTER DOMAIN positive_number SET DEFAULT 1;` **16. DROP DOMAIN** - **功能:** 从数据库中删除一个域。 - **语法示例:** `DROP DOMAIN domain_name;` - **解释:** 删除名为`domain_name`的域。 #### 三、数据控制 **1. GRANT** - **功能:** 授予用户访问权限。 - **语法示例:** `GRANT permission ON object TO user;` - **解释:** 授予用户`user`对`object`的`permission`权限。 - 示例: - `GRANT SELECT ON employee TO user1;` **2. DENY** - **功能:** 拒绝用户访问。 - **语法示例:** `DENY permission ON object TO user;` - **解释:** 拒绝用户`user`对`object`的`permission`权限。 - 示例: - `DENY UPDATE ON employee TO user1;` **3. REVOKE** - **功能:** 解除用户访问权限。 - **语法示例:** `REVOKE permission ON object FROM user;` - **解释:** 解除用户`user`对`object`的`permission`权限。 - 示例: - `REVOKE SELECT ON employee FROM user1;` #### 四、事务控制 **1. COMMIT** - **功能:** 结束当前事务。 - **语法示例:** `COMMIT;` - **解释:** 提交当前事务中的所有更改。 **2. ROLLBACK** - **功能:** 中止当前事务。 - **语法示例:** `ROLLBACK;` - **解释:** 撤销当前事务中的所有更改。 **3. SET TRANSACTION** - **功能:** 定义当前事务数据访问特征。 - **语法示例:** `SET TRANSACTION ISOLATION LEVEL level;` - **解释:** 设置事务的隔离级别`level`,例如`READ UNCOMMITTED`, `READ COMMITTED`, `REPEATABLE READ`, `SERIALIZABLE`。 #### 五、程序化SQL **1. DECLARE** - **功能:** 为查询设定游标。 - **语法示例:** `DECLARE cursor_name CURSOR FOR SELECT statement;` - **解释:** 定义名为`cursor_name`的游标,该游标指向由`SELECT statement`返回的结果集。 - 示例: - `DECLARE emp_cursor CURSOR FOR SELECT * FROM employee;` **2. EXPLAIN** - **功能:** 为查询描述数据访问计划。 - **语法示例:** `EXPLAIN PLAN FOR SELECT statement;` - **解释:** 生成`SELECT statement`的执行计划,用于分析查询性能。 **3. OPEN** - **功能:** 检索查询结果打开一个游标。 - **语法示例:** `OPEN cursor_name;` - **解释:** 打开游标`cursor_name`。 **4. FETCH** - **功能:** 检索一行查询结果。 - **语法示例:** `FETCH NEXT FROM cursor_name INTO variable1, variable2, ...;` - **解释:** 从游标`cursor_name`中获取下一行,并将结果存储到变量`variable1`, `variable2`, ...中。 **5. CLOSE** - **功能:** 关闭游标。 - **语法示例:** `CLOSE cursor_name;` - **解释:** 关闭游标`cursor_name`。 **6. PREPARE** - **功能:** 为动态执行准备SQL语句。 - **语法示例:** `PREPARE stmt_name FROM 'SQL statement';` - **解释:** 准备名为`stmt_name`的SQL语句,用于后续的动态执行。 - 示例: - `PREPARE get_employee FROM 'SELECT * FROM employee WHERE id = ?';` **7. EXECUTE** - **功能:** 动态地执行SQL语句。 - **语法示例:** `EXECUTE stmt_name USING @variable1, @variable2, ...;` - **解释:** 执行之前准备好的语句`stmt_name`,使用变量`@variable1`, `@variable2`, ...作为参数。 - 示例: - `EXECUTE get_employee USING 100;` **8. DESCRIBE** - **功能:** 描述准备好的查询。 - **语法示例:** `DESCRIBE stmt_name;` - **解释:** 显示准备好的语句`stmt_name`的信息。 #### 六、局部变量 **1. DECLARE** - **功能:** 声明局部变量。 - **语法示例:** `DECLARE @variable datatype;` - **解释:** 声明名为`@variable`的局部变量,其数据类型为`datatype`。 - 示例: - `DECLARE @id CHAR(10);` **2. SET** - **功能:** 设置局部变量的值。 - **语法示例:** `SET @variable = value;` - **解释:** 将变量`@variable`的值设置为`value`。 - 示例: - `SET @id = '10010001';` **3. SELECT** - **功能:** 使用SELECT语句为局部变量赋值。 - **语法示例:** `SELECT @variable = value;` - **解释:** 与SET类似,但也可以用于更复杂的表达式或子查询。 - 示例: - `SELECT @id = '10010001';` **4. IF...ELSE** - **功能:** 条件分支语句。 - **语法示例:** ``` DECLARE @x INT, @y INT; SET @x = 1; SET @y = 2; IF @x > @y PRINT 'x > y'; ELSE IF @y > @x PRINT 'y > x'; ELSE PRINT 'x == y'; ``` - **解释:** 根据条件执行不同的代码块。 **5. WHILE...CONTINUE...BREAK** - **功能:** 循环语句。 - **语法示例:** ``` DECLARE @x INT, @y INT; SET @x = 1; SET @y = 1; WHILE @x < 3 BEGIN PRINT @x; WHILE @y < 3 BEGIN SELECT @c = 100 * @x + @y; PRINT @c; SET @y = @y + 1; END SET @x = @x + 1; SET @y = 1; END ``` - **解释:** 使用WHILE循环来重复执行一组语句,直到某个条件不再满足为止。 **6. WAITFOR** - **功能:** 等待一定时间或特定时间点。 - **语法示例:** `WAITFOR DELAY 'HH:MM:SS';` - **解释:** 等待指定的时间段。 - 示例: - `WAITFOR DELAY '01:02:03';` #### 总结 以上是关于SQL语句大全中的主要知识点介绍,涵盖了数据操作、数据定义、数据控制、事务控制、程序化SQL以及变量使用的各个方面。通过这些基本的SQL语句,可以有效地管理和操作数据库中的数据。


























- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 源码基于ESP32和BLE的室内灯光控制系统
- Endnote软件Style-ens后缀重庆大学毕业论文参考文献格式自动排版极优亲测
- 20250806_101125.m4a
- 适用于Qt5.12.12的MQTT库(0积分,如果不是0积分就是CSDN搞事)
- mybatis 练习-连表查询-多种获取连接的方式
- NtripClient Android应用:配置服务器IP、端口和挂载点,支持RTK差分数据获取与断线重连
- 智能饮水机控制系统设计
- indexedDB-代码块
- 永磁同步电机无感位置估算仿真磁链观测FOCsimulink模型
- 使用ssd算法识别和定位图像
- 2025年 最新收录整理 500+ 个高质量的 C/C++ 项目,包括但不限于核心开发、基础工具、系统与并发、系统编程、图形处理、网络通信、数据处理、应用框架、开源工具、嵌入式开发等多个领域 适合学习
- 基于YOLOv8的直肠息肉检测系统Python源码 ONNX模型 评估指标曲线 精美GUI界面
- 提供操作视频 不同天线数量MIMO通信系统的ZF均衡器和ML均衡器误码率对比
- 基于Matlab的MVDR波束形成器
- 基于Arduino的电机驱动代码
- 四端HVDC下垂控制_下垂控制_直流下垂_hvdc


