SQL语言(Structured Query Language,结构化查询语言)

是用于管理关系型数据库系统的标准化语言。SQL语言可分为以下几类:

  1. 数据查询语言(Data Query Language,DQL):DQL用于从数据库中获取所需的数据。它的主要命令是SELECT,用于选择特定列或表中的所有数据。DQL允许用户根据特定条件筛选数据,例如使用WHERE子句来定义过滤条件。
  2. 数据定义语言(Data Definition Language,DDL):DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、ALTER和DROP等。DDL语句用于定义数据库的结构,例如创建表、定义列和约束等。
  3. 数据操作语言(Data Manipulation Language,DML):DML用于在数据库中插入、更新和删除数据。主要命令包括INSERT、UPDATE和DELETE。DML允许用户向表中插入新记录、更新现有记录或删除特定记录。
  4. 数据控制语言(Data Control Language,DCL):DCL用于授予或撤销用户对数据库对象的访问权限,并管理数据库的安全性。主要命令包括GRANT和REVOKE,用于授予和撤销访问权限。DCL还可以用于管理用户账户、角色和权限。

这些分类是为了清晰地区分SQL语言的不同功能和目的。DQL主要用于查询和检索数据,DDL用于定义数据库结构,DML用于操作数据,而DCL用于管理数据库访问权限和安全性。通过这种分类,SQL语言提供了一种简洁、统一的方法来操作和管理关系型数据库系统。

DQL

DQL有哪些,列举所有语法

