第二讲:结构化查询语言(一)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲:结构化查询语言SQL(一)
在数据库中的所有的数据都是由DBMS进行管理的。那么程序员如何通过DBMS与数据库进行交互呢?这就需要程序员和DBMS之间有一个相互交流和沟通的语言,我们将这个语言称之为结构化查询语言,即Structured Query Language,英文简称SQL。
作为一个合格的程序员,SQL指令是我们在开发基于数据库的应用时使用的最多的与数据库打交道的命令。因此数量掌握SQL语句是必要的。
【SQL语句的分类】
通常我们将SQL中的指令分为数据定义语句(DDL)、数据操纵语句(DML)、数据控制语句(DCL)。它们各自的描述如下:
数据定义语句(DDL):
数据定义语句DDL用于定义和修改数据库对象。数据库对象包括模式(表)、外模式(视图)和内模式(索引)。常用的数据定义语句有create、alter、drop 等
数据操纵语句(DML):
数据操纵语句DML用于完成数据查询和数据更新的功能,数据的查询功能包括查询语句SELECT,数据更新功能包括插入语句INSERT、删除语句DELETE、更新语句UPDATE。
数据控制语句(DCL):
数据控制语句DCL用于定义数据的安全控制功能,主要是对数据库中的对象的存取控制,即其规定不同的用户对不同的数据库对象具有不同的存储权限。常用的指令为GRANT、REMOVE。
【数据库的生命周期】
数据库的生命周期是指数据库从创建、使用直至消亡的过程。通常在这个过程中我们需要使用以下的数据库指令:
数据库的生命周期一般由程序员自己掌握,但是在某一些大型应用中也会将应用程序与数据库分离为两个独立的服务器,由专门的数据库管理员负责管理数据库的生命周期。
【SQL语句的注释】
SQL语句中的注释通常有两种:单行注释和多行注释。
单行注释:
单行注释通常使用两个横线表示,即“--注释内容”只能对SQL语句中的某一行进行注释。
多行注释:
多行注释采用和C程序一样的注释即“/*注释内容*/”,通常可以对SQL中的一段进行注释。
【创建数据库】
数据库的创建通常使用数据定义语句CREATE进行。基本格式如下:
其中CREATE是数据定义语句,意思为创建,后跟DATABASE关键字进行说明,此时创建的对象为数据库。DATABASE_NAME是指由用户创建的数据库名称。通常命名规则与C++等高级语言中的命名规则相同。
[例] 创建一个学生数据库
下面我们在SQL Server中运行,查看结果:
【使用数据库对象】
此时我们可以看到我们已经成功的创建了数据库Student。接下来就是需要新建某一个数据表了,但是由于SQL Server每次启动时都使用的是上一次操作保存的数据库,所以对于数据库Student来说,要想进行操作,就必须要先被使用。通常我们采用USE关键字完成这件事情,格式如下:
[例] 使用Student数据库:
【创建数据表】
在正确使用数据库之后,我们就可以在数据库中建立表格了。当然表格的名字可以和数据库名称相同,但是我奉劝大家不要这么做,毕竟这样调试代码的时候不容易看出错误。我们所定义的名称应该具有唯一性。那么如何在数据库中建立一张表格呢?同样我们需要使用CREATE关键字,但是不同的是我们使用TABLE描述表名,同时使用一对小括号描述数据库的每个属性(即每个列)。
创建数据表的格式如下:
其中COLUMN指示了属性的名称,而COLUMN_TYPE指示了属性的类型。在SQL Server中,属性的类型可支持29种,由于大家的记忆力也是很有限的,故此在这里仅介绍几种常用的类型。
接下来我们将以新建一张学生信息表为例,说明CREATE TABLE指令的用法。实例如下:
在执行完上述指令后我们将看到数据库系统中多出了如下的表格:
接下来我们可以选中这张表格,右击鼠标,选择“编辑前200行”命令进入
数据表。此时我们将会看到如下的空表:
当然,此时你也可以通过该窗口向数据表中添加元组,你只需要将每一组元组设置好,然后按下回车就可以保存了。如下图:
当然此时我们也可以看到在这张手动添加的数据表中出现了一个很严重的逻辑错误。我们的学号是唯一的,因此通过我们的学号可以唯一的确定我们的姓名,但是现在学号出现了不唯一的情况而且数据库系统并没有出现报错的情况。怎么办呢?此时我们需要回顾到我们以前学过的一个知识点了。
通常我们将唯一能够确定某一个元组的属性称之为主码,也称之为主键,在SQL语句中常使用PRIMARY KEY作为关键字进行描述。在上述表格中,我们可以发现学号即ID是该表格的主码,因此我们需要将它设置为主码。
【设置主键】
设置主键通常使用两种方式,第一种是在新建表格时直接指定主键,当然,每个数据表中的主键只能有一个。例如我们在新建上述学生信息表时可以将ID 设置为主键,代码如下:
当然如果你的数据表已经建立好,并且其中已经含有了一些数据,此时你的
数据表就不能再重新删除新建了,倘若这个时候你想修改主码就必须要借助于数据定义语句中的ALTER命令对数据表中的主键进行重新定义。如上述的学生信息表,你可以使用以下指令修改:
上述指令中的第一句是修改学生信息表中的属性ID为非空的意思,由于设置主键需要在非空列上进行,因此我们首先需要将原先允许为空的主键列设置为不允许为空。最后一句是为学生信息表添加一个主键,并且设置主键列为ID。其中CONSTRAINT关键字用于指示约束的别名。NEW_PK是这个约束的别名。
在设置完主键之后我们再一次进入表格,并且添加两个相同的学号查看一下结果:
此时我们发现数据库终于报错了,报错的内容如下: