最终的SQL备忘单以供以后保存[2023]
SQL,或Structured Query Language,是一组用于管理关系数据库操作的命令,例如删除、创建、更新、读取等。
SQL自1987年以来一直是关系数据库使用的国际标准。它有四种类型的SQL命令:
- 数据定义语言(DDL) – 这些命令用于定义数据库的结构。例如,删除、重命名、修改和创建命令。它们会影响数据库的结构。例如,创建数据库或重命名表。
- 数据操作语言(DML) – 这些命令用于处理数据。例如,插入、选择、更新和删除命令。它们不会影响表或数据库的结构,但会影响表中的数据。例如,插入新行或更新行中的值。
- 事务控制语言(TCL) – 这些命令用于控制数据库中的事务处理。例如,回滚、保存、提交命令。这些命令对数据库有永久影响。例如,如果一个进程失败,可以将整个事务回滚到先前的状态。
- 数据控制语言(DCL) – 数据控制命令用于授权用户并仅授予用户或组所需的权限。例如,一个用户可以具有只读权限,而另一个用户可以具有读写权限。授权控制使用授予、拒绝和撤销命令进行。
下面是包含最有用的命令的SQL备忘录。这个备忘录将帮助您快速参考所需命令的正确语法和查询的预期结果。在这个备忘录中,我们重点介绍DDL和DML命令,因为其他两种类型的命令使用起来非常直观。
数据定义和操作查询
命令 | 描述 | 示例 | ||||||||||||||||||||||||||||||||||||||
ADD | 向现有表中添加列或约束(如指定)。 | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name);
|
||||||||||||||||||||||||||||||||||||||
ALTER TABLE | 修改指定的表以添加、更新或删除表的列。 | ALTER TABLE employee ADD last_name varchar2(255);
|
||||||||||||||||||||||||||||||||||||||
ALTER COLUMN | 更改列的数据类型。例如,将employee表的joining_date列的类型从varchar2更改为datetime。 | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
||||||||||||||||||||||||||||||||||||||
ALL | 与SELECT、WHERE和HAVING一起使用的逻辑运算符,如果所有值满足子查询条件,则返回true。 | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
||||||||||||||||||||||||||||||||||||||
AND | 逻辑运算符,仅当WHERE子句中的所有条件都满足时才返回true。 | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
||||||||||||||||||||||||||||||||||||||
ANY | 逻辑运算符;如果子查询的值中有一个满足where子句中的条件,则返回true。 | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
||||||||||||||||||||||||||||||||||||||
AS | 为表或列创建一个别名,直到查询执行结束,当名称被多次使用时非常有用,特别是在表连接期间。 | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
||||||||||||||||||||||||||||||||||||||
ASC | 按升序返回数据,与ORDER BY子句一起使用。ORDER BY本身默认按升序排序结果。 | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
||||||||||||||||||||||||||||||||||||||
BETWEEN | 选择范围内的值。 | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
||||||||||||||||||||||||||||||||||||||
CASE | 由一组语句组成;返回为true的语句的值,如果没有条件满足,则执行ELSE部分中的条件。如果没有else,则返回NULL。 | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "符合40%折扣条件" WHEN order_amount between 2000 and 3000 THEN "符合25%折扣条件" ELSE "符合5%折扣条件" END FROM order_details; |
||||||||||||||||||||||||||||||||||||||
CREATE DATABASE | 创建指定名称的新数据库。 | CREATE DATABASE movies_development; |
||||||||||||||||||||||||||||||||||||||
CREATE TABLE | 使用指定的表名和列名创建新表。 | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
||||||||||||||||||||||||||||||||||||||
DEFAULT | 为指定的列设置默认值,与CREATE或ALTER TABLE命令一起使用。 | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE);
|
||||||||||||||||||||||||||||||||||||||
DELETE | 从指定的表中删除数据。 | DELETE from employee where employee_id = 345; |
||||||||||||||||||||||||||||||||||||||
DESC | 按降序返回数据,与ORDER BY子句一起使用。 | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
||||||||||||||||||||||||||||||||||||||
DROP COLUMN | 从指定的表中删除指定的列。 | ALTER TABLE employee DROP COLUMN employee_name; |
||||||||||||||||||||||||||||||||||||||
DROP DATABASE | 删除整个数据库。 | DROP DATABASE movies_development; |
||||||||||||||||||||||||||||||||||||||
DROP DEFAULT | 删除指定列的默认值。 | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
||||||||||||||||||||||||||||||||||||||
DROP TABLE | 删除指定的表。 | DROP TABLE employee; |
||||||||||||||||||||||||||||||||||||||
EXISTS | 检查子查询中是否存在记录,并且如果找到一个或多个结果,则返回true。 | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND
|