DQL(数据查询语言)是SQL语言中用于从数据库中检索数据的部分。以下是DQL的一些常见语法:

  1. SELECT:用于选择要从数据库中检索的列。 SELECT 列名 FROM 表名;
  2. WHERE:用于在查询中指定条件,筛选满足条件的数据。 SELECT 列名 FROM 表名 WHERE 条件;
  3. DISTINCT:用于返回唯一的值,消除结果集中的重复行。 SELECT DISTINCT 列名 FROM 表名;
  4. ORDER BY:用于对结果进行排序,默认升序排列。 SELECT 列名 FROM 表名 ORDER BY 列名 ASC/DESC;
  5. LIMIT:用于限制结果集的行数。 SELECT 列名 FROM 表名 LIMIT 行数;
  6. GROUP BY:用于将结果集按照指定列进行分组。 SELECT 列名 FROM 表名 GROUP BY 列名;
  7. HAVING:用于在GROUP BY后的结果集上进行进一步的筛选。 SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 条件;
  8. JOIN:用于在多个表之间建立关系,通过指定连接条件来获取相关数据。 SELECT 列名 FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;
  9. UNION:用于将两个或多个SELECT语句的结果合并成一个结果集。 SELECT 列名 FROM 表名1 UNION SELECT 列名 FROM 表名2;
  10. COUNT:用于计算满足条件的行数。 SELECT COUNT(*) FROM 表名;
  11. AVG:用于计算满足条件的列的平均值。 SELECT AVG(列名) FROM 表名;
  12. SUM:用于计算满足条件的列的总和。 SELECT SUM(列名) FROM 表名;
  13. MIN:用于计算满足条件的列的最小值。 SELECT MIN(列名) FROM 表名;
  14. MAX:用于计算满足条件的列的最大值。 SELECT MAX(列名) FROM 表名;
  15. EXISTS:用于检查子查询是否返回结果。 SELECT * FROM 表名 WHERE EXISTS (子查询);
  16. IN:用于在查询中设置多个可能的值。 SELECT 列名 FROM 表名 WHERE 列名 IN (值1, 值2, 值3);
  17. LIKE:用于在查询中模糊匹配数据。 SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';
  18. BETWEEN:用于指定范围条件。 SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
  19. AS:用于给查询结果的列或表取别名。 SELECT 列名 AS 别名 FROM 表名;
  20. NULL:用于检查列中是否包含NULL值。 SELECT 列名 FROM 表名 WHERE 列名 IS NULL;
  21. AS:用于在查询中创建别名,使结果更易读或在查询中使用别名进行计算。 SELECT 列名 AS 别名 FROM 表名;
  22. EXISTS:用于检查子查询返回的结果是否存在。 SELECT * FROM 表名 WHERE EXISTS (子查询);
  23. LIKE:用于在查询中进行模式匹配。 SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';
  24. NOT:用于否定一个条件。 SELECT 列名 FROM 表名 WHERE NOT 条件;
  25. ALL:用于比较一个值和子查询返回的所有值。 SELECT 列名 FROM 表名 WHERE 列名 操作符 ALL (子查询);
  26. ANY/SOME:用于比较一个值和子查询返回的任意一个值。 SELECT 列名 FROM 表名 WHERE 列名 操作符 ANY/SOME (子查询);
  27. EXISTS和NOT EXISTS:用于检查子查询返回的结果是否存在或不存在。 SELECT * FROM 表名 WHERE EXISTS (子查询); SELECT * FROM 表名 WHERE NOT EXISTS (子查询);
  28. BETWEEN AND:用于指定一个范围的值。 SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
  29. CONCAT:用于将两个或多个字符串连接在一起。 SELECT CONCAT(列1, 列2) AS 别名 FROM 表名;
  30. UPPER/LOWER:用于将字符串转换为大写/小写。 SELECT UPPER(列名) FROM 表名; SELECT LOWER(列名) FROM 表名;
  31. COUNT DISTINCT:用于计算满足条件的不重复值的数量。 SELECT COUNT(DISTINCT 列名) FROM 表名;
  32. CASE:用于在查询结果中执行条件逻辑。 SELECT 列名, CASE WHEN 条件 THEN 结果1 ELSE 结果2 END AS 别名 FROM 表名;
  33. SUBSTRING:用于提取字符串的子串。 SELECT SUBSTRING(列名, 开始位置, 长度) FROM 表名;
  34. COALESCE:用于返回第一个非NULL值。 SELECT COALESCE(列名1, 列名2, 列名3) FROM 表名;
  35. LENGTH:用于获取字符串的长度。 SELECT LENGTH(列名) FROM 表名;
  36. TRIM:用于去除字符串两端的空格。 SELECT TRIM(列名) FROM 表名;
  37. ROUND:用于对数值进行四舍五入。 SELECT ROUND(列名, 小数位数) FROM 表名;
  38. DATE:用于获取日期的部分,如年、月、日。 SELECT DATE(日期列) FROM 表名;
  39. NOW:用于获取当前日期和时间。 SELECT NOW() FROM 表名;
  40. CASE WHEN ELSE END:用于执行条件逻辑。 SELECT 列名, CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ELSE 结果3 END AS 别名 FROM 表名;
  41. GROUP BY ROLLUP:用于生成多层次的汇总行。 SELECT 列名1, 列名2, SUM(列名3) FROM 表名 GROUP BY ROLLUP (列名1, 列名2);
  42. OFFSET FETCH:用于分页查询结果。 SELECT 列名 FROM 表名 OFFSET 起始位置 ROWS FETCH NEXT 获取行数 ROWS ONLY;
  43. CROSS JOIN:用于获取两个表的笛卡尔积。 SELECT 列名 FROM 表名1 CROSS JOIN 表名2;
  44. UNION ALL:用于合并两个或多个SELECT语句的结果,包括重复的行。 SELECT 列名 FROM 表名1 UNION ALL SELECT 列名 FROM 表名2;
  45. INTERSECT:用于获取两个或多个SELECT语句结果集之间的交集。 SELECT 列名 FROM 表名1 INTERSECT SELECT 列名 FROM 表名2;
  46. EXCEPT/ MINUS:用于获取第一个SELECT语句结果集相对于第二个SELECT语句结果集的差集。 SELECT 列名 FROM 表名1 EXCEPT/MINUS SELECT 列名 FROM 表名2;
  47. EXISTS/NOT EXISTS:用于检查子查询返回的结果是否存在或不存在。 SELECT * FROM 表名 WHERE EXISTS (子查询); SELECT * FROM 表名 WHERE NOT EXISTS (子查询);
  48. OVER():用于执行窗口函数,对查询结果进行分组和排序。 SELECT 列名, 窗口函数() OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
  49. GROUP_CONCAT:用于将多个行的值拼接为一个字符串。 SELECT 列名, GROUP_CONCAT(列名) FROM 表名 GROUP BY 列名;
  50. ROW_NUMBER:为查询结果的每一行分配一个唯一的行号。 SELECT ROW_NUMBER() OVER (ORDER BY 列名) AS 行号, 列名 FROM 表名;
  51. TOP:用于获取查询结果的前几行记录。 SELECT TOP (n) 列名 FROM 表名;
  52. FIRST:用于获取查询结果的第一行记录。 SELECT FIRST(n) 列名 FROM 表名;
  53. LAST:用于获取查询结果的最后一行记录。 SELECT LAST(n) 列名 FROM 表名;
  54. SAMPLE:用于从查询结果中随机获取一部分记录。 SELECT SAMPLE(n) 列名 FROM 表名;
  55. PIVOT:用于将行数据转换为列数据。 SELECT 列名1, [列名2], [列名3] FROM 表名 PIVOT (聚合函数(列名) FOR 列名2 IN ([列名2], [列名3])) AS 别名;
  56. UNPIVOT:用于将列数据转换为行数据。 SELECT 列名1, 列名2, 列名3 FROM 表名 UNPIVOT (值列名 FOR 列名2 IN ([列名2], [列名3])) AS 别名;
  57. CROSS APPLY:用于将右表的每一行与左表的行进行组合。 SELECT 列名 FROM 表名1 CROSS APPLY (SELECT 列名 FROM 表名2) AS 别名;
  58. OUTER APPLY:用于将右表的每一行与左表的行进行组合,包括未匹配的行。 SELECT 列名 FROM 表名1 OUTER APPLY (SELECT 列名 FROM 表名2) AS 别名;
  59. FOR XML:用于将查询结果转换为XML格式。 SELECT 列名 FROM 表名 FOR XML AUTO|RAW|EXPLICIT;
  60. XMLQUERY:用于在XML数据上执行XPath查询。 SELECT 列名 FROM 表名 WHERE XMLQUERY('XPath表达式' PASSING 列名 RETURNING CONTENT);
  61. OFFSET FETCH:用于分页查询结果。 SELECT 列名 FROM 表名 ORDER BY 列名 OFFSET 偏移量 ROWS FETCH FIRST 行数 ROWS ONLY;
  62. MATCH AGAINST:用于全文搜索。 SELECT 列名 FROM 表名 WHERE MATCH(列名) AGAINST('搜索词');
  63. DATE_FORMAT:用于将日期格式化为指定的字符串格式。 SELECT DATE_FORMAT(日期列名, '格式字符串') FROM 表名;
  64. BINARY:用于区分大小写进行比较。 SELECT 列名 FROM 表名 WHERE BINARY 列名 = '字符串';
  65. JSON_VALUE:用于提取JSON数据中的值。 SELECT 列名->'$.键' FROM 表名;
  66. OUTER JOIN:用于返回左表和右表的匹配记录以及左表和右表单独的非匹配记录。 SELECT 列名 FROM 表名1 LEFT|RIGHT|FULL OUTER JOIN 表名2 ON 表名1.列名 = 表名2.列名;
  67. ROWS BETWEEN:用于在窗口函数中指定行范围。 SELECT 列名, SUM(列名) OVER (PARTITION BY 列名 ORDER BY 列名 ROWS BETWEEN n PRECEDING AND m FOLLOWING) FROM 表名;
  68. LEAD:用于在结果集中获取指定行后的值。 SELECT 列名, LEAD(列名, n) OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
  69. LAG:用于在结果集中获取指定行前的值。 SELECT 列名, LAG(列名, n) OVER (PARTITION BY 列名 ORDER BY 列名) FROM 表名;
  70. XMLAGG:用于将多行的XML数据聚合为单个XML值。 SELECT XMLAGG(XMLELEMENT(E, 列名)) FROM 表名;
  71. SESSION_USER:用于获取当前会话用户的用户名。 SELECT SESSION_USER FROM 表名;
  72. DATABASE:用于获取当前数据库的名称。 SELECT DATABASE FROM 表名;
  73. RANK:用于为结果集中的行分配排名。 SELECT 列名, RANK() OVER (ORDER BY 列名) FROM 表名;
  74. NTILE:用于将结果集划分为指定数量的桶,并为每个桶分配一个编号。 SELECT 列名, NTILE(n) OVER (ORDER BY 列名) FROM 表名;
  75. FORMAT:用于将数值格式化为指定的字符串格式。 SELECT FORMAT(数值, '格式字符串') FROM 表名;
  76. BIT_LENGTH:用于获取位(bit)的长度。 SELECT BIT_LENGTH(列名) FROM 表名;
  77. SOUNDEX:用于计算字符串的SOUNDEX值,用于模糊匹配。 SELECT SOUNDEX(列名) FROM 表名;
  78. VAR_SAMP:用于计算样本方差。 SELECT VAR_SAMP(列名) FROM 表名;
  79. STDDEV_POP:用于计算总体标准差。 SELECT STDDEV_POP(列名) FROM 表名;
  80. RAND:用于生成随机数。 SELECT RAND() FROM 表名;
  81. COVAR_POP:用于计算总体协方差。 SELECT COVAR_POP(列1, 列2) FROM 表名;
  82. TRUNCATE:用于截断数值到指定的小数位数。 SELECT TRUNCATE(列名, 小数位数) FROM 表名;
  83. CURRENT_TIMESTAMP:用于获取当前的日期和时间。 SELECT CURRENT_TIMESTAMP FROM 表名;
  84. GETDATE:用于获取当前的日期和时间(针对特定数据库系统)。 SELECT GETDATE() FROM 表名;

