【云驻共创】轻松学习华为云数据库之SQL语言

举报
静Yu 发表于 2022/04/20 10:41:16 2022/04/20
【摘要】 SQL是一种通用的,功能强大同时又是简单易学的关系数据库语言,集数据查询、数据操作、数据定义和数据控制四大功能为一体。就让我们走进SQL语言,了解一下它的强大之处。

一、 引言

数据库对于计算机专业的人来说是非常熟悉的,非专业的人来说肯定也听到过。那么什么是数据库呢?专业的来说,数据库其实就是一种电子的仓库,专门用来存储数据和管理数据的一种处所,用户可以对数据库进行一系列的增删改查。
华为云数据库是基于华为多年数据库研发、搭建、维护经验打造,产品包括云数据库RDS for MySQL,RDS for PostgreSQL,GaussDB,文档数据库服务DDS,数据复制服务DRS等。
我们今天重点讲述的内容是其中的一项SQL语言。

二、 SQL语言概述

2.1 SQL语言简介

SQL是一种结构化查询语言, 同时也是高级的非过程化编程语言。它除了数据查询,它还具有很多别的功能,如可以定义数据结构、维护数据库中的数据,以及定义安全性约束等。在1974年由California研究实验室研制的一种关系数据库管理系统,研制出一套规范语言SEQUEL,并在1976年公布新版本的SEQUEL2,在1980年才正式更名为SQL。

2.2 SQL语言的特点

(1)语言功能的一体化:SQL语言风格统一,集数据操纵,数据定义,数据控制功能于一体,可以完成数据库活动中的全部工作,包括创建数据库、定义模式、更改和查询数据以及安全控制和维护数据库等。
(2)高度非过程化:SQL语言是一种高度非过程化的语言,在使用SQL语句访问数据库时,用户没有必要告诉计算机如何一步步完成任务,只需要用SQL语言描述要做什么就行了,数据库管理系统会自动完成全部工作。
(3)面向集合的操作方式:SQL语言采用集合操作方式,不仅查询结果是记录的集合,而且插入、 删除和更新操作也是记录的集合。用户只要使用一条操作命令,其操作对象和操作结果都可以是行的集合。数据操纵语言包括插入、删除、修改、查询、统计、分组、排序。
(4)提供多种方式使用:SQL既是自含式语言,又是嵌入式语言。自含式语言可以独立地联机交互,即用户可以直接以命令的方式交互使用。嵌入式语言是指SQL可以嵌入到向Java、C#等高级程序设计语言中使用。
(5)语言简洁: SQL语法简单,易学易用。
(6)支持三级模式结构:视图和部分基本表,对应的是外模式,全体表结构对应的是模式,数据库的存储文件和它们的索引文件构成关系数据库的内模式。

2.3 SQL语言的功能

(1)数据定义
能够定义数据库的三级模式结构,即外模式、内模式和全局模式,其中外模式也叫做视图,全局模式简称模式,内模式由系统根据数据库模式自动实现,一般无需用户过问。也可以实现对基本表、视图、索引文件的定义,也可以实现模式的修改和删除等操作。
(2)数据操作
提供了数据查询和数据维护两种功能,尤其是很强的数据查询能力。数据查询就是对数据库中的数据查询、统计、分组、排序等操作;数据维护就是对数据的插入、删除、更新等数据维护操作。后文我们也会详细介绍这些SQL语言的操纵语句,现在先简单认识一下。
(3)数据控制
数据控制包括对基本表和视图的授权,完整性规则定义和更新的描述,以及事务控制语句等,其目的就是保证系统的安全性。

三、 SQL语言操纵语句

3.1 Excel和传统数据库的组织结构

整个Excel表叫做工作簿,users、books叫做工作表,users有三行数据,每一行数据有六列信息组成,每列信息都有其相对应的信息类型。传统数据库的组织结构包含数据库、数据库表、数据行和字段。数据库就类似于Excel的工作簿,数据表就类似于Excel的工作表,数据行就类似于Excel的每一行数据,字段就类似于列信息。

3.2 定义数据库

创建一个新的数据库的,语句格式为:CREATE DATABASE <database_name>,<>中是这个数据库的名字。
例如:
CREATE DATABASE base1;
创建了一个名为 base1,在数据库软件中执行本条语句之后就会显示“命令已成功完成”。

3.3 定义及维护数据表

定义一个数据表的语句格式为:CREATE TABLE <table_name>,<>中的字母也是代表这个数据表的名字。
例如:
CREATE TABLE tab1;
一个数据库最重要的还是数据,在我们创建数据表的时候就可以开始添加各个属性列了,此时需要说明各属性列的数据类型。在创建表的同时通常还可以定义与该表有关的完整性约束,这些完整性约束条件被存入系统的数据字典中,当用户操作表中的数据时由DBMS自哦懂检查该表操作是否违背了这些完整性约束条件。如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。
表级约束一共有六种:
(1) DEFAULT:默认值约束;
(2) UNIQUE:惟一性约束;
(3) PRIMARY KEY:主键约束;
(4) FOREIFN KEY:外键约束;
(5) REFERENCES:参照完整性约束;
(6) CHECK:检查约束;
例如:

CREATE TABLE MY_school
(
School_id CHAR(5) NOT NULL,
School_name CHAR(10) NULL ,
School_dean CHAR(10) NULL ,
School_tel CHAR(13) NULL ,
School_addr CHAR(8) NULL,
PRIMARY KEY (School_id));

