3. SQL 概述

139 阅读6分钟

SQL概述

SQL(Structured Query Language,结构化查询语言)是用于管理关系型数据库系统的标准化语言。SQL是一种专门用来与数据库通信的语言,可以用来执行各种操作,包括查询数据、插入数据、更新数据、删除数据等。SQL是关系数据库的核心,几乎所有的关系型数据库管理系统(RDBMS)都支持SQL语言。

SQL语言类别及功能

  1. 数据定义语言(Data Definition Language,DDL):用于定义数据库中的结构,包括创建表、修改表结构、删除表等操作。常用的DDL命令包括CREATE、ALTER、DROP等。
  2. 数据操作语言(Data Manipulation Language,DML):用于对数据库中的数据进行操作,包括查询数据、插入数据、更新数据、删除数据等操作。常用的DML命令包括SELECT、INSERT、UPDATE、DELETE等。
  3. 数据控制语言(Data Control Language,DCL):用于控制数据库的访问权限和安全性,包括授权用户权限、撤销用户权限等操作。常用的DCL命令包括GRANT、REVOKE等。
  4. 数据查询语言(Data Query Language,DQL):用于查询数据库中的数据,是SQL语言中最常用的部分。常用的DQL命令是SELECT,用于从数据库中检索数据。

SQL语言的特点包括

  • SQL是一种标准化语言,几乎所有的关系型数据库系统都支持SQL。
  • SQL是一种声明式语言,用户只需要描述需要做什么,而不需要指定如何做。
  • SQL具有很强的灵活性和表达能力,能够执行复杂的查询和操作。

数据类型

  1. 整数类型(Integer Types):用于存储整数值,包括:
  • INT 或 INTEGER:标准整数类型,通常存储范围在 -2147483648 到 2147483647 之间的整数。
  • SMALLINT:存储较小范围的整数,通常在 -32768 到 32767 之间。
  • BIGINT:存储较大范围的整数,通常在 -9223372036854775808 到 9223372036854775807 之间。
  1. 浮点数类型(Floating-Point Types):用于存储带有小数点的数值,包括:
  • FLOAT:存储单精度浮点数。
  • DOUBLE 或 DOUBLE PRECISION:存储双精度浮点数。
  • DECIMAL 或 NUMERIC:存储精确的小数值,可以指定精度和标度。
  1. 字符串类型(Character Types):用于存储文本数据,包括:
  • CHAR(n):固定长度的字符,最多存储 n个字符。
  • VARCHAR(n):可变长度的字符,最多存储 n 个字符。
  • TEXT:用于存储大量文本数据。
  1. 日期和时间类型(Date and Time Types):用于存储日期和时间信息,包括:
  • DATE:存储日期,格式为'YYYY-MM-DD'。
  • TIME:存储时间,格式为 'HH:MM:SS'。
  • TIMESTAMP:存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS'。
  1. 布尔类型(Boolean Types):用于存储布尔值,包括 TRUE 或 FALSE。

除了上述常见的数据类型,不同的数据库系统可能还支持其他特定的数据类型,如数组、JSON、XML 等。在创建表时,需要根据实际需求选择合适的数据类型来定义每个列的数据类型。

模式的定义及删除

在 SQL 中,模式(Schema)是指数据库中的结构定义,包括表、视图、索引、触发器等对象的集合。模式定义了数据库中的数据组织方式和关系之间的结构。通常情况下,一个数据库会包含多个模式,每个模式可以包含多个表和其他对象。

一个关系由目录名、模式名和关系名表示唯一确定。

定义模式

CREATE SCHEMA [schema_name] 语句来定义模式。 创建模式时,可以指定模式名称以及模式下包含的表、视图等对象。例如,创建一个名为 "my_schema" 的模式并在其中创建一个表:

CREATE SCHEMA my_schema;

CREATE TABLE my_schema.my_table ( id INT, name VARCHAR(50));

首先创建了一个名为 "my_schema" 的模式,然后在该模式下创建了一个名为 "my_table" 的表。

模式删除

删除模式时需要谨慎操作,因为会删除该模式下的所有对象,包括表、视图等。

 DROP SCHEMA my_schema CASCAED;

CASCADE 选项表示删除模式时会级联删除模式下的所有对象,如果不指定 CASCADE 选项,则只有当模式为空时才能成功删除。

RESTRICT 受限删除。

需要注意的是,删除模式是一个危险操作,执行前请确保已经备份了重要数据,并且有权限执行删除操作。

表的定义与删除

在 SQL 中,表(Table)是用来存储数据的基本结构,由列(Column)和行(Row)组成。表的定义包括指定表的名称、列名、数据类型等信息,而删除表则是将表及其包含的数据完全从数据库中删除。

定义

以使用 CREATE TABLE 语句来定义表。创建表时需要指定表的名称以及每个列的名称、数据类型、约束等信息。例如,创建一个名为 "users" 的表,包含 id 和 name 两个列:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

定义表常见约束(Constraints)

  1. 主键约束(Primary Key Constraint)
  2. 外键约束(Foreign Key Constraint)
  3. 唯一约束(Unique Constraint)
  4. 非空约束(Not Null Constraint)
  5. 检查约束(Check Constraint)

删除

DROP TABLE users;

修改

ALTER TABLE <TABLE_NAME> 
[ADD [COLUMN] <COLUMN_NAME> DATA_TYPE
[ALTER [COLUMN] <COLUMN_NAME> DATA_TYPE

索引

,索引(Index)是一种数据结构,用于加快数据库表中数据的检索速度。索引可以帮助数据库系统快速定位到符合查询条件的数据,从而提高查询效率。常见的索引类型包括普通索引、唯一索引、主键索引等。

定义

创建一个名为 "idx_name" 的索引在表 "users" 的 "name" 列上:

CREATE INDEX idx_name ON users(name);
  • UNIQUE 唯一索引
  • CLUSTER 聚簇索引,

删除

删除名为 "idx_name" 的索引:

DROP INDEX idx_name;

需要注意的是,创建索引会增加数据库系统的存储空间和维护成本,因此应该根据实际需求和查询频率选择合适的列来创建索引。同时,不再需要使用的索引应及时删除,以减少数据库系统的负担。

SELECT 查询

  • ALL,所有行。
  • DISTINCT, 去重