非常抱歉之前的回答还是没有满足您的要求。以下是更多的DQL语法示例:

  1. DATEADD:用于在日期上添加指定的时间间隔。 SELECT DATEADD(时间间隔, 数量, 日期列名) FROM 表名;
  2. DATEDIFF:用于计算两个日期之间的时间间隔。 SELECT DATEDIFF(时间间隔, 开始日期, 结束日期) FROM 表名;
  3. INITCAP:用于将字符串的每个单词的首字母大写。 SELECT INITCAP(列名) FROM 表名;
  4. REGEXP_LIKE:用于在正则表达式模式下进行匹配。 SELECT 列名 FROM 表名 WHERE REGEXP_LIKE(列名, '正则表达式');
  5. XMLAGG:用于将多个行的XML数据聚合为单个XML值。 SELECT XMLAGG(XMLELEMENT(E, 列名)) FROM 表名;
  6. DECODE:用于执行条件判断并返回对应的值。 SELECT DECODE(列名, '值1', '结果1', '值2', '结果2', '结果3') FROM 表名;
  7. TRIM:用于去除字符串开头和结尾的指定字符。 SELECT TRIM(字符 FROM 列名) FROM 表名;
  8. HAVING COUNT:用于筛选GROUP BY的结果。 SELECT 列名, COUNT() FROM 表名 GROUP BY 列名 HAVING COUNT() > n;
  9. ROW_NUMBER() OVER (PARTITION BY 列名 ORDER BY 列名) AS 别名:用于对分组后的结果进行编号。 SELECT 列名, ROW_NUMBER() OVER (PARTITION BY 列名 ORDER BY 列名) AS 别名 FROM 表名;
  10. EXISTS (SELECT 1 FROM 表名 WHERE 条件):用于检查子查询返回的结果是否存在。 SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 表名 WHERE 条件);
  11. EXTRACT:用于从日期或时间值中提取指定的部分(年、月、日等)。 SELECT EXTRACT(部分 FROM 日期列名) FROM 表名;
  12. ROLLUP:用于生成多层次的汇总行,按照指定的列进行分组。 SELECT 列名1, 列名2, SUM(列名3) FROM 表名 GROUP BY ROLLUP (列名1, 列名2);
  13. REVERSE:用于将字符串反转。 SELECT REVERSE(列名) FROM 表名;
  14. LISTAGG:用于将多个行的值拼接为一个字符串,可以指定分隔符。 SELECT 列名, LISTAGG(列名, '分隔符') WITHIN GROUP (ORDER BY 排序列名) FROM 表名 GROUP BY 列名;
  15. CUME_DIST:用于计算当前行在分组中的累计分布比例。 SELECT 列名, CUME_DIST() OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
  16. LEAD和LAG(带偏移量):用于在结果集中获取指定行前后的值,可以指定偏移量。  SELECT 列名, LEAD(列名, 偏移量) OVER (ORDER BY 排序列名) FROM 表名; SELECT 列名, LAG(列名, 偏移量) OVER (ORDER BY 排序列名) FROM 表名;
  17. PERCENT_RANK:用于计算当前行在分组中的百分比排名。  SELECT 列名, PERCENT_RANK() OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
  18. STR_TO_DATE:用于将字符串转换为日期格式。  SELECT STR_TO_DATE(字符串, '格式') FROM 表名;
  19. COALESCE:用于返回参数中的第一个非NULL值。  SELECT COALESCE(列名1, 列名2, 列名3) FROM 表名;
  20. INITCAP:用于将字符串的每个单词的首字母大写。  SELECT INITCAP(列名) FROM 表名;
  21. XMLFOREST:用于将多列数据封装为XML元素。  SELECT XMLFOREST(列名1 AS 元素名1, 列名2 AS 元素名2) FROM 表名;
  22. FLOOR:用于向下取整。  SELECT FLOOR(列名) FROM 表名;
  23. CEILING:用于向上取整。  SELECT CEILING(列名) FROM 表名;
  24. STRING_AGG:用于将多个行的值拼接为一个字符串,可以指定分隔符。  SELECT STRING_AGG(列名, '分隔符') FROM 表名;
  25. DATE_TRUNC:用于将日期截断为指定的单位。  SELECT DATE_TRUNC('单位', 日期列名) FROM 表名;
  26. ARRAY_AGG:用于将多个行的值聚合为一个数组。  SELECT ARRAY_AGG(列名) FROM 表名;
  27. TRIM:用于去除字符串前后指定的字符。  SELECT TRIM(指定字符 FROM 列名) FROM 表名;
  28. XMLQUERY:用于执行XPath查询并返回结果。  SELECT XMLQUERY('XPath表达式' PASSING 列名 RETURNING CONTENT) FROM 表名;
  29. JSON_ARRAY:用于创建JSON数组。  SELECT JSON_ARRAY(列名1, 列名2) FROM 表名;
  30. SESSIONTIMEZONE:获取当前会话的时区。  SELECT SESSIONTIMEZONE FROM DUAL;
  31. DECODE:用于执行条件判断并返回对应值。  SELECT DECODE(列名, '条件1', '结果1', '条件2', '结果2', '结果3') FROM 表名;
  32. EXP:用于计算指定数值的指数。  SELECT EXP(数值) FROM 表名;
  33. POWER:用于计算指定数值的幂。  SELECT POWER(数值, 幂) FROM 表名;
  34. SQRT:用于计算指定数值的平方根。  SELECT SQRT(数值) FROM 表名;
  35. REPLACE:用于替换字符串中的指定字符。  SELECT REPLACE(列名, '要替换的字符', '替换后的字符') FROM 表名;
  36. PATINDEX:用于在字符串中查找指定模式的起始位置。  SELECT PATINDEX('模式', 列名) FROM 表名;
  37. LEAST:用于返回参数中的最小值。  SELECT LEAST(列名1, 列名2, 列名3) FROM 表名;
  38. GREATEST:用于返回参数中的最大值。  SELECT GREATEST(列名1, 列名2, 列名3) FROM 表名;
  39. NVL:用于将NULL值替换为指定的非NULL值。  SELECT NVL(列名, 替代值) FROM 表名;
  40. INITRANS:设置表的初始事务并发数。  ALTER TABLE 表名 INITRANS 数字;
  41. MAXTRANS:设置表的最大事务并发数。  ALTER TABLE 表名 MAXTRANS 数字;
  42. SAVEPOINT:创建一个命名的保存点,用于回滚到特定的工作点。  SAVEPOINT 保存点名称;
  43. ROLLBACK TO SAVEPOINT:回滚到指定的保存点。  ROLLBACK TO SAVEPOINT 保存点名称;
  44. DATE_PART:从日期或时间值中提取指定的部分,类似于EXTRACT。  SELECT DATE_PART('部分', 日期列名) FROM 表名;
  45. ARRAY_INSERT:在数组中插入一个元素。  SELECT ARRAY_INSERT(数组, 索引, 元素) FROM 表名;
  46. LOG:计算指定数值的自然对数。  SELECT LOG(数值) FROM 表名;
  47. CAST:用于将一个数据类型转换为另一个数据类型。  SELECT CAST(列名 AS 目标数据类型) FROM 表名;
  48. FIRST_VALUE:用于获取分组中的第一个值。  SELECT 列名, FIRST_VALUE(列名) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
  49. STRING_SPLIT:用于将一个字符串拆分为多个子字符串。  SELECT value FROM STRING_SPLIT(源字符串, 分隔符);
  50. OVERLAPS:用于检查两个时间范围是否有重叠。  SELECT * FROM 表名 WHERE (开始时间, 结束时间) OVERLAPS ('2022-01-01', '2022-01-31');
  51. CONCAT_WS:用于将多个字符串连接在一起,使用指定的分隔符。  SELECT CONCAT_WS(分隔符, 列名1, 列名2) FROM 表名;
  52. JSON_QUERY:用于在JSON数据中执行SQL样式的查询。  SELECT JSON_QUERY(列名, '查询路径') FROM 表名;
  53. NEXTVAL:用于获取序列的下一个值。  SELECT NEXTVAL('序列名称');
  54. FILTER:用于在聚合函数中应用筛选条件。  SELECT 列名, SUM(列名) FILTER (WHERE 条件) FROM 表名 GROUP BY 列名;
  55. REGEXP_REPLACE:用于在字符串中替换匹配正则表达式的部分。  SELECT REGEXP_REPLACE(列名, '正则表达式', '替换字符串') FROM 表名;
  56. OFFSET:用于跳过查询结果的前几行。  SELECT 列名 FROM 表名 OFFSET 行数;
  57. NTH_VALUE:用于获取分组中的第N个值。  SELECT 列名, NTH_VALUE(列名, N) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
  58. LAST_VALUE:用于获取分组中的最后一个值。  SELECT 列名, LAST_VALUE(列名) OVER (PARTITION BY 列名 ORDER BY 排序列名) FROM 表名;
  59. LEAD和LAG(带偏移量和默认值):用于在结果集中获取指定行前后的值,可以指定偏移量和默认值。  SELECT 列名, LEAD(列名, 偏移量, 默认值) OVER (ORDER BY 排序列名) FROM 表名; SELECT 列名, LAG(列名, 偏移量, 默认值) OVER (ORDER BY 排序列名) FROM 表名;  FORMAT:用于将日期、数值或货币格式化为指定的格式。  SELECT FORMAT(列名, '格式') FROM 表名;

