SQL 语法基础

SQL(结构化查询语言)是用于管理关系型数据库的标准语言。用户可以从数据库中检索数据、插入数据、更新数据以及删除数据。SQL 可以与关系型数据库交互,从而对数据进行管理、查询和分析。对于数据工作者、数据库管理员、软件开发人员等来说,熟练掌握SQL语法是必不可少的技能。

1、SELECT语句

SQL语言中最常用的语句之一是SELECT语句,用于从数据库中检索数据。

SELECT语句的基本语法:

SELECT column1, column2, ...
FROM table_name;

说明:

  • SELECT:关键字,表示开始一个查询。
  • column1, column2, ...:要检索的列的名称,可以是一个或多个列,也可以使用通配符(*)表示检索所有列。
  • table_name:要从中检索数据的表的名称。

使用WHERE子句来指定检索的条件:

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

2、INSERT INTO语句

INSERT INTO语句用于向数据库表中插入新的行(记录)。语法如下,

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

说明:

  • INSERT INTO:指示要执行插入操作。
  • table_name:指定要插入数据的表名。
  • (column1, column2, column3, ...):可选,指定要插入数据的列名。如果省略了列名,那么必须提供要插入值的完整列表,并且顺序必须与表定义中列的顺序相匹配。
  • VALUES:指定要插入到表中的值。
  • (value1, value2, value3, ...):指定要插入的具体值。每个值与其对应的列相匹配。

3、UPDATE语句

用于更新数据库中的现有数据。UPDATE语句用于修改数据库表中已有的记录。语法如下,

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

说明:

  • UPDATE:关键字,表示要执行更新操作。
  • table_name:要更新数据的表名。
  • SET:关键字,用于指定要更新的列和它们的新值。
  • column1 = value1, column2 = value2, ...:要更新的列和它们对应的新值。可以一次更新多列,每列之间用逗号分隔。
  • WHERE:可选的关键字,用于指定更新操作的条件。如果省略了WHERE子句,则会将所有记录都更新为指定的值。
  • condition:更新操作的条件,只有满足条件的记录才会被更新。

4、DELETE FROM语句

DELETE FROM语句用于从数据库表中删除记录。语法如下,

DELETE FROM table_name
WHERE condition;

说明:

  • table_name:要删除记录的表名。
  • condition:可选项,用于指定要删除的记录的条件。如果省略条件,则将删除表中的所有记录。

5、CREATE TABLE语句

CREATE TABLE语句用于在数据库中创建新的表格。语法如下,

CREATE TABLE table_name (
    column1 datatype [constraint],
    column2 datatype [constraint],
    ...
    [table_constraint]
);

说明:

  • table_name:指定要创建的表格的名称。
  • column1, column2, ...:指定表格中的列名。
  • datatype:指定列的数据类型,例如INTEGERVARCHARDATE等。
  • constraint:可选项,用于定义列的约束条件,如PRIMARY KEYNOT NULLUNIQUE等。
  • table_constraint:可选项,用于定义表级别的约束条件,如PRIMARY KEY约束、FOREIGN KEY约束等。

6、ALTER TABLE语句

ALTER TABLE语句是SQL中用于修改数据库表结构的命令。它可以用于添加、修改或删除表的列,以及修改表的约束、索引等。

1)添加列

ALTER TABLE table_name
ADD column_name datatype;

说明:向指定表中添加一个新列,其中table_name是要修改的表的名称,column_name是新列的名称,datatype是新列的数据类型。

2)修改列

ALTER TABLE table_name
ALTER COLUMN column_name new_datatype;

说明:将修改指定表中现有列的数据类型,其中table_name是要修改的表的名称,column_name是要修改的列的名称,new_datatype是新的数据类型。

3)删除列

ALTER TABLE table_name
DROP COLUMN column_name;

说明:将从指定表中删除指定的列,其中table_name是要修改的表的名称,column_name是要删除的列的名称。

4)添加约束

ALTER TABLE table_name
ADD CONSTRAINT constraint_name constraint_definition;

说明:将向指定表中添加一个新的约束,其中table_name是要修改的表的名称,constraint_name是新约束的名称,constraint_definition是约束的定义。

5)删除约束

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

说明:将从指定表中删除指定的约束,其中table_name是要修改的表的名称,constraint_name是要删除的约束的名称。

7、DROP TABLE语句

SQL中的DROP TABLE语句用于删除数据库中的表格。语法如下,

DROP TABLE table_name;

说明:table_name是要删除的表格的名称。 执行DROP TABLE语句将永久删除数据库中的表格以及其中的所有数据和结构,因此在执行该语句之前应该谨慎确认操作。通常情况下,执行此操作需要相应的权限。 可能需要在删除表格之前先检查该表格是否存在,以避免出现错误。

DROP TABLE IF EXISTS table_name;

8、WHERE子句

SQL语言中的WHERE子句用于指定条件来过滤检索出的数据,仅返回满足条件的行。

SELECT * FROM table_name WHERE condition;

1)选择所有年龄大于等于18岁的用户:

SELECT * FROM users
WHERE age >= 18;

2)选择所有名字为"John"且年龄大于等于18岁的用户:

SELECT * FROM users
WHERE name = 'John' AND age >= 18;

3)选择所有名字以字母"A"开头的用户:

SELECT * FROM users
WHERE name LIKE 'A%';

4)选择所有没有填写邮箱地址的用户:

SELECT * FROM users
WHERE email IS NULL;

5)选择所有名字为"John"或者"Jane"的用户:

SELECT * FROM users
WHERE name IN ('John', 'Jane');

9、ORDER BY子句

SQL中的ORDER BY子句用于对查询结果进行排序。它允许根据一个或多个列的值对结果进行排序,可以按升序(ASC)或降序(DESC)排列。语法如下,

SELECT1, 列2, ...
FROM 表名
ORDER BY1 [ASC|DESC], 列2 [ASC|DESC], ...

说明:

  • SELECT语句用于指定要检索的列。
  • FROM子句用于指定要检索数据的表。
  • ORDER BY子句用于指定排序的规则。
  • 列名表示要按其进行排序的列。
  • [ASC|DESC]用于指定排序顺序。默认情况下,如果未指定排序顺序,则为升序(ASC)。

使用示例:

1)按照姓氏字母顺序对结果进行排序

SELECT first_name, last_name
FROM employees
ORDER BY last_name ASC;

2)按照姓氏的字母顺序进行降序排序

SELECT first_name, last_name
FROM employees
ORDER BY last_name DESC;

10、GROUP BY子句

SQL的GROUP BY子句用于将查询结果按照一个或多个列进行分组,并对每个组应用聚合函数,如COUNTSUMAVG等。可以对数据进行汇总并生成统计信息。 语法如下,

SELECT1, 列2, 聚合函数(列3)
FROM 表名
GROUP BY1, 列2;

说明:

  • SELECT子句用于指定要检索的列。
  • FROM子句用于指定要检索数据的表。
  • GROUP BY子句用于指定要分组的列。
  • 聚合函数(如COUNT、SUM、AVG等)将应用于GROUP BY子句中指定的列,以计算每个分组的统计信息。

使用示例:

1)按照产品类别对销售额进行汇总

SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category;

2)按照产品类别和年份对销售额进行汇总

SELECT category, YEAR(sale_date) AS sale_year, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category, YEAR(sale_date);

推荐阅读
cjavapy编程之路首页