第二讲:结构化查询语言(一)
- 格式:doc
- 大小:133.50 KB
- 文档页数:11
结构化查询语言结构化查询语言(Structured Query Language,简称SQL)是一种用于数据库管理系统(DBMS)中的关系型数据库的查询和操作的编程语言。
它是数据库领域中最常用的标准化语言,可以用于在数据库中创建、修改和管理表,以及存储、检索和删除数据。
SQL是一种简单且易于理解的语言,它使用一种类似于人类语言的方式来描述对数据库的操作。
SQL可以执行各种各样的任务,包括创建数据库、创建表、插入数据、更新数据、删除数据以及查询数据等。
SQL具有一些非常有用的特性。
首先,它是一种声明性语言,这意味着开发人员只需要指定要实现的结果,而无需关心如何实现这些结果。
其次,SQL具有很强的扩展性,可以通过使用各种操作符和函数来实现复杂的查询。
此外,SQL还支持事务处理、并发控制以及数据完整性等关键概念。
SQL的语法可以大致分为以下几个部分:1. 数据定义语言(DDL):用于定义数据库的结构,包括创建数据库、创建表、修改表结构等操作。
例如,使用CREATE DATABASE语句创建数据库,使用CREATE TABLE语句创建表。
2. 数据操作语言(DML):用于在数据库中操作数据,包括插入数据、更新数据、删除数据等操作。
例如,使用INSERT INTO语句插入数据,使用UPDATE语句更新数据,使用DELETE语句删除数据。
3. 数据查询语言(DQL):用于从数据库中检索数据,包括使用SELECT语句查询数据,使用WHERE子句指定查询条件,使用ORDER BY子句排序查询结果等。
4. 数据控制语言(DCL):用于控制数据库的安全性和权限,包括授权用户访问数据库,撤销用户权限等操作。
例如,使用GRANT语句授权用户访问数据库,使用REVOKE语句撤销用户权限。
SQL的灵活性和强大性使得它成为了数据库管理系统的标准查询语言。
无论是开发网站、应用程序还是进行数据分析,SQL都可以帮助开发人员高效地操作和管理数据。
结构化查询语言结构化查询语言(Structured Query Language),简称SQL,是一种用于管理关系型数据库管理系统(RDBMS)的标准化查询语言。
它采用了一种描述性的方式来定义和操作数据库中的数据。
SQL使用了一些基本的关键字和语法来实现数据查询、插入、更新和删除等操作。
通过使用这些关键字和语法,用户可以轻松地创建数据库对象(如表、视图、索引等),并且能够执行各种复杂的查询操作。
SQL语句通常以“SELECT”关键字开头,用于从数据库中检索数据。
用户可以选择指定的列、特定的条件和排序规则来获取所需的数据。
例如,可以使用以下语句来检索名为“users”的表中所有用户的姓名和年龄:SELECT name, age FROM users;在SQL中,还可以使用“INSERT INTO”语句将数据插入到数据库中的表中。
这可以通过指定要插入的表和要插入的数据来完成。
例如,下面的语句将在名为“users”的表中插入一条新的记录,该记录包含姓名为“John”和年龄为“25”的用户:INSERT INTO users (name, age) VALUES ('John', 25);SQL还提供了更新数据的功能。
用户可以使用“UPDATE”语句修改表中的现有记录。
这可以通过指定要更新的表、要更新的列和更新后的值来完成。
例如,下面的语句将更新名为“users”的表中的姓名为“John”的用户的年龄为30:UPDATE users SET age = 30 WHERE name = 'John';最后,SQL还允许用户使用“DELETE FROM”语句从表中删除记录。
这可以通过指定要删除的表和要删除的记录的条件来实现。
例如,下面的语句将从名为“users”的表中删除姓名为“John”的用户:DELETE FROM users WHERE name = 'John';除了基本的查询、插入、更新和删除操作外,SQL还提供了其他高级功能,如连接多个表、聚合函数、排序和分组等。
SQL-结构化查询语言1.SQL简介在这里插入图片描述SQL是一种结构化查询语言,是专门为数据库而建立的操作命令集,是一门数据库语言。
对于数据库的交互操作离不开SQL,SQL为我们管理数据库提供了极大的方便。
1.1 数据库用例构建•在MySQL命令行客户端中运行“CREATE DATABASE sample;”,创建sample 数据库•在MySQL命令行客户端中运行“USE sample;”,转至sample数据库进行后续操作•在MySQL命令行客户端中运行create.txt中的SQL语句,创建数据表•在MySQL命令行客户端中运行populate.txt中的SQL语句,将数据导入sample数据库•在MySQL命令行客户端中运行“SHOW TABLES;”,查看数据表创建情况•在MySQL命令行客户端中运行“select * from Customers;select * from orderitems;select * from orders;select * from products;select * fromvend ors;”,查看数据导入情况数据库2.SQL总览在这里插入图片描述SQL语言的讲解可以从定义、语法规则、数据类型、SQL语法、函数、高级查询、视图这七个方面展开,但是我们需要知道SQL语言的核心与难点是解决数据库数据查询的问题,数据查询也是我们最常用的服务,所以我们要重点掌握这一核心技术!3.SQL详解3.1数据类型在这里插入图片描述SQL能够处理的数据类型包括以上十几种,这些数据都可以以表格的形式存储于数据库中,但是数据库的海纳百川是EXCEL无法比拟的,这也是为什么公司数据的存储用数据库的一个重要原因。
3.2 语法规则在这里插入图片描述语法规则是编写SQL语句必须遵守的硬规则,如果没有遵守,则会运行出错;所以我们对SQL程序的检查首先从它是否满足语法规则开始。
3.3 函数函数函数多用于对查询到的数据进行处理,与SQL语句结合使用,所以SQL语言还具有一定的数据分析能力。
SQL简介结构化查询语言SQL(Structure Query Language)是关系数据库的标准语言,是数据库领域中一个主流语言,1974年产生。
一、SQL概述1、SQL语言特点(1)是一种一体化语言集数据定义、数据操纵、数据控制功能于一体。
可以完成数据库中全部操作,包括定义关系模式、录入数据、查询、维护等。
(2)是一种高度非过程化语言不需一步步告诉“如何做”,只需描述“做什么”。
SQL可将要求交与系统自动完成。
存取路径的选择以及SQL语句的操作过程由系统自动完成。
减轻了用户负担,而且有利于提高数据独立性。
(3)语言非常简洁只用9动词就能完成数据库核心功能。
数据定义:CREATE、DROP、ALTER;数据操纵:SELECT INSERT、UPDA TE、DELETE;数据控制:GRANT (设置用户权限)、REVOKE (取消设置用户权限)。
(4)同一种语法结构提供两种使用方式◆自含式语言:能够独立地用于联机交互的使用方式。
◆嵌入式语言:能够嵌入到高级语言(例如C,COBOL,FORTRAN)程序中,供程序员设计程序时使用。
二、SQL基本操作举例1、定义基本表(创建基本表)◆格式:CREATE TABLE<表名>(<列名1><数据类型>[列级约束1][,<列名2><数据类型>[列级约束2]……][,<表级约束>])[其他参数];<表名>:是所要创建基本表的名字。
基本表由多个列(属性)组成。
列级约束:涉及相应属性列的完整性约束条件,一般包括是否允许为空值、取值范围约束等。
表级约束:涉及一个或多个属性列的完整性约束条件,一般包括复合属性构成的主、外关键字说明等。
其他参数:不是标准选项(不是必要的),用于与物理存储有关的说明。
定义表的各个属性时需指明属性名、数据类型、长度。
(1)列级约束与表级约束包含内容主码约束(PRIMARY KEY)、参照完整性约束、唯一性约束(UNIQUE)、非空值约束(NOT NULL)、取值约束(CHECK)。
第二讲:结构化查询语言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是这个约束的别名。
在设置完主键之后我们再一次进入表格,并且添加两个相同的学号查看一下结果:此时我们发现数据库终于报错了,报错的内容如下:在这里我们可以发现指定主键的好处是可以保证数据的唯一性,当出现相同数据时,数据库系统会为我们及时报错,进而防止了在数据库中插入重复数据的操作。
毕竟两个人不能够有同一个学号啊!【数据表的删除】那么如何在DBMS中删除一个数据表呢?此时我们可以使用数据定义语句中的DROP指令来实现。
通常删除表格的格式如下:其中TABLE关键字说明删除的是一张表格,而TABLE_NAME是一张具体的并且真实存在的表格的名称。
对于不存在的表格,或者因权限不足而无法删除的表格,在执行DROP指令时程序将会报错![例] 删除学生信息表【数据库的删除】DBMS中删除数据库同样使用DROP指令进行,格式如下:当然在删除数据库之前我们需要对正在使用的数据库进行释放,而DBMS 无论在某一个时刻都必须要是与一个数据库进行捆绑,此时你可以使用USE指令选择其他的数据库进行使用,之后再对你的数据库进行删除操作。
实例代码如下:【数据的新增】那么如何新增一条记录呢?通常我们需要借助数据操纵语言中的INSERT 语句进行。
插入操作可以插入完整的一行,也可以对该元组中某几个固定的列进行插入操作,但是如果你需要操作的列被定义为主键或者不允许为空(not null),那么此时该列就必须要有数据插入,否则你将插入失败。
完整的数据插入:完整插入一行元组的格式如下:其中INSERT关键字指示操作为插入操作,INTO后加入需要进行插入操作的表名,V ALUES关键字用于指示需要插入的值集合,两个小括号中指定了具体插入的值。
这里值得说明的是小括号中的值的插入顺序需要和表中的属性顺序以及属性类型一致,即第一列为学号,则value1也必须为学号;第二列为姓名,则value2也必须为姓名……否则将会导致数据插入的逻辑错误。
[例] 某关系为:学生信息表(学号,姓名,年龄,地址),请使用SQL语句新建并且插入一条完整的记录。
执行完成后我们可以查看表格中的内容如下:部分列的数据插入:有时候我们会遇到一些信息统计不全的情况,此时我们需要插入一条不完整的元组,此时我们就需要对某一些特定的列进行操作。
格式如下:[例] 在上述学生信息表中插入一条新纪录,已知该生的学号为“211501002”,姓名为“李四”,其他未知。
在执行完成后我们可以打开数据表查看插入结果:【数据的删除】在SQL中,通常使用DELETE指令完成对数据库中的一个元组的删除。
通常我们为了精确的删除相关的数据我们需要在DELETE语句后使用WHERE关键字指定相关的条件。
完全删除:完全删除即清空整个数据表中的记录,其格式如下:其含义为:从名为TABLE_NAME的表格中删除,由于语句后面没有使用WHERE关键字指定删除的条件,故此将会清空表格中的所有数据。
部分删除:部分删除即仅仅删除数据表中的一条或者多条记录,其格式如下:此处需要说明的是WHERE关键字又称之为WHERE子句,用于指定筛选记录的条件,其后的条件可以是单纯的关系表达式,也可以是由任意关系表达式通过逻辑运算符连接起来的逻辑表达式。
关系表达式:SQL语句和其他程序设计语言一样,支持关系表达式,其关系运算符与Visual Basic中的关系运算符如出一辙。
常用的关系运算符如下:[例] 删除学生信息表中年龄大于18岁的元组[例] 删除学生信息表中学号为“211501002”的元组[例] 删除学生信息表中地址不为“江苏省徐州市”的元组逻辑表达式:在SQL中支持的逻辑运算符共有三个,具体如下:关于这三个运算符的详细含义我在这里就不再多说了,如果大家有疑惑的,可以参见C++教材上对于逻辑运算符的解释。
[例] 删除学生信息表中学号为211501013且地址不为“江苏省南通市”的元组[例] 删除学生信息表中年龄大于25或者姓名为“李四”的元组至此我们已经了解到了程序员如何通过SQL语句对数据库以及数据表进行新建、删除、插入和修改等操作,由于查询方面涉及到的方式较多,因此我们将单独在下一讲为大家讲述如何使用SQL语句中的SELECT指令进行数据查询的操作。
希望大家拭目以待哦!。