DML

  1. INSERT语句:用于向数据库表中插入新的行或记录。
  2. UPDATE语句:用于修改数据库表中已存在的行或记录的数据。
  3. DELETE语句:用于从数据库表中删除指定的行或记录。
  4. SELECT语句:虽然SELECT属于DQL(数据查询语言),但也可以用于检索数据和查询结果集,它可以用于选择特定的列、过滤条件、排序、聚合等操作。

DDL

列举 中所有的ddl语言并列举用法就像这种SELECT FORMAT(列名, '格式') FROM 表名;

在SQL中,DDL(数据定义语言)用于定义和管理数据库对象,例如表、视图、索引等。以下是常见的DDL语言及其用法:

DDL(数据定义语言)命令:

  1. CREATE TABLE
  2. ALTER TABLE
  3. CREATE VIEW
  4. DROP VIEW
  5. CREATE INDEX
  6. DROP INDEX
  7. CREATE DATABASE
  8. ALTER DATABASE
  9. DROP DATABASE
  10. CREATE SCHEMA
  11. ALTER SCHEMA
  12. DROP SCHEMA
  13. CREATE PROCEDURE
  14. ALTER PROCEDURE
  15. DROP PROCEDURE
  16. CREATE FUNCTION
  17. ALTER FUNCTION
  18. DROP FUNCTION
  19. CREATE TRIGGER
  20. ALTER TRIGGER
  21. DROP TRIGGER
  22. CREATE DOMAIN
  23. ALTER DOMAIN
  24. DROP DOMAIN
  25. CREATE USER
  26. ALTER USER
  27. DROP USER
  28. GRANT
  29. REVOKE
  30. CREATE ROLE
  31. ALTER ROLE
  32. DROP ROLE
  33. CREATE CONSTRAINT
  34. ALTER CONSTRAINT
  35. DROP CONSTRAINT
  36. CREATE DATABASE LINK
  37. DROP DATABASE LINK
  38. CREATE COLLATION
  39. DROP COLLATION
  40. CREATE ASSERTION
  41. DROP ASSERTION
  42. CREATE TRUNCATE
  43. ALTER TRUNCATE
  44. DROP TRUNCATE
  45. CREATE EVENT
  46. ALTER EVENT
  47. DROP EVENT
  48. CREATE TABLE:用于创建表格 CREATE TABLE 表名 (
列名1 数据类型1,
 列名2 数据类型2,
 ...

);

  1. ALTER TABLE:用于修改现有表的结构 ALTER TABLE 表名 ADD 列名 数据类型; -- 添加列 ALTER COLUMN 列名 SET 数据类型; -- 修改列数据类型 DROP COLUMN 列名; -- 删除列
  2. DROP TABLE:用于删除表 DROP TABLE 表名;
  3. CREATE VIEW:用于创建视图 CREATE VIEW 视图名 AS SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;
  4. DROP VIEW:用于删除视图 DROP VIEW 视图名;
  5. CREATE INDEX:用于创建索引 CREATE INDEX 索引名 ON 表名 (列名1, 列名2, ...);
  6. DROP INDEX:用于删除索引 DROP INDEX 索引名;
  7. CREATE DATABASE:用于创建数据库 CREATE DATABASE 数据库名;
  8. ALTER DATABASE:用于修改数据库属性 ALTER DATABASE 数据库名 SET 属性 = 值;
  9. DROP DATABASE:用于删除数据库 DROP DATABASE 数据库名;
  10. CREATE SCHEMA:用于创建模式 CREATE SCHEMA 模式名;
  11. ALTER SCHEMA:用于修改模式的属性 ALTER SCHEMA 模式名 SET 属性 = 值;
  12. DROP SCHEMA:用于删除模式 DROP SCHEMA 模式名;
  13. CREATE PROCEDURE:用于创建存储过程 CREATE PROCEDURE 存储过程名 [参数列表] AS BEGIN
