什么是SQL
SQL代表结构化查询语言。SQL这个词的发音是ess-Kew-all或sequel。
SQL用于操作由SQL查询的底层关系数据库,例如Oracle,MySQL,SQL Server,SQLite,PostgreSQL等。SQL最初是在1970年代开发的,但数据库管理员不经常使用SQL。现在,它也被软件开发人员和数据分析师使用。
SQL是国际标准化组织(ISO)和美国国家标准化组织(ANSI)的标准语言。然而,并非所有的数据库都支持SQL。
以下是SQL语法中包含的各个部分:
1. 关键词:
关键词是保留字或非保留字。SQL保留的关键字包括INTO,UPDATE,SELECT,DELETE,DROP,DESC和ASC。
2. 标识符:
数据库对象,如函数名、模式名、表名等,被命名为标识符。
子句:
查询和SQL语句的组成部分,如WHERE,GROUP BY,HAVING和ORDER BY,由子句形成。
3. 表达式:
由表达式生成的SQL中的数据,可以是列、标量值和行。
4. 布尔条件:
条件的结果是布尔值TRUE或FALSE,也称为表达式。受此条件限制的语句或查询的效果。
5. 查询:
根据特定条件检索数据是通过SQL语句实现的。查询是以SELECT子句开始的语句,因为它们从底层数据库中检索数据。
6. 语句:
SQL语句可以持续地影响模式和数据,或者控制事务、程序流程、连接、会话或诊断。SQL语句,例如INSERT,UPDATE,DROP和DELETE语句,因为它们修改数据库结构或数据。
SQL标准和专有扩展
1986年,美国国家标准化组织采纳了正式的SQL标准,1987年,国际标准化组织采纳了该标准。几年后,SQL的新版本发布,最新版本的SQL是2016版。
国际电工委员会和ISO联合开发了ISO/IEC 9075的SQL标准。ISO标准版本通过使用标准组织ISO/IEC后跟ISO标准号和冒号以及出版年份来引用。SQL的最新ISO标准是ISO/IEC 9075:2016。
开源和专有的围绕SQL构建的关系数据库管理系统已经可以供组织使用。这些产品包括SQL兼容的数据库服务器。其中有Oracle数据库、Microsoft SQL Server、IBM Db2、SAP HANA、Oracle MySQL、SAP自适应服务器、开源PostgreSQL和Oracle MySQL等。
对于过程性编程和其他功能,有一些SQL版本包括对标准语言的专有扩展。例如,Transact-SQL是由Microsoft提供的一组扩展,另一方面,过程语言是标准Oracle的扩展版本。
商业供应商提供专有扩展来区分其产品,为消费者提供额外的功能和特性。因此,供应商提供了一些不同的扩展SQL变体,它们之间只部分兼容。
SQL的基本用法:
- 它修改数据库表和索引结构。
- 添加、更新和删除数据行。
- 它检索关系数据库管理系统中的信息子集。该信息可以用于分析应用程序、事务处理和其他需要与关系数据库通信的应用程序。
关系型数据库与非关系型数据库
SQL查询语言可以用于关系型或非关系型数据库,但对于关系型数据库来说,它给我们带来了优势。
SQL的分类:
结构化查询语言分为以下几类。重要的是,以下表中的语句在不同的数据库中可能会有所不同。
结构化查询语言分为以下几类。重要的是,以下表中的语句在不同的数据库中可能会有所不同。
命令 | 描述 |
---|---|
DDL | 数据定义语言 |
DML | 数据操作语言 |
TCL | 事务控制语言 |
DCL | 数据控制语言 |
1. DDL: (数据定义语言)
数据库中的数据结构通过数据定义语言 (DDL) 语句来定义,例如表、存储过程、函数、视图等。
下表列出了DDL语句:
语句 | 描述 |
---|---|
CREATE | 在数据库中创建新的对象,如过程、表、函数、视图等。 |
ALTER | 修改SQL中数据库表的结构。 |
DROP | 删除数据库对象。 |
RENAME | 重命名数据库对象,如序列、视图、表、私有同义词等。 |
TRUNCATE | 移除表中的所有记录。 |
2. 数据操纵语言 (DML)
数据库对象内的数据管理是通过数据操纵语言 (DML) 语句完成的。它允许对现有数据库模式对象进行查询和操作。
以下是DML语句列表:
语句 | 描述 |
---|---|
SELECT | 它将从表中检索行/列。 |
INSERT | 它将向表中插入新数据。 |
UPDATE | 它将更新表中的现有记录。 |
DELETE | 它将从表中删除现有记录。 |
MERGE | 它将根据指定条件在表中插入新行或更新现有行。 |
LOCK TABLE | 它将以指定的模式锁定一个或多个表。根据所应用的锁定,可能拒绝访问表或仅向另一个用户提供只读访问权限。 |
3. TCL:-(事务控制语言)
通过执行DML语句进行的数据更改将由事务控制语言(TCL)语句最终确认。
语句 | 描述 |
---|---|
COMMIT | 在此,事务更改通过它永久保存到数据库中。 |
ROLLBACK | 它将数据库恢复到上一次提交之前的初始状态。 |
SAVEPOINT | 创建一个SAVEPOINT,供ROLLBACK命令后续使用,以撤销改变到该点为止的所有更改。 |
SET TRANSACTION | 设置事务属性,例如读写或只读访问。 |
4. DCL- 数据控制语言
数据控制语言(DCL)语句用于通过赋予不同用户访问数据库的权限来实施数据库安全性。
语句 | 描述 |
---|---|
GRANT | 它将授予用户访问数据的权限。 |
REVOKE | 它将从用户那里收回授予的权限。 |
COMMENT | 它将指定数据库表和列的注释。 |
ANALYZE | 它将收集表、索引、分区、集群等的统计信息。 |
AUDIT | 它将跟踪特定或所有的SQL语句或操作在某个特定模式对象上的发生情况。 |
5. SCL-会话控制语言
会话控制语言(SCL)语句用于通过执行DML语句来管理对数据库所做的更改。SCL命令基于数据库而异。以下表列出了Oracle数据库的SCL命令。
说明 | 描述 |
---|---|
ALTER SESSION | 修改当前会话的数据库参数。 |
SET ROLE | 为当前会话启用或禁用角色。 |
SQL语句编写规则:
SQL语法是指SQL语句的编写和格式化规则。它类似于其他编程语言。
SQL语法的一些组成部分包括以下内容:
SQL语句以SQL命令开头,以分号(;)结尾,例如:
SELECT * FROM consumers;
这个SELECT语句提取了名为consumers的表的所有内容。
SQL语句是不区分大小写的,这意味着它们可以使用小写字母、大写字母或者大小写混合来编写。然而,按照惯例,SQL关键字、命令或控制运算符一般使用大写字母书写,表和列名一般使用小写字母书写。
语句中的单词可以使用引号来区分大小写,所以下面这两个语句将产生相同的结果。
SELECT * FROM consumers;
select * from CONSUMERS;
这两个表达式是不同的:
SELECT * FROM consumers;
SELECT * FROM "Consumers";
SQL语句仅以分号终止,这意味着可以将更复杂的语句跨多行呈现,例如:
SELECT name, telephone, age
FROM consumers;
这个命令从消费者表中选择姓名、电话和年龄列的内容。
SQL语句可以包含程序流控制,这意味着语句可以包含表和行选择。
例如,以下命令选择年龄超过27岁的所有消费者的姓名、电话号码和出生日期:
SELECT name, telephone, age
FROM consumers
WHERE age > 27;
大多数SQL实现都包括通过命令行、图形用户界面、使用SQL程序、或通过应用程序编程接口来访问使用其他编程语言访问SQL数据库的支持。
一些常用的带有示例的SQL命令
大多数SQL命令与运算符一起使用,以修改或缩小语句操作的数据范围。以下是一些常用的SQL命令和示例:
1. SQL SELECT
SELECT命令用于获取表中的一些或所有数据。
SELECT可以与运算符一起使用以缩小选择的数据量:
SELECT title, writer, publication_date
FROM catalog
WHERE publication_date = 2019;
一个出版商可以使用这个例子从名为catalog的表中选择标题、作者和出版日期列。
2. SQL创建
CREATE命令用于创建一个新的SQL数据库或SQL表。大多数SQL版本通过创建一个新的目录来创建一个新的数据库,其中的表和其他数据库对象以文件形式存储。
以下CREATE DATABASE语句创建一个名为Human_Res的新SQL数据库:
CREATE DATABASE Human_Res;
CREATE TABLE命令用于在SQL中创建表格。下面的语句创建了一个名为Workers的表格,该表格包含三个列:employee_ID、last_name和first_name。第一列存储整数(int)数据,其他列存储最大长度为255的可变字符数据类型varchar。
CREATE TABLE Workers (
employee_ID int,
last_name varchar(255),
first_name varchar(255)
);
3. SQL DELETE
DELETE命令从指定的表中删除行。在这个例子中,删除了所有姓Swain的工人记录:
DELETE FROM Workers WHERE last_name='Swain';
这个语句在运行结束时返回被删除的行数。
4. SQL INSERT INTO:
INSERT INTO命令用于向数据库表中添加记录。下面的语句向Employee表中添加一条新记录:
INSERT INTO Workers (
last_name,
first_name
)
VALUES (
'Alan,'
'Swain'
);
5. SQL UPDATE
UPDATE命令用于对特定表中的行或记录进行更改。例如,以下语句通过将名字更改为Sahoo,更新所有包含last_name值为Swain的记录:
UPDATE Workers
SET last_name = 'Sahoo',
WHERE last_name = 'Swain';
SQL语句可以使用循环,变量和其他编程语言组件根据不同的条件更新记录。