目录

  1. SQL 基本语法
  2. SQL 数据类型
  3. SQL 查询语句
  4. SQL 约束
  5. SQL 操作符
  6. SQL 连接
  7. SQL 子查询
  8. 参考资料

SQL 基本语法

SQL 的基本语法由关键字、标识符、操作符和语句构成。SQL 语句通常由以下几个部分组成:

  1. 关键字(Keywords):如 SELECTFROMWHERE 等,用于指定要执行的操作。
  2. 标识符(Identifiers):如表名、列名等,用于指代数据库对象。
  3. 常量(Constants):用于指定数据值,如字符串、数字等。
  4. 操作符(Operators):用于执行数据比较、运算、逻辑操作等。

SQL 语法结构

SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name;

  • SELECT:指定要检索的列。
  • FROM:指定查询的数据表。
  • WHERE:指定查询条件。
  • ORDER BY:指定排序顺序。

SQL 数据类型

SQL 数据库中的列有不同的数据类型,根据存储的数据类型选择合适的类型。常见的 SQL 数据类型如下:

  • 整数类型
    • INT:整数。
    • SMALLINT:小整数。
    • BIGINT:大整数。
  • 浮点数类型
    • FLOAT:浮动小数点数字。
    • DOUBLE:双精度浮动小数点数字。
  • 字符类型
    • CHAR(n):固定长度的字符数据。
    • VARCHAR(n):可变长度的字符数据。
  • 日期和时间类型
    • DATE:日期,格式 YYYY-MM-DD
    • TIME:时间,格式 HH:MM:SS
    • DATETIME:日期和时间,格式 YYYY-MM-DD HH:MM:SS
  • 二进制类型
    • BLOB:二进制大对象,用于存储二进制数据。

SQL 查询语句

SQL 查询语句用于从数据库中检索数据。最常用的查询语句是 SELECT

查询所有列

SELECT * FROM table_name;

  • * 表示选择表中的所有列。

查询特定列

SELECT column1, column2 FROM table_name;

  • column1, column2 是你希望返回的列名。

查询带条件的数据

SELECT * FROM table_name WHERE condition;

  • WHERE 用于指定查询条件。

排序查询结果

SELECT * FROM table_name ORDER BY column_name ASC|DESC;

  • ORDER BY 用于排序结果,ASC 为升序,DESC 为降序。

限制查询结果数量

SELECT * FROM table_name LIMIT 10;

  • LIMIT 限制返回的记录数量。

SQL 约束

SQL 约束用于限制表中数据的类型和完整性。常见的约束包括:

  • PRIMARY KEY:指定表的主键。
  • FOREIGN KEY:指定外键,确保引用的表中的数据存在。
  • NOT NULL:确保列不能包含 NULL 值。
  • UNIQUE:确保列中的所有数据唯一。
  • CHECK:确保列中的数据满足特定条件。

示例:创建表时添加约束

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT,
    grade VARCHAR(10),
    UNIQUE (name)
);


SQL 操作符

SQL 提供了多种操作符来进行数据的比较、逻辑运算、数学计算等。常见操作符包括:

比较操作符

  • =:等于
  • !=<>:不等于
  • <:小于
  • >:大于
  • <=:小于或等于
  • >=:大于或等于
  • BETWEEN:在一个范围内
  • LIKE:匹配模式
  • IN:在某些值中

逻辑操作符

  • AND:两个条件都为真时返回真。
  • OR:两个条件中至少有一个为真时返回真。
  • NOT:条件不为真时返回真。

算术操作符

  • +:加
  • -:减
  • *:乘
  • /:除
  • %:取余

SQL 连接

SQL 支持多种连接类型来合并多个表中的数据:

  • INNER JOIN:返回两个表中匹配的记录。
  • LEFT JOIN(或 LEFT OUTER JOIN):返回左表中的所有记录及右表中的匹配记录。
  • RIGHT JOIN(或 RIGHT OUTER JOIN):返回右表中的所有记录及左表中的匹配记录。
  • FULL JOIN(或 FULL OUTER JOIN):返回两个表中所有记录。

示例:INNER JOIN

SELECT students.name, courses.name
FROM students
INNER JOIN enrollments ON students.id = enrollments.student_id
INNER JOIN courses ON enrollments.course_id = courses.id;


SQL 子查询

SQL 支持在查询中使用子查询,即查询的查询。子查询可以返回单一值或多个值。

示例:子查询

SELECT name, age
FROM students
WHERE age > (SELECT AVG(age) FROM students);

  • 这个查询返回比学生平均年龄大的学生。

参考资料