-- 存储过程的具体代码

END;

  1. ALTER PROCEDURE:用于修改存储过程 ALTER PROCEDURE 存储过程名 [参数列表] AS BEGIN
-- 修改后的存储过程代码

END;

  1. DROP PROCEDURE:用于删除存储过程 DROP PROCEDURE 存储过程名;
  2. CREATE FUNCTION:用于创建函数 CREATE FUNCTION 函数名 ([参数列表]) RETURNS 返回值类型 AS BEGIN
-- 函数的具体代码

END;

  1. ALTER FUNCTION:用于修改函数 ALTER FUNCTION 函数名 ([参数列表]) RETURNS 返回值类型 AS BEGIN
-- 修改后的函数代码

END;

  1. DROP FUNCTION:用于删除函数 DROP FUNCTION 函数名;
  2. CREATE TRIGGER:用于创建触发器,它是一种特殊类型的存储过程,当特定事件发生时自动执行代码。 CREATE TRIGGER 触发器名 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名 FOR EACH ROW BEGIN
-- 触发器的代码

END;

  1. ALTER TRIGGER:用于修改触发器的定义。 ALTER TRIGGER 触发器名 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名 FOR EACH ROW BEGIN
-- 修改后的触发器代码

END;

  1. DROP TRIGGER:用于删除触发器。 DROP TRIGGER 触发器名;
  2. CREATE USER:用于创建数据库用户或登录帐户。 CREATE USER 用户名 [IDENTIFIED BY 密码]
  3. ALTER USER:用于修改数据库用户的属性。 ALTER USER 用户名 [ALTER 属性 = 值]
  4. DROP USER:用于删除数据库用户或登录帐户。 DROP USER 用户名;
  5. GRANT:用于授予角色或用户对数据库对象的某些权限。 GRANT 权限列表 ON 对象名 TO 用户名/角色名;
  6. REVOKE:用于撤销用户或角色对数据库对象的权限。 REVOKE 权限列表 ON 对象名 FROM 用户名/角色名;
  7. CREATE DOMAIN:用于创建数据域,即自定义数据类型。 CREATE DOMAIN 数据域名 AS 数据类型 [DEFAULT 默认值];
  8. ALTER DOMAIN:用于修改数据域的定义。 ALTER DOMAIN 数据域名 [SET DEFAULT 默认值];
  9. DROP DOMAIN:用于删除数据域。 DROP DOMAIN 数据域名;
  10. CREATE SYNONYM:用于创建同义词,为一个对象定义一个替代名称。 CREATE SYNONYM 同义词名 FOR 对象名;
  11. DROP SYNONYM:用于删除同义词。 DROP SYNONYM 同义词名;
  12. COMMENT:用于给数据库对象添加注释。 COMMENT ON OBJECT 对象名 IS '注释内容';
  13. RENAME:用于重命名数据库对象。 RENAME 对象类型 旧对象名 TO 新对象名;
  14. ALTER AUTHORIZATION:用于更改数据库对象的所有者。 ALTER AUTHORIZATION 对象类型 对象名 TO 新所有者;
  15. CREATE ROLE:用于创建角色,角色是一组权限和属性的集合,可以授予给用户。 CREATE ROLE 角色名;
  16. ALTER ROLE:用于修改角色的属性。 ALTER ROLE 角色名 [ALTER 属性 = 值];
  17. DROP ROLE:用于删除角色。 DROP ROLE 角色名;
  18. CREATE CONSTRAINT:用于创建约束,限制表中数据的完整性。 CREATE CONSTRAINT 约束名 CHECK (条件)
  19. ALTER CONSTRAINT:用于修改约束的定义。 ALTER CONSTRAINT 约束名 [ALTER 条件];
  20. DROP CONSTRAINT:用于删除约束。 DROP CONSTRAINT 约束名;
  21. CREATE DATABASE LINK:用于创建数据库链接,允许访问其他数据库的对象。 CREATE DATABASE LINK 链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '远程数据库连接信息';
  22. DROP DATABASE LINK:用于删除数据库链接。 DROP DATABASE LINK 链接名;
  23. CREATE DOMAIN:用于创建用户自定义的数据类型。 CREATE DOMAIN 数据类型名称 AS 数据类型;
  24. ALTER DOMAIN:用于修改已创建的用户自定义数据类型的定义。 ALTER DOMAIN 数据类型名称 [SET 属性 = 值];
  25. DROP DOMAIN:用于删除用户自定义的数据类型。 DROP DOMAIN 数据类型名称;
  26. CREATE ASSERTION:用于创建断言,即用于定义表中数据的约束。 CREATE ASSERTION 断言名称 CHECK (条件);
  27. DROP ASSERTION:用于删除断言。 DROP ASSERTION 断言名称;
  28. CREATE COLLATION:用于创建字符串比较规则。 CREATE COLLATION 排序规则名称 (
PROVIDER = 提供商名称,
 LOCALE = 语言环境,
 ...

);

  1. DROP COLLATION:用于删除字符串比较规则。 DROP COLLATION 排序规则名称;
  2. CREATE TRIGGER:用于创建触发器。触发器在指定的事件发生时自动执行一系列操作。 CREATE TRIGGER 触发器名称 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名称 [FOR EACH ROW] [触发事件] BEGIN
