最终的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 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 TABLE employee DROP COLUMN last_name;

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);

ALTER TABLE product ALTER is_available SET DEFAULT true;

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

聚合函数

聚合函数是对像int和float这样的数字列进行数据操作的命令。它们在数据库层面上对数据进行过滤和排序非常有帮助。一些常用的聚合函数有:

函数 描述 示例
AVG 返回指定列的平均值 SELECT AVG(marks) from students where subject = ‘English’;
MIN 返回指定列的最小值 SELECT MIN(price) from product WHERE product_category = ‘shoes’;
MAX 返回指定列的最大值 SELECT MAX(quantity), product_name from inventory;
COUNT 返回满足查询条件的行数 显示员工表中的记录总数。

SELECT COUNT(*) from employee;

显示工资大于20000的员工人数。

SELECT COUNT(*) from employee where salary > 20000;

SUM 返回指定数值列的值之和 SELECT SUM(marks) from students where subject = ‘English’;
常用的聚合函数

SQL连接

SQL连接非常重要,因为它们可以连接和筛选来自多个表的数据。如果没有正确执行,连接可能会给出意外的结果。下表将帮助您快速参考4种类型的SQL连接:

连接类型 描述 语法 示例
内连接 返回连接表中匹配的记录;类似于交集。 SELECT column1, column2… from table1 INNER JOIN table2 on table1.columnN = table2.columnN; select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id;
全外连接 返回在左表或右表上具有匹配的所有记录。类似于并集。 SELECT column1, column2… from table1 FULL OUTER JOIN table2 on table1.columnN = table2.columnN; select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id;
左连接 返回左表中的所有记录以及与右表上的条件匹配的记录 SELECT column1, column2… from table1 LEFT JOIN table2 on table1.columnN = table2.columnN; select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id;
右连接 返回右表中的所有记录以及与左表上的条件匹配的记录 SELECT column1, column2… from table1 RIGHT JOIN table2 on table1.columnN = table2.columnN; select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id;
带有语法和示例的连接类型

其他资源

SQL是软件开发人员、数据科学家和分析师等的重要工具。一份SQL命令的便携参考手册可以节省您很多时间,并帮助您了解每个关键字的预期输出。

有关更多信息,请参考以下资源:

SQL Tutorial: SQL Cheat Sheet

Intellipaat: SQL Commands Cheat Sheet

WebsiteSetup: SQL Cheat Sheet

ProgrammingWithMosh: SQL Cheat Sheet

PostgreSQL Cheat Sheet

类似文章