一、前言
大家好,上一讲我们对数据库的基本概念有了一个详细的了解。在我们进入SQL数据库的使用和开发之前,必须要对SQL语言有一个基础性的了解。那么这节课我们就重点学习下SQL语言的相关知识。
二、SQL概述
1、SQL 的定义及简要描述
那么,SQL语言到底是怎样的一种语言呢?所谓的SQL语言其实就是“结构化查询语言”,而S Q L(分开读)就是结构化查询语言的首字母的缩写。
SQL语言的核心功能包括数据查询、数据操纵、数据定义和数据控制四个部分。
SQL语言具有简洁、方便、实用的优点,为完成其核心功能。
SQL语言只用了6个动词,即查询(SELECT)、创建(CREATE)、插入(INSERT)、修改(UPDATE)、删除(DELETE)和授权(GRANT (REVOKE) )。
2、 SQL到底能干些什么?
那么,我们会有所疑惑,SQL语言到底能干什么?
假如有一天,公司领导要求你根据公司已有的销售数据生成一些统计信息,考虑到传统办公软件已不能胜任这样的业务需求,那么使用数据库来完成数据的统计分析似乎成了唯一的选项。
对于这样的一组销售数据,如果我们用SQL查询数据库来实现,那么只需要写出这样的一组语句,就能统计出指定月份的销售金额,那么这就是我们的可以使用SQL语言去实现的功能。
二、SQL语言组成
SQL语言是具有强大查询功能的数据库语言。除此以外,SQL语言还可以控制数据库管理系统为用户提供其它的相关功能,它们分别是 数据定义语言、数据检索语言、数据操纵语言、数据控制语言、数据共享、数据完整性。
1、 数据定义语言
SQL语言允许用户定义存储数据的结构和组织,以及存储数据项之间的关系,这就是数据定义语言。数据定义语言包括了表操作、视图操作、索引操作在内的诸多操作语句,比如常用的表创建语句就是典型的数据定义语言。
2、 数据检索语言
SQL允许用户或应用程序从数据库中检索存储的数据并使用,那么这就要用到数据检索语言。数据检索语言包括了查询语句和过滤语句在内的多种操作语言,像我们常用的条件语句、最小值函数、最大值函数、均值函数、求和函数都是属于数据检索语言。
3、数据操纵语言
SQL允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新,那么这就需要用到我们SQL中非常重要的数据操纵语言。
像我们使用最多的查询语句、插入语句、删除语句、修改语句就是属于数据操纵语言。
4、 数据控制语言
我们可以使用SQL语言来限制用户检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问,那么这时我们就会用到数据控制语言。数据控制语言包括了数据控制和事务控制两类语言,像我们用到的授权控制语句、事务控制语句都是属于数据控制语言。
5、 程序化SQL语句
那么最后我们来说一下程序化SQL语句,程序化SQL语句包括了像变量的定义、动态执行SQL语句在内的一些语法,相比较前面我们说到的语言种类,这些语法我们用到的不是很多,在这我们不做重点讲解。
三、SQL语句的结构
1、 注意语法顺序
那么下面我们了解下SQL语句的结构,首先我们了解下SQL语句的语法顺序,我们就以查询语句为例来给大家作详细的讲解。
好,如果我们想要得到右边的数据结果,那么查询语句的语法顺序应该是查询,字段列表,从,表名,条件是,年龄大于10,按年龄分组,取分组后计数大于1的,最后再输出前4条。
由此我们可以总结出查询语句的语法顺序是:
第1步,先选择from后面跟的表,产生虚拟表1;
第2步,当如果有Join和ON,那么我们会再连接其它表,合并生成虚拟表2;
第3步,对虚拟表2进行条件过滤,符合条件的记录会被插入到虚拟表3中;
第4步,对虚拟表3中的记录进行分组操作,产生虚拟表4;
第5步,再对虚拟表4进行HAVING条件过滤,符合条件的记录会被重新插入到虚拟表5中;
第6步,再用Select关键字选择指定的列并插入到虚拟表6中;
第7步,如果遇到UNION,那么会再连接两个SELECT查询语句,重复步骤1~6,并将2个虚拟表合并到虚拟表7中;
第8步,再将虚拟表7中的记录进行排序,重新生成虚拟表8。
第9步,那么最后再次取出指定行的记录,返回结果集。
那么这就是整个查询语句的执行顺序。
从上面的语法顺序解析中我们也可以总结出以下几2点,
1、 SELECT 语句总是写在最前面,但在大部分语句之后才执行。所以在SQL语句中,我们不能在WHERE、GROUP BY、 HAVING语句中使用在 SELECT 中设定的别名。
2、 无论是书写顺序,还是执行顺序,UNION 都是排在 ORDER BY 前面的。SQL语句会将所有UNION 的查询记录合并在一起,再进行排序。
2、 不区分大小写
SQL语句的关键字是不区分大小写。在SQL语句的关键字中,无论是小写还是大写我们在执行的时候都是可以的。
3、 不同数据库系统之间SQL语法的异同
我们说下不同数据库系统之间SQL语法的差别问题。我们说不同的数据库系统,比如MySql、SQL Server或者说Oracle,他们在SQL的语法上是存在着差别的。
但是大家不用担心,这种差别是不大的,因为它们同属结构化查询语言,它们都遵循着结构化查询语言的语法标准,所以如果你学会了MySql版本的SQL语言再来学习SQL Server版本的,那么也是水到渠成的。
那么考虑到使用的覆盖率问题,后续我们绝大多数时间内都会以MySql数据库,再结合数据库管理工具Navicat来跟大家一起学习SQL语言。
四、本讲总结
通过本节课的学习,我们对SQL语言的基本概念有了一个较为基础的了解。那么下一课我们将一起学习下数据库、表、行列键等概念。
好,本节课就先到这里,谢谢大家!
本文暂时没有评论,来添加一个吧(●'◡'●)