-- 触发器的具体操作

END;

  1. ALTER TRIGGER:用于修改现有的触发器的定义。 ALTER TRIGGER 触发器名称 [BEFORE/AFTER] [INSERT/UPDATE/DELETE] ON 表名称 [FOR EACH ROW] [触发事件] BEGIN
-- 修改后的触发器操作

END;

  1. DROP TRIGGER:用于删除触发器。 DROP TRIGGER 触发器名称;
  2. CREATE ASSERTION:用于创建断言,约束表中的数据。 CREATE ASSERTION 断言名称 CHECK (条件);
  3. DROP ASSERTION:用于删除断言。 DROP ASSERTION 断言名称;
  4. GRANT:用于向用户或角色授予特定的权限。 GRANT 权限列表 ON 对象名称 TO 用户名/角色名;
  5. REVOKE:用于撤销用户或角色对特定对象的权限。 REVOKE 权限列表 ON 对象名称 FROM 用户名/角色名;
  6. CREATE EVENT:用于创建事件,即在指定时间执行的计划任务。 CREATE EVENT 事件名称 ON SCHEDULE [时间安排] DO [事件操作];
  7. ALTER EVENT:用于修改现有事件的定义。 ALTER EVENT 事件名称 ON SCHEDULE [时间安排] DO [修改后的事件操作];
  8. DROP EVENT:用于删除事件。 DROP EVENT 事件名称;
  9. CREATE TRUNCATE:用于创建截断表的操作。 CREATE TRUNCATE 表名称;
  10. ALTER TRUNCATE:用于修改截断表的定义。 ALTER TRUNCATE 表名称;
  11. DROP TRUNCATE:用于删除截断表的操作。 DROP TRUNCATE 表名称;
  12. CREATE PACKAGE:用于创建包,包含一组相关的过程、函数、游标和变量。 CREATE PACKAGE 包名 AS
