教材:王珊 萨师煊 编著 数据库系统概论(第5版) 高等教育出版社
注:文档高清截图在后
我个人也是 SQL 的初学者,教程难免出错。如果发现 SQL 语句相关的教程有错,请大家千万千万要指出来。
第3章 关系数据库标准语言SQL
3.1 SQL概述
1、结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。
2、SQL的特点:
【1】综合统一。
SQL集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)于一体,可以独立完成数据库的生命周期中的全部活动,包括:
(1)定义、修改、删除关系模式,定义、删除视图,插入数据,建立数据库。
(2)对数据库中的数据进行查询与更新。
(3)数据库的重构和维护。
(4)数据库的安全性与完整性的控制,以及事务控制。
(5)嵌入式SQL和动态SQL定义。
与非关系模型的数据库不同,通过SQL构建的数据库在投入运行后可以随时逐步修改模式,不影响数据库的运行。而非关系模型数据库在运行后,如果需要修改模式,必须停止运行、转储数据,修改模式并便于后重装数据库,不但操作麻烦,而且带来了巨量的维护成本。
【2】高度非过程化。
非关系数据模型的DML是面向过程的语言,完成某项请求时必须指定存取路径。用SQL进行操作时,只用指定“做什么”,而无需指明“怎么做”,这部分内容会由系统自动完成。这大大减轻了用户负担,且有利于提高数据独立性。
【3】面向集合的操作方式。
非关系数据模型采用面向记录的操作方式,操作对象是单条记录。如果需要对大量记录进行操作,必须一条一条把所有需要操作的记录枚举出来,而且需要说明具体的处理过程,如按照哪条路径、如何循环等。SQL可以对元组的集合一并进行某项操作,极大减少了工作量。
【4】以同一语法结构提供多种使用方式。
SQL可以作为独立的语言,能独立地应用于联机交互的使用方式,可以直接输入SQL命令对数据库操作。而且SQL还可以作为嵌入式语言嵌入到高级语言(C++、Java等)中,程序员在设计相应程序时可以直接操作数据库。两种不同的使用方式下,SQL的语法结构基本一致。这个特点提供了极大的灵活性与方便性。
【5】语言简洁、易学易用。SQL的核心功能只有9个词:
select, create, drop, alter, insert, update, delete, grant, revoke
SQL接近英语口语,易于学习和使用。
3、没有一个数据库系统能支持SQL标准的全部概念和特性。许多厂商的SQL的基本命令集作了不同程度的扩充或修改,可以支持标准以外的一些功能特性。目前SQL的标准的最新版本是SQL 2016。各厂商的数据库产品(Oracle / MySQL / SQL Server等)对SQL的支持也有所不同,具体需要查找相应的资料。
3.3 数据定义
1、SQL的数据定义语句可以对模式、表、视图、索引进行操作。在SQL标准中,模式和视图的定义不能被修改。如果需要修改,只能删除后重建。表和索引则是可以被修改的。一个关系数据库管理系统的实例(instance)或者项目(project)中可以建立多个数据库,一个数据库可以建立多个模式,一个模式可以包括多个表、视图、索引等对象。
2、所有的SQL命令可以在命令行中完成,也可以在数据库产品提供的GUI(图形界面)中完成。例如MySQL中就有对应的命令行来执行SQL语句,也可以采用PHP语言。而MySQL Workbench则是设计数据库的一个GUI。至于Microsoft的SQL Server,则需要在安装SQL Server之后,额外安装SQL Server Management Studio(SSMS)来进行。SSMS在新版的SQL Server中已经不再一起提供,需要单独下载安装。新建Query(请求)文件后,就可以输入SQL语句并执行。


3、定义一个模式或数据库可以通过如下的语句:
MySQL:
create schema s;
create database d;
执行以后,可以在模式选项卡中看到新增的模式。如果没有,则需要右键并刷新。

MySQL不支持书本上的authorization命令。
SQL Server中,输入:
create schema s authorization andy;
来建立模式s(此种输入方式不允许名称含有特殊符号,如果需要输入如-之类的字符,应该把名称加上引号),并指定用户名andy(SQL Server对大小写不敏感)。但是,指定的用户名必须存在于数据库的Users中,否则会报错。如果没有,需要先创建对应的用户。默认情况下是对内置的master数据库进行操作的。在Users文件夹上右键,选择“新用户”,然后输入用户名和登录名。这要求登录名也必须存在,否则依然会报错。


在启动SQL Server的时候会有选择服务器的界面。如果是第一次启动,一般只有本机可选,且身份验证只有“Windows验证”一种方式。此时选择连接即可。界面加载完毕后,在服务器的“安全”文件夹中可以看到“登录名”文件夹,右键并选择新建。输入登录名和密码后,在“服务器角色”一栏把全部的权限都打勾。然后在“状态”一栏,确保“连接到数据库引擎”和“登录”都被授权,然后确定。再开始建立需要的用户名。输入用户名和密码后,在“拥有的模式”和“成员关系”两个选项卡中,把除了“Guest”以外的框都选中,然后确定,就可以正确执行上面的语句了。





要将一个模式彻底删除,在MySQL中输入如下语句:
drop schema s;
MySQL的drop命令默认是级联(cascade)的,也就是说被删除对象包括的内容会全部一起删除。而SQL Server不允许这种操作,如果被删除的对象与其它内容相关联,则会直接报错。在使用两个数据库产品编写SQL语句时,都不能像书本的示例那样在drop命令的最后直接添加cascade或restrict修饰。
MySQL和SQL Server中,彻底删除一个模式的写法是一样的:
drop schema

本文是关于数据库系统概论中的SQL教程,涵盖了SQL的概述和数据定义。内容包括SQL的四个特点:综合统一、非过程化、面向集合和易学易用。讨论了数据定义语句如何对模式、表、视图、索引进行操作,并对比了MySQL和SQL Server中创建、修改和删除模式的差异。
最低0.47元/天 解锁文章
7688

被折叠的 条评论
为什么被折叠?