执行完成这些语句之后,我们通过查询语句就可以看到在数据库中已经存在我们创建的数据表的列信息了。

3.4 基本表的修改

在基本表建立之后,用户可以根据实际需要对基本表的结构进行修改。SQL语言用ALERT TABLE语句修改基本表,其一般格式为:

ALERT TABLE <table_name>
[ADD <新列名><数据类型>|<完整性约束>]
[DROP COLUMN <列名>|<完整性约束>]
[ALTER COLUMN<列名><数据类型>];

其中<表名>是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件;DROP子句用于删除指定列和指定的完整性约束条件;ALERT子句用于修改原先的列定义,包括修改列名和数据类名。
例如:

ALTER TABLE MY_school
ADD School_brief CHAR(50) NULL;

现在再查询基本表的话,就会多出一个信息列,就是刚刚添加的School_brief.

3.5 基本表的删除

当某个基本表不再需要时,可以使用DROP TABLE语句删除。
其一般格式为:

DROP TABLE [IF EXISTS] <表名1> [<表名2>,<表名3>……]

DROP TABLE可以同时删除多个表,只要将表得名字依次写在后面,相互之间用逗号隔开。 IF EXISTS 用于在删除表之前判断该表是否存在。如果不加IF EXISTS, 当数据库表不存在时MySQL将提示错误,中断SQL语句的执行;加上IF EXISTS后,当数据库表不存在时SQL语句可以顺利执行,但是会发出警告(warning) .而且基本表的删除也是有限制条件的,要删除的基本表不能被其他表的约束所引用。如果存在这些依赖该表的对象,则表不能被删除。

3.6 定义视图

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,不存放视图对应的数据,这些数据仍存放在原来的基本表中,所以基本表中的数据发生变化,从视图中查询出的数据也会发生改变。
SQL语言用CREATE VIEW命令建立视图,其一般格式为:

CREATE VIEW view_name 
AS SELECT column_name(s)
FROM table_name
WHERE condition

其中view_name指定视图的名字,该名称在数据库中必须是唯一的,不能与其他数据库或视图同名;<SELECT……FROM……WHERE……>指定创建视图的SELECT语句,可用于查询多个数据库表或源视图。
例如:

CREATE VIEW v_school
AS SELECT school_id,school_name FROM MY_school

3.7 定义触发器

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,也是一种保证数据完整性的方法。触发器实际上是一类特殊的存储过程,其特殊性表现在一旦定义,无须用户调用,任何对表的修改操作均由服务器自动激活相应的触发器。
定义触发器的格式为:

CREATE < Trigger_ name > < BEFORE| AFTER >
< INSERT| UPDATE| DELETE >
ON < table_ name > FOR EACH Row< Trigger body >

< BEFORE| AFTER >指触发器在动作前触发还是之后触发,< INSERT| UPDATE| DELETE >是要进行什么操作,EACH Row< Trigger body >触发器触发检验的条件。

3.8 数据库表数据输入

SQL的INSERT语句用于向数据表中插入数据,既可以插入单行,也可以插入多行,甚至可以插入子查询的结果。
插入单行元组的INSERT语句的格式为:

INSERT
INTO < table_ name > [(<column1_ name>[< column2_ name >..)]
VALUES (<value1> [, < value2>]

INTO指定要插入数据的表名及字段,字段的顺序可与表定义中的顺序不一致,没有指定字段表示要插入的是一条完整的记录,且字段属性与表定义中的顺序一致,指定部分字段表示插入的记录在其余字段上取空值。
例如我们在第一个表格中插入一条数据就会出现第二个表格:

INSERT INTO MY_school(School_id,School_name,School_dean,School_tel,School_addr)
VALUES('H','媒体与设计','王佳佳','010-81794522','H-MTSJ');


3.9 数据库表数据修改

修改操作语句的一般格式为:

UPDATE < table name >
SET < column name1 >=< new value 1>
[< column name2 >=< new value 2>]...
[WHERE column_ name=some_ value]

其功能是修改指定表中满足WHERE子句条件的数据。其中,SET指定修改方式要修改的字段,修改后取值;WHERE指定要修改的记录,缺省表示要修改表中的所有记录。
例如我们要修改第一个表中的数据进行如下操作:

UPDATE MY_ school SET School_ dean= '王佳佳’ WHERE School id= 'G';


3.10 数据库表数据删除

删除数据的一般格式为:

DELETE FROM < table name >
[WHERE < condition >];

DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有数据,如果省略WHERE子句表示删除表中的所有数据,但表的定义仍在数据字典中,也就是说DELETE语句删除的是表中的数据,而不是关于表的含义。
例如进行以下删除操作:

DELETE FROM MY_ school WHERE School_ name= '媒体与设计';


四、 结语

SQL是一种通用的,功能强大同时又是简单易学的关系数据库语言,集数据查询、数据操作、数据定义和数据控制四大功能为一体。自SQL成为国际标准语言以来,各个数据库厂家纷纷推出各自的SQL软件或与SQL的接口软件。这就使大多数数据库均用SQL作为共同的数据存放语言和标准接口,使不同数据库系统之间的互相操作有了共同的基础。SQL已成为数据库领域中的一个主流语言,被广泛应用在商用系统中,现已成为数据开发的标准语言。

本文整理自华为云社区【内容共创】活动第15期。
https://bbs.huaweicloud.com/blogs/345822
任务21:华为云数据库之SQL语言

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。