-- 包的声明部分(类型、函数、过程等)

END 包名;

  1. ALTER PACKAGE:用于修改包的定义。 ALTER PACKAGE 包名 COMPILE;
  2. DROP PACKAGE:用于删除包。 DROP PACKAGE 包名;
  3. CREATE PIPELINE FUNCTION:用于创建管道函数,返回用于流式处理的结果。 CREATE OR REPLACE FUNCTION 函数名 (参数列表) RETURN 类型 PIPELINED IS
-- 管道函数的实现

END;

  1. ALTER PIPELINE FUNCTION:用于修改管道函数的定义。 ALTER FUNCTION 函数名 COMPILE;
  2. DROP PIPELINE FUNCTION:用于删除管道函数。 DROP FUNCTION 函数名;

DCL

DCL (Data Control Language) 是 SQL 中用于授权和权限管理的一组语言。以下是一些常见的 DCL 语言及其用法示例:

  1. GRANT: GRANT 语句用于授予用户或用户组特定的权限。
    GRANT SELECT, INSERT ON 表名 TO 用户名;
    上述示例中,授权用户 "用户名" 只能在 "表名" 表上执行 SELECT 和 INSERT 操作。
  2. REVOKE: REVOKE 语句用于撤销已授权的权限。
    REVOKE SELECT, INSERT ON 表名 FROM 用户名;
    上述示例中,从用户 "用户名" 撤销了对 "表名" 表的 SELECT 和 INSERT 权限。
  3. DENY: DENY 语句用于拒绝用户或用户组的权限请求。
    DENY UPDATE ON 表名 TO 用户名;
    上述示例中,拒绝用户 "用户名" 对 "表名" 表的 UPDATE 权限请求。
  4. TRUNCATE: TRUNCATE 语句用于删除表中的所有数据。
    TRUNCATE TABLE 表名;
    上述示例中,删除了 "表名" 表中的所有数据。
  5. ALTER USER: ALTER USER 语句用于更改用户的属性或权限。
    ALTER USER 用户名 PASSWORD '新密码';
    上述示例中,更改了用户 "用户名" 的密码为 "新密码"。
  6. CREATE USER: CREATE USER 语句用于创建新用户。
    CREATE USER 新用户名 IDENTIFIED BY '密码';
    上述示例中,创建了一个名为 "新用户名" 的用户,并设置了密码。
  7. ALTER USER: ALTER USER 语句用于更改用户的属性或权限。
    ALTER USER 用户名 PASSWORD EXPIRE;
    上述示例中,将用户 "用户名" 的密码过期。
  8. DROP USER: DROP USER 语句用于删除一个用户。
    DROP USER 用户名;
    上述示例中,删除名为 "用户名" 的用户。
  9. CREATE ROLE: CREATE ROLE 语句用于创建角色,角色是一组权限的集合。
    CREATE ROLE 新角色名;
    上述示例中,创建了一个名为 "新角色名" 的角色。
  10. GRANT ROLE: GRANT ROLE 语句用于将角色授予用户。
    GRANT 新角色名 TO 用户名;
    上述示例中,将角色 "新角色名" 授予给用户 "用户名"。
  11. GRANT ALL PRIVILEGES: GRANT ALL PRIVILEGES 语句用于授予用户或用户组所有权限。 GRANT ALL PRIVILEGES ON 表名 TO 用户名; 上述示例中,授权用户 "用户名" 在 "表名" 表上执行所有权限操作。
  12. REVOKE ALL PRIVILEGES: REVOKE ALL PRIVILEGES 语句用于撤销用户或用户组的所有权限。 REVOKE ALL PRIVILEGES ON 表名 FROM 用户名; 上述示例中,从用户 "用户名" 撤销了对 "表名" 表的所有权限。
  13. GRANT OPTION: GRANT OPTION 语句用于授予用户将自己的权限授予给其他用户的能力。
