1
智慧物流与供应链基础
1.7.2.1 任务一 SQL概述
任务一 SQL概述

引 例

SQL——数据科学库中的关键齿轮

SQL是数据科学库中的一个关键齿轮。为了依据数据做出明智的决策,世界各地的组织都在聘请数据专业人士,如业务分析师和数据科学家,从海量的数据宝库中挖掘信息。其中一个最重要的分析工具就是SQL!

结构化查询语言(SQL)已经存在了几十年。它是一种编程语言,用于管理关系数据库中保存的数据。世界各地的大多数大公司都在使用SQL。数据分析员可以使用SQL访问、读取、操作和分析数据库中存储的数据,并生成有用的信息,以推动明智的决策过程。

作为核心的数据库,性能始终决定着数据库的生命力和可用性。经过一段时间的运行,绝大多数数据库在性能上一直存在瓶颈,主要体现的是数据库SQL的执行效率,具体涉及SQL执行计划、硬件I/O读写效率和数据存储设计等方面。因此,优化SQL对于整个数据库的正常运行起到极其重要的作用。

(资料来源:IT专家网)

思考题:

1.SQL是什么?为什么说它是数据科学库中的关键齿轮?

2.举例说明SQL在智慧物流领域的应用。

引例分析:结构化查询语言(SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库的系统。随着大数据时代的到来,SQL的实际应用很符合二八定律,即20%的基础内容能应用到80%的工作场景中,80%的进阶技能应用到20%的工作场景中。对于非编程岗位来说,其实只需掌握20%的基础应用就能高效应对实际工作中的各种问题。

一、SQL简介

(一)SQL的概念

SQL是Structured Query Language的缩写,中文译为“结构化查询语言”。SQL是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。SQL被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库,定义和操作数据,维护数据的完整性和安全性。

SQL是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres等,都将SQL作为其标准处理语言。

(二)SQL的发展

1970年6月,E.F.Codd博士在IBM的圣何塞研究中心发表了里程碑性的论文《大型共享数据库数据的关系模型》,确立了关系数据库的概念。虽然IBM首创了关系数据库理论,但Oracle却是第一家在市场上推出这套技术的公司。随着时间的推移,SQL在市场上获得了不错的反响,从而引起了美国国家标准学会(ANSI)的关注,分别在1986—2020年发布了SQL标准。SQL发展历程如图11-1所示。

图11-1 SQL发展历程

二、SQL的特点

(一)综合统一

SQL语言集数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。例如,用户在数据库投入运行后,还可根据需要随时逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩充性。

(二)高度非过程化

非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性。

(三)面向集合的操作方式

SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。

(四)以同一种语法结构提供两种使用方式

SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作。

三、SQL的语言类型及用法

(一)数据定义语言(DDL)

数据定义语言(Data Definition Language,DDL)主要用于创建数据库中的各种表、视图、索引。它的操作对象是一张表或一个视图,不直接对表中的数据进行操作。适用范围:对数据库中的某些对象(如Database,Table)进行管理。常用命令:create(创建)、alter(修改)和drop(删除)。需要注意的是DDL类操作不能做RoolBack操作,一旦执行无法回退。示例如下。

1.创建一个表

create table student(

id int identity(1,1)not null,

name varchar(20) null,

course varchar(20) null,

grade numeric null

);

2.Student表增加一个年龄字段

alter table student add age int NULL——Student表增加年龄字段。

alter table student drop column age——Student表删除年龄字段,相比增加命令,删除时需要在字段前加Column。

3.删除Student表

drop table student——删除表的数据和表的结构。

truncate table student——只是清空表的数据,但并不删除表的结构。Student表还在,只是数据为空。truncate删除释放空间。

(二)数据操作语言(DML)

数据操作语言(Data Manipulation Language,DML)主要用来实现对数据库的基本操作,包括insert、delete、update、select(插入、删除、修改、检索)。它的操作对象是数据表中的某一行数据或者某几行数据。示例如下。

1.向Student表中插入数据

向数据库表中一次性插入多行多列数据,格式为“insert into table(字段1,字段2,字段3)values(值1,值2,值3),(值1,值2,值3),...;”。

例如:insert into table student(name,course,grade)values('张飞','语文',90),('刘备','数学',70),('关羽','历史',25),('张云','英语',13);

2.更新关羽的成绩

格式为“update student set grade='18'where name='关羽';”。

3.删除关羽的成绩

格式为“delete from student where name='关羽';”。

(三)数据查询语言(DQL)

数据查询语言(Data Query Language,DQL)主要用来查询表文件中的数据,有单表查询、多表查询、子查询、自关联查询和特殊查询,基本结构是由select子句、from子句、where子句组成的查询块:select <字段名表>from <表或视图名>where <查询条件>。

例如:select * from student;

——从Student表中查询所有的数据。

select * from student where name='张飞';

——从Student表中查询姓名为张飞的学生。

(四)数据控制语言(DCL)

数据控制语言(Data Control Language,DCL)用来授权或回收访问数据库的某种特权,并控制数据库操作事务发生的时间及效果,能够对数据库进行监视,如创建用户、授权、撤销授权等操作。

1.创建用户

语法结构为“create user用户名@地址identified by'密码';”。

例如:create user testuser@localhost identified by'111111';

——创建一个testuser用户,密码为111111。

2.授权

语法结构为“grant权限1,…,权限n on数据库.对象to用户名;”。

例如:grant create,alter,drop,insert,update,delete,select on test.* to testuser@localhost;

——将Test数据库中所有对象(*表示所有对象,如表、视图、存储过程、触发器等)的create,alter,drop,insert,update,delete,select赋给testuser用户。

3.撤销授权

语法结构为“revoke权限1,…,权限n on数据库.对象from用户名;”。

例如:revoke create,alter,drop on test.*from testuser@localhost;

——将Test数据库中所有对象的create,alter,drop权限撤销。

4.查看用户权限

语法结构为“show grants for用户名;”。

例如:show grants for testuser@localhost;

——查看Testuser的用户权限。

5.删除用户

语法结构为“drop user用户名;”。

例如:drop user testuser@localhost;

——删除Testuser用户。

6.修改用户密码

语法结构为“update user set password=password(‘密码’)where user=‘用户名’and host=‘IP’;flush privileges;”。

例如:update user set password=password('123456')where user='testuser'and host=‘localhost’;flush privileges;

——将Testuser的密码改为123456。

案例分析

文档 案例思考题参考答案

根据表11-1客户表和表11-2产品表,完成下列SQL操作。

表11-1 客户表

表11-2 产品表

思考题:

1.根据用户表,建立一个只包含客户ID、地址和订单日期的User_1表。

2.删除产品表。

3.在产品表中增加价格字段。

4.将数据(008,张馨语,山西省运城市盐湖区,运城市,山西省)插入用户表中。

5.将用户表中赵思的信息全部删除。

6.根据产品表,查询美的冰箱的供应商ID。