概述

SQL(Structured Query Language)是关系型数据库管理系统中的一种标准化语言,用于操作和管理数据库。以下是 SQL 中常用的命令:

  1. SELECT:从表中获取数据
  2. INSERT:向表中插入新的数据
  3. UPDATE:更新表中的数据
  4. DELETE:从表中删除数据
  5. CREATE:创建新的数据库或表
  6. ALTER:修改数据库或表的结构
  7. DROP:删除数据库或表
  8. INDEX:为表中的列创建索引
  9. GRANT:授权给用户或用户组访问数据库或表
  10. REVOKE:撤销用户或用户组的数据库或表访问权限
  11. JOIN: 链表查询

以上是 SQL 中常用的命令,当然还有很多其他的命令和语法,需要根据实际情况进行学习和使用。

以下是每个命令的简单示例:

SELECT

从表中获取数据,可以使用以下语法:

SELECT column1, column2, ... FROM table_name WHERE condition;

其中,column1, column2, ... 表示要获取的列名,table_name 表示要查询的表名,condition 表示查询条件。例如:

SELECT * FROM customers WHERE city = 'Beijing';

这个语句将从 customers 表中获取所有在 city 列中值为 Beijing 的行。

INSERT

向表中插入新的数据,可以使用以下语法:

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

其中,table_name 表示要插入数据的表名,column1, column2, ... 表示要插入的列名,value1, value2, ... 表示要插入的值。例如:

INSERT INTO customers (name, email, phone) VALUES ('Tom', 'tom@example.com', '123456789');

这个语句将在 customers 表中插入一条新的记录,包括 nameemailphone 三个列的值。

UPDATE

更新表中的数据,可以使用以下语法:

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

其中,table_name 表示要更新的表名,column1 = value1, column2 = value2, ... 表示要更新的列和对应的新值,condition 表示更新条件。例如:

UPDATE customers SET phone = '987654321' WHERE name = 'Tom';

这个语句将更新 customers 表中所有 name 列的值为 Tom 的行的 phone 列的值为 987654321

DELETE

从表中删除数据,可以使用以下语法:

DELETE FROM table_name WHERE condition;

其中,table_name 表示要删除数据的表名,condition 表示删除条件。例如:

DELETE FROM customers WHERE email = 'tom@example.com';

这个语句将从 customers 表中删除所有 email 列的值为 tom@example.com 的行。

CREATE

创建新的数据库或表,可以使用以下语法:

CREATE DATABASE database_name;

或者:

CREATE TABLE table_name (
    column1 datatype1,
    column2 datatype2,
    ...
);

其中,database_name 表示要创建的数据库名,table_name 表示要创建的表名,column1 datatype1, column2 datatype2, ... 表示要创建的列和对应的数据类型。例如:

CREATE TABLE customers (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(50),
    phone VARCHAR(20)
);

这个语句将创建一个名为 customers 的表,包括 idnameemailphone 四个列,其中 id 列是主键。

ALTER

修改数据库或表的结构,可以使用以下语法:

ALTER TABLE table_name ADD column_name datatype;

或者:

ALTER TABLE table_name MODIFY column_name datatype;

其中,table_name 表示要修改的表名,column_name 表示要添加或修改的列名,datatype 表示对应的数据类型。例如:

ALTER TABLE customers ADD address VARCHAR(100);

这个语句将在 customers 表中添加一个名为 address 的列,数据类型为 VARCHAR(100)

DROP

删除数据库或表,可以使用以下语法:

DROP DATABASE database_name;

或者:

DROP TABLE table_name;

其中,database_name 表示要删除的数据库名,table_name 表示要删除的表名。例如:

DROP TABLE customers;

这个语句将删除名为 customers 的表。

INDEX

为表中的列创建索引,可以使用以下语法:

CREATE INDEX index_name ON table_name (column_name);

其中,index_name 表示索引的名称,table_name 表示要创建索引的表名,column_name 表示要创建索引的列名。例如:

CREATE INDEX idx_customers_city ON customers (city);

这个语句将在 customers 表中为 city 列创建一个名为 idx_customers_city 的索引。

GRANT

授权给用户或用户组访问数据库或表,可以使用以下语法:

GRANT permission ON object TO user;

其中,permission 表示授权的权限,object 表示授权的对象,user 表示被授权的用户或用户组。例如:

GRANT SELECT, INSERT ON customers TO user1;

这个语句将授权 user1 用户对 customers 表执行 SELECTINSERT 操作的权限。

REVOKE

撤销用户或用户组的数据库或表访问权限,可以使用以下语法:

REVOKE permission ON object FROM user;

其中,permission 表示要撤销的权限,object 表示要撤销权限的对象,user 表示要被撤销权限的用户或用户组。例如:

REVOKE SELECT, INSERT ON customers FROM user1;

这个语句将撤销 user1 用户对 customers 表执行 SELECTINSERT 操作的权限。

JOIN

SQL中的JOIN用于将两个或多个表中的数据合并在一起,并根据它们之间的关系返回结果集。以下是一些JOIN类型的说明和示例:

INNER JOIN

INNER JOIN(内连接):返回两个表中共有的行。

例如,假设我们有两个表:students和classes,students表包含学生的信息(学生ID,姓名,年龄,班级ID),classes表包含班级信息(班级ID,班级名称)。我们可以使用INNER JOIN将两个表连接起来,并返回每个学生所在的班级名称:

SELECT students.name, classes.class_name
FROM students
INNER JOIN classes
ON students.class_id = classes.class_id;
LEFT JOIN

LEFT JOIN(左连接):返回左表中的所有行以及右表中匹配的行。

例如,假设我们有两个表:orders和customers,orders表包含订单信息(订单ID,客户ID,订单日期),customers表包含客户信息(客户ID,客户姓名)。我们可以使用LEFT JOIN将两个表连接起来,并返回每个订单的客户姓名,如果客户ID在customers表中不存在,则返回NULL:

SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers
ON orders.customer_id = customers.customer_id;
RIGHT JOIN

RIGHT JOIN(右连接):返回右表中的所有行以及左表中匹配的行。

例如,假设我们有两个表:products和orders,products表包含产品信息(产品ID,产品名称,产品价格),orders表包含订单信息(订单ID,产品ID,订单日期)。我们可以使用RIGHT JOIN将两个表连接起来,并返回每个产品的订单数量,如果产品ID在orders表中不存在,则返回NULL:

SELECT products.product_name, COUNT(orders.order_id) AS order_count
FROM products
RIGHT JOIN orders
ON products.product_id = orders.product_id
GROUP BY products.product_name;
FULL OUTER JOIN

FULL OUTER JOIN(全外连接):返回左表和右表中的所有行。

例如,假设我们有两个表:customers和orders,customers表包含客户信息(客户ID,客户姓名),orders表包含订单信息(订单ID,客户ID,订单日期)。我们可以使用FULL OUTER JOIN将两个表连接起来,并返回每个客户的订单数量,如果客户ID在orders表中不存在,则返回NULL,如果订单ID在customers表中不存在,则返回NULL:

SELECT customers.customer_name, COUNT(orders.order_id) AS order_count
FROM customers
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id
GROUP BY customers.customer_name;
Last modification:March 13, 2023
如果觉得这篇技术文章对你有用,请随意赞赏