【梳理】数据库系统概论 第3章 关系数据库标准语言SQL 3.1 SQL概述 3.3 数据定义(瞬间吐血弃坑警告:不要照搬书上的SQL语句 · 附:图文MySQL / SQL Server简易教程)

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

教材:王珊 萨师煊 编著 数据库系统概论(第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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值