GRANT SELECT ON 表名 TO 用户名 WITH GRANT OPTION;
  1. ALTER ROLE: ALTER ROLE 语句用于修改角色的属性或权限。
ALTER ROLE 角色名 ADD 权限;

上述示例中,向角色 "角色名" 添加一个权限。

  1. DROP ROLE: DROP ROLE 语句用于删除角色。
DROP ROLE 角色名;

上述示例中,删除名为 "角色名" 的角色。

  1. SET ROLE: SET ROLE 语句用于在当前会话中启用指定的角色。
SET ROLE 角色名;

上述示例中,启用名为 "角色名" 的角色。

  1. CREATE SCHEMA: CREATE SCHEMA 语句用于创建一个新的模式或命名空间。 CREATE SCHEMA 模式名; 上述示例中,创建了一个名为 "模式名" 的模式。
  2. DROP SCHEMA: DROP SCHEMA 语句用于删除一个模式及其包含的所有对象。
DROP SCHEMA 模式名;

上述示例中,删除名为 "模式名" 的模式。

  1. SET SESSION AUTHORIZATION: SET SESSION AUTHORIZATION 语句用于更改当前会话的用户身份。
SET SESSION AUTHORIZATION 用户名;

上述示例中,将当前会话的用户身份更改为 "用户名"。

  1. ALTER DEFAULT PRIVILEGES: ALTER DEFAULT PRIVILEGES 语句用于修改默认权限。
    ALTER DEFAULT PRIVILEGES IN SCHEMA 模式名 GRANT SELECT, INSERT ON TABLES TO 角色名;

上述示例中,为模式 "模式名" 中的所有表设置默认权限,授予角色 "角色名" 的 SELECT 和 INSERT 权限。

  1. CREATE POLICY: CREATE POLICY 语句用于创建安全策略。
    CREATE POLICY 策略名 ON 表名 TO 角色名 USING (条件) WITH CHECK (条件);
    上述示例中,创建了名为 "策略名" 的安全策略,应用于 "表名" 表,仅对角色 "角色名" 进行策略验证,并使用指定的条件。
  2. ALTER POLICY: ALTER POLICY 语句用于修改安全策略。
    ALTER POLICY 策略名 ON 表名 TO 角色名 RENAME TO 新策略名;
    上述示例中,将名为 "策略名" 的安全策略,应用于 "表名" 表,仅对角色 "角色名" 进行策略验证,并将其重命名为 "新策略名"。
  3. ALTER DEFAULT PRIVILEGES: ALTER DEFAULT PRIVILEGES 语句用于修改默认权限。
    ALTER DEFAULT PRIVILEGES FOR ROLE 角色名 GRANT SELECT, INSERT ON TABLES TO 用户名;
    上述示例中,为角色 "角色名" 设置默认权限,在所有表上将 SELECT 和 INSERT 权限授予用户 "用户名"。