当前位置: 首页 > article >正文

SQL是什么?它能做什么?SQL的基本书写规则

对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。

著名的大型商用数据库 Oracle、DB2、Sybase、SQL Server,开源的数据库 PostgreSQL、MySQL,甚至一些小型的数据库 Access 等都支持 SQL。近些年蓬勃发展的 NoSQL 系统最初是宣称不再需要 SQL 的,后来也不得不修正为 Not Only SQL,来拥抱 SQL。

SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。与其他程序设计语言(如 C语言、Java 等)不同的是,SQL 由很少的关键字组成,每个 SQL 语句通过一个或多个关键字构成。

SQL 具有如下优点:

  1. 一体化:SQL 集数据定义、数据操作和数据控制于一体,可以完成数据库中的全部工作。
  2. 使用方式灵活:SQL 具有两种使用方式,可以直接以命令方式交互使用;也可以嵌入使用,嵌入C、C++、Fortran、COBOL、Java 等语言中使用。
  3. 非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”,存储路径的选择和操作的执行由数据库管理系统自动完成。
  4. 语言简洁、语法简单:该语言的语句都是由描述性很强的英语单词组成,而且这些单词的数目不多。

SQL 包含以下 4 部分:

1)数据定义语言(Data Definition Language,DDL)

用来创建或删除数据库以及表等对象,主要包含以下几种命令:

  • DROP:删除数据库和表等对象
  • CREATE:创建数据库和表等对象
  • ALTER:修改数据库和表等对象的结构

2)数据操作语言(Data Manipulation Language,DML)

用来变更表中的记录,主要包含以下几种命令:

  • SELECT:查询表中的数据
  • INSERT:向表中插入新数据
  • UPDATE:更新表中的数据
  • DELETE:删除表中的数据

3)数据查询语言(Data Query Language,DQL)

用来查询表中的记录,主要包含 SELECT 命令,来查询表中的数据。

4)数据控制语言(Data Control Language,DCL)

用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:

  • GRANT:赋予用户操作权限
  • REVOKE:取消用户的操作权限
  • COMMIT:确认对数据库中的数据进行的变更
  • ROLLBACK:取消对数据库中的数据进行的变更

下面是一条 SQL 语句的例子,该语句声明创建一个名叫 students 的表:

CREATE TABLE students (
    student_id INT UNSIGNED,
    name VARCHAR(30) ,
    sex CHAR(1),
    birth DATE,
    PRIMARY KEY(student_id)
);

该表包含 4 个字段,分别为 student_id、name、sex、birth,其中 student_id 定义为表的主键。

现在只是定义了一张表格,但并没有任何数据,接下来这条 SQL 声明语句,将在 students 表中插入一条数据记录:

INSERT INTO students (student_id, name, sex, birth)
VALUES (41048101, 'CSDN', '1', '2023-04-06');

执行完该 SQL 语句之后,students 表中就会增加一行新记录,该记录中字段 student_id 的值为“41048101”,name 字段的值为“CSDN”。sex 字段值为“1”,birth 字段值为“2023-04-06”。

再使用 SELECT 查询语句获取刚才插入的数据,如下:

SELECT name FROM students WHERE student_id=41048101;
+--------------+
| name         |
+--------------+
| CSDN         |
+--------------+

上面简单列举了常用的数据库操作语句,在这里留下一个印象即可,后面我们会详细介绍这些知识。

注意:SQL 语句不区分大小写,许多 SQL 开发人员习惯对 SQL 本身的关键字进行大写,而对表或者列的名称使用小写,这样可以提高代码的可阅读性和可维护性。本教程也按照这种方式组织 SQL 语句。大多数数据库都支持通用的 SQL 语句,同时不同的数据库具有各自特有的 SQL 语言特性。

拓展

标准 SQL 是指符合国际标准的 SQL,而非某个数据库厂商的 SQL 语法(如:Microsoft SQL Server 的 T-SQL,Oracle 的 PL/SQL,MySQL)。

标准 SQL 可以在任何数据库中使用,而数据库厂商的 SQL 只适合它们对应的数据库,如 T-SQL 只适合 Microsoft SQL Server。

这里讲解的 SQL 是专门针对 MySQL 的,虽然多数语法也适用于其它 DBMS,但不是所有 SQL 语法都是完全可移植的。 

对于 SQL 初学者,在写 SQL 语句时,只要遵守下面几个书写规则,就可以避免很多错误。

这些规则都非常简单,我们来逐一介绍:

SQL 语句要以分号;结尾

在 RDBMS (关系型数据库)当中,SQL 语句是逐条执行的,一条 SQL 语句代表着数据库的一个操作。

我们通常在句子的句尾加注标点表示这句话结束,中文句子以句号结尾,英文以点号.结尾,而 SQL 语句则使用英文分号;结尾。

SQL 语句不区分大小写

SQL 不区分关键字的大小写。例如,不管写成 SELECT 还是 select,解释都是一样的。表名和列名也是如此。

提示:关键字是数据库事先定义的,有特别意义的单词。

虽然可以根据个人喜好选择大写还是小写(或大小写混杂),但为了理解起来更加容易,本教程使用以下规则来书写 SQL 语句。

  • 关键字大写
  • 数据库名、表名和列名等小写

需要注意的是,插入到表中的数据是区分大小写的。例如,向数据库中插入单词 Computer、COMPUTER 或 computer,这三个是不一样的数据

常数的书写方式是固定的

SQL 语句常常需要直接书写字符串、日期或者数字。例如,书写向表中插入字符串、日期或者数字等数据的 SQL 语句。

在 SQL 语句中直接书写的字符串、日期或者数字等称为常数。常数的书写方式如下所示:

  • SQL 语句中含有字符串的时候,需要像 'abc' 这样,使用英文单引号'将字符串括起来,用来标识这是一个字符串。
  • SQL 语句中含有日期的时候,同样需要使用英文单引号将其括起来。日期的格式有很多种('26 Jan 2010' 或者'10/01/26' 等),本教程统一使用 '2020-01-26' 这种'年-月-日'的格式。
  • 在 SQL 语句中书写数字的时候,不需要使用任何符号标识,直接写成 1000 这样的数字即可。

注意:列名不是字符串,不能使用单引号。在 MySQL 中可以用倒引号`把表名和列名括起来。

单词需要用半角空格或者换行来分隔

SQL 语句的单词之间必须使用半角空格(英文空格)或换行符来进行分隔。没有分隔的语句会发生错误,无法正常执行。

下面是分隔和未分隔的 SQL 语句:

  • CREATE TABLE Product(正确)
  • CREATETABLE Product(错误)
  • CREATE TABLEProduct(错误)

不能使用全角空格(中文空格)作为单词的分隔符,否则会发生错误,出现无法预期的结果。

SQL 语句中的标点符号必须都是英文状态下的,即半角字。

黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括


http://www.kler.cn/a/7535.html

相关文章:

  • 高级计算机算法的8道题(贪心、动态规划)
  • git上传文件到远程仓库
  • 系统架构设计师第二版口诀
  • VoIP是什么?
  • python makedirs() 详解
  • layui的table组件中,对某一列的文字设置颜色为浅蓝怎么设置
  • Java面向对象多态
  • 定语从句的省略
  • 【Go基础】一篇文章带你了解 — 异常处理
  • Kafka系列——详解如何使用和配置生产者实现可靠的消息发送
  • springboot(16)自定义注解
  • MobTech MobLink|无码邀请是怎么处理的
  • 61-二分搜索树BST
  • 为什么我们认为GPT是一个技术爆炸
  • 面试腾讯T7,被按在地上摩擦,鬼知道我经历了什么?
  • 常用设计模式(超级无敌认真好用,万字收藏篇!!!!)
  • 【Redis学习】Redis复制(replica)
  • 算法自学__线性动态规划
  • Word控件Spire.Doc 【页眉页脚】教程(10): 锁定标题以防止在 C# 中编辑 word 文档
  • Python 异常处理
  • 【电商干货】旺旺满意度考核你达标了吗?
  • ChatGPT 辅助软件编程
  • Autosar COM Stack系列介绍01_一文看懂各层PDU
  • Java重写(Override)重载(Overload)
  • shiro漏洞复现及其攻击流量分析
  • 【Nowcoder-BC146.添加逗号 -OR63.删除公共字符】