数据库学生成绩数据库

上传人:lx****y 文档编号:243367172 上传时间:2024-09-21 格式:PPT 页数:62 大小:861.50KB
返回 下载 相关 举报
数据库学生成绩数据库_第1页
第1页 / 共62页
数据库学生成绩数据库_第2页
第2页 / 共62页
数据库学生成绩数据库_第3页
第3页 / 共62页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1 数据库基础,一、数据库与数据库管理系统,1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文本、图像、音频、视频。,9/21/2024,1,2.数据库管理系统,数据库管理系统(DBMS)是管理数据库的系统,它按一定的数据模型组织数据。DBMS应提供如下功能:,数据定义功能可定义数据库中的数据对象。,数据操纵功能可对数据库表进行基本操作,如插入、删除、修改、查询。,数据的完整性检查功能保证用户输入的数据满足相应的约束条件。,数据库的安全保护功能保证只有赋予权限的用户才能访问数据库中的数据。,数据库的并发控制功能使多个应用程序可在同一时刻并发地访问数据库的数据。,数据库的故障恢复功能使数据库运行出现故障时进行数据库恢复,以保证数据库可靠运行。,在网络环境下访问数据库的功能。,方便、有效地存取数据库信息的接口和工具。编程人员通过程序开发工具与数据库的接口编写数据库应用程序。,数据库管理员(DBA,DataBase Adminitrator)通过提供的工具对数据库进行管理。,9/21/2024,2,二、关系型数据库管理系统,数据、数据库、数据库管理系统与操作数据库的应用程序,加上支撑它们的硬件平台、软件平台及与数据库有关的人员,构成了一个完整的数据库系统。图描述了数据库系统的构成。,9/21/2024,3,9/21/2024,4,学生表,9/21/2024,5,9/21/2024,6,课程表,9/21/2024,7,成绩表,9/21/2024,8,码:在关系表中,如果一个字段或几个字段组合的值可唯一标志其对应的记录,则字段或字段组合为码,“学生”表涉及的主要信息有:学号、姓名、性别、出生时间、专业、总学分、备注,“课程”表涉及的主要信息有:课程号、课程名、开课学期、学时和学分,“成绩”表涉及的主要信息有:学号、课程号和成绩,9/21/2024,9,三、关系型数据库语言,2.MySQL数据库简介,一、MySQL数据库介绍,MySQL数据库的特点主要有以下几个方面:,使用核心线程的完全多线程服务,这意味着可以采用多CPU体系结构。,可运行在不同平台。,使用C和C+语言编写,并使用多种编译器进行测试,保证了源代码的可移植性。,支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。,为多种编程语言提供了API。这些编程语言包括C、C+、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。,支持多线程,充分利用CPU资源。,优化的SQL查询算法,可有效地提高查询速度。,既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库嵌入其他的软件中。提供多语言支持,常见的编码如中文的GB2312、BIG5,,日文的Shift_JIS等,都可以用做数据表名和数据列名。,提供TCP/IP、ODBC和JDBC等多种数据库连接途径。,提供可用于管理、检查、优化数据库操作的管理工具。,可以处理拥有上千万条记录的大型数据库。,9/21/2024,10,二、MySQL服务器的安装与配置,可以从免费下载,MySQL服务器的安装:,(1)下载Windows版的MySQL,双击下载文件进入安装向导。有3种安装方式可供选择:Typical(典型安装)、Complete(完全安装)和Custom(定制安装),如图7.2所示。,对于大多数用户,选择Typical就可以了。单击【Next】按钮进入下一步,9/21/2024,11,9/21/2024,12,(2)进入如图7.3所示的安装界面。在MySQL 5.1中,数据库主目录和文件目录是分开的。其中,“Destination Folder”为MySQL所在的主目录,,默认为C:Program FilesMySQLMySQL Server 5.1。,“Data Folder”为MySQL数据库文件和表文件所在的目录,默认为C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data,,其中Application Data是隐藏文件夹。确认后单击【Install】按钮开始安装。,9/21/2024,13,(3)等待一段时间后安装完成,在弹出的窗口中单击【Next】按钮完成安装,9/21/2024,14,MySQL服务器的配置:,(1)安装完毕后选择“Configure the MySQL server now”复选框,单击【Finish】按钮进入配置向导。,单击【Next】按钮进入选择配置类型对话框,配置类型有2种:Detailed Configuration(详细配置)和Standard Configuration(标准配置)。,标准配置选项适合想要快速启动MySQL而不必考虑服务器配置的新用户。详细配置选项适合想要更加细粒度控制服务器配置的高级用户。本书选择Detailed Configuration选项。,(2)单击【Next】按钮进行服务器类型选择,分为3种:Developer Machine(开发机器)、Server Machine(服务器),和Dedicated MySQL Server Machine(专用MySQL服务器)。本书选择Developer Machine选项。,(3)单击【Next】按钮进入数据库使用情况对话框,有3个选项:,Multifunctional Database(多功能数据库),Transactional Database Only(只是事务处理数据库),Non-Transactional Database Only(只是非事务处理数据库)。其中多功能数据库对InnoDB和MyISAM表都适用,所以本书选择Multifunctional Database选项。,(4)单击【Next】按钮进入InnoDB表空间对话框,这里可以修改InnoDB表空间文件的位置,如图7.4所示。默认位置是MySQL服务器数据目录,这里不做修改。,9/21/2024,15,9/21/2024,16,5)进入并发连接选择对话框。,Decision Support (DSS)/OLAP(决策支持):如果服务器不需要大量的并行连接可以选择该选项;,Online Transaction Processing(OLTP,联机事务处理):如果服务器需要大量的并行连接则选择该选项;,Manual Setting(人工设置):选择该选项可以手动设置服务器并行连接的最大数目。本书选择Decision Support (DSS)/OLAP选项。,(6)进入联网选项对话框,如图7.5所示。默认情况是启用TCP/IP网络,默认端口为3306。这里不做修改。,9/21/2024,17,9/21/2024,18,(7) 进入字符集选择对话框,前面的选项一直是按默认设置进行的,这里要做一些修改。选中“Manual Selected Default Character Set/Collation”选项,,在“Character Set”选框中将latin1修改为gb2312,如图7.6所示,9/21/2024,19,9/21/2024,20,(8)单击【Next】按钮进入服务选项对话框,服务名为MySQL,这里不做修改。,(9)单击【Next】按钮进入安全选项对话框,如图7.7所示,在密码输入框中输入root用户的密码,为了便于演示,此处密码设为“123456”。,在实际应用时密码不可过于简单。要想创建一个匿名用户账户,选中“Create An Anonymous Account”(创建匿名账户)选项旁边的框。由于安全原因,不建议选择该项,9/21/2024,21,(10)设置完毕后,最后一步是提交配置,单击【Execute】按钮即可完成。,注意:对不同的操作系统和不同版本的MySQL,安装过程可能有所不同,这里只举MySQL 5.1的安装例子。,9/21/2024,22,三、MYSQL的环境,1.mysql命令行客户端,MySQL安装和配置完后,打开“开始”“程序”“MySQL”“MySQL Server 5.1”“MySQL Command Line Client”菜单项,,进入MySQL客户端,在客户端输入密码,就以root用户身份登录到MySQL服务器,在窗口中出现如图7.8所示的命令行,在命令行中输入SQL语句就可以操作MySQL数据库。,以root用户身份登录可以对数据库进行所有的操作。,9/21/2024,23,2.重新配置服务器,如果要对服务器重新配置,可以打开“开始”“程序”“MySQL”“MySQL Server 5.1”“MySQL Server Instance Configure Wizard”菜单项,,在出现的配置向导中重新配置服务器,3.选项文件,在C:Program FilesMySQLMySQL Server 5.1的MySQL主目录下有一个my.ini文件,这是MySQL的选项文件,,MySQL启动时会自动加载该文件中的一些选项。可以通过修改选项文件来修改MySQL的一些默认设置,4. 数据目录,MySQL有一个数据目录,用于存放数据库文件。在MySQL 5.1中,数据目录的默认路径为C:Documents and SettingsAll UsersApplication Data,MySQLMySQL Server 5.1data。在data目录中MySQL为每个数据库建立一个文件夹,所有的表文件存放在相应的数据库文件夹中。,3.MYSQL基础知识,9/21/2024,24,一、mysql数据库对象,1.表,2.视图,视图是从一个或多个基本表中引出的表,数据库中只存放视图的定义,而 不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。,视图一经定义,就可以像基本表一样被查询、修改、删除和更新。,3.索引,它是对数据表中的一列或多列的数据进行排序的一种结构。,4.约束,约束机制保障了MySQL中数据的一致性与完整性,具有代表性的约束就是主键和外键,5.存储过程,存储过程是一组完成特定功能的SQL语句集合,6.触发器,触发器是一个被指定关联到一个表的数据库对象,触发器是不需要调用的,当对一个表的特别事件出现时,它会被激活。触发器的代码是由SQL语句组成的,7.存储函数,存储函数与存储过程类似,也是由SQL和过程式语句组成的代码片段,并且可以从应用程序和SQL中调用。但存储函数不能拥有输出参数,,因为存储函数本身就是输出参数。存储函数必须包含一条RETURN语句,从而返回一个结果,8.事件,事件与触发器类似,都是在某些事情发生时启动。不同的是触发器是在数据库上启动一条语句时被激活,而事件是在相应的时刻被激活。,9/21/2024,25,二、MYSQL表结构,空值(NULL)通常表示未知、不可用或将在以后添加的数据。若某列允许为空值,则向表中输入记录值时可不为该列给出具体值。,而某列若不允许为空值,则在输入时必须给出具体值。,关键字。若表中记录的某一字段或字段组合能唯一标志记录,则称该字段或字段组合为候选关键字(Candidate key)。,若表中有多个候选关键字,则选定其中一个为主关键字(Primary key),也称为主键。,9/21/2024,26,三、MYSQL数据类型,精度:存储十进制数据的总位数,小数位数。指数值数据中小数点右边可以有的数字位数的最大值。,例如,数值数据3560.697的精度是7,小数位数是3。,长度。指存储数据所使用的字节数。,9/21/2024,27,1.整数型,BIGINT。大整数,数值范围为-263 (-9 223 372 036 854 775 808)263-1(9 223 372 036 854 775 807),其精度为19,小数位数为0,长度为8字节。,INTEGER(简写为INT)。整数,数值范围为-231(-2 147 483 648)231-1(2 147 483 647),其精度为10,小数位数为0,长度为4字节。,MEDIUMINT。中等长度整数,数值范围为-223(-8 388 608)223-1(8 388 607),其精度为7,小数位数为0,长度为3字节。,SMALLINT。短整数,数值范围为-215(-32 768)215-1(32 767),其精度为5,小数位数为0,长度为2字节。,TINYINT。微短整数,数值范围为-27(-128)27-1(127),其精度为3,小数位数为0,长度为1字节。,2. 精确数值型,精确数值型由整数部分和小数部分构成,其所有的数字都是有效位,能够以完整的精度存储十进制数。,精确数值型包括decimal、numeric两类。从功能上说两者完全等价,两者的唯一区别在于decimal不能用于带有identity关键字的列。,声明精确数值型数据的格式是numeric | decimal(p,s),其中p为精度,s为小数位数,s的默认值为0。例如,指定某列为精确数值型,精度为6,小数位数为3,,即decimal(6,3),那么若向某记录的该列赋值56.342 689时,该列实际存储的是56.3 427。,9/21/2024,28,3. 浮点型,这种类型不能提供精确表示数据的精度。使用这种类型来存储某些数值时,有可能会损失一些精度,,所以它可用于处理取值范围非常大且对精确度要求不是十分高的数值量,如一些统计量。,4. 位型,位字段类型,表示如下:,BIT(M),其中,m表示位值的位数,范围为164。如果省略m,默认为1。,5. 字符型,字符型数据用于存储字符串,字符串中可包括字母、数字和其他特殊符号(如#、&等)。,在输入字符串时,需将串中的符号用单引号或双引号括起来,如abc、AbcCde。,MySQL字符型包括固定长度(char)和可变长度(varchar)字符数据类型。,9/21/2024,29,6. 文本型,当需要存储大量的字符数据,如较长的备注、日志信息等,字符型数据的最长65 535个字符的限制可能使它们不能满足应用需求,此时可使用文本型数据。,文本型数据对应ASCII字符,其数据的存储长度为实际字符数个字节。,文本型数据可分为4种:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。,表列出了各种文本数据类型的最大字符数。,9/21/2024,30,7. BINARY和VARBINARY型,BINARY和VARBINARY类型数据类似于CHAR和VARCHAR,不同的是它们包含的是二进制字符串,而不是非二进制字符串。,也就是说,它们包含的是字节字符串,而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值。,BINARY (N)。固定长度的N字节二进制数据。N取值范围为1255,默认为1。,BINARY(N)数据的存储长度为N+4字节。若输入的数据长度小于N,则不足部分用0填充;若输入的数据长度大于N,则多余部分被截断。,输入二进制值时,在数据前面要加上0x,可以用的数字符号为09、AF(字母大小写均可)。例如,0xFF、0x12A0分别表示十六进制的FF和12A0。因为每字节的,数最大为FF,故在“0x”格式的数据每两位占1字节。,VARBINARY(N)。N字节变长二进制数据。N取值范围为165535,默认为1。VARBINARY(N)数据的存储长度为实际输入数据长度+4字节。,9/21/2024,31,8. BLOB类型,在数据库中,对于数码照片、视频和扫描的文档等的存储是必须的,MySQL可以通过BLOB数据类型来存储这些数据。,BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。,这4种BLOB数据类型的最大长度对应于4种TEXT数据类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。不同的是BLOB表示的是最大字节长度,,而TEXT表示的是最大字符长度,9.日期时间类型,DATE。date数据类型由年份、月份和日期组成,代表一个实际存在的日期。DATE的使用格式为字符形式YYYY-MM-DD,TIME。TIME数据类型代表一天中的一个时间,由小时数、分钟数、秒数和微秒数组成。,格式为HH:MM:SS.fraction,其中fraction为微秒部分,是一个6位的数字,可以省略。,TIME值必须是一个有意义的时间,例如10:08:34表示10点08分34秒,而10:98:10是不合法的,它将变成00:00:00。,DATETIME,TIMESTAMP。DATETIME和TIMESTAMP数据类型是日期和时间的组合,日期和时间之间用空格隔开,如2008-10-20 10:53:20。,YEAR。YEAR用来记录年份值。MySQL以YYYY格式检索和显示YEAR值,范围是19012155。,9/21/2024,32,10.ENUM和SET类型,ENUM和SET是比较特殊的字符串数据列类型,它们的取值范围是一个预先定义好的列表。ENUM或SET数据列的取值只能从这个列表中进行选择。,ENUM和SET的主要区别是:ENUM只能取单值,它的数据列表是一个枚举集合。ENUM的合法取值列表最多允许有65535个成员。,例如,ENUM(N, Y)表示该数据列的取值要么是“Y”,要么是“N”。SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值,。,9/21/2024,33,4.数据库和表的建立与管理,一、创建数据库,1.创建数据库,说明:“ ”中内容为可选项,CREATE DATABASE | SCHEMA IF NOT EXISTS db_name,例如:CREATE DATABASE PXSCJ;,注意每条sql语句都以;结束。,2.删除数据库,DROP DATABASE IF EXISTS db_name,9/21/2024,34,二、创建表,1.表结构设计,2.创建表,CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name,(, , ,),9/21/2024,35,TEMPORARY。该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,,多个用户或者多个应用程序可以同时使用持久表。有时需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。,此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。,只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。,列选项。列选项主要有以下几种:,NULL或NOT NULL:表示一列是否允许为空,NULL表示可以为空,NOT NULL表示不可以为空,如果不指定,则默认为NULL。,DEFAULT default_value:为列指定默认值,默认值default_value必须为一个常量。,AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,,value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。,UNIQUE KEY | PRIMARY KEY:UNIQUE KEY和PRIMARY KEY都表示字段中的值是唯一的。PRIMARY KEY表示设置为主键,一个表只能定义一个主键,,主键必须为NOT NULL。,COMMENT string:对于列的描述,string是描述的内容。,9/21/2024,36,例7.2,使用命令行方式在PXSCJ数据库中创建学生管理系统中的三个表XSB、KCB和CJB。表的结构参照表7.6、表7.7和表7.8。,9/21/2024,37,创建XSB表使用如下语句:,USE PXSCJ;,CREATE TABLE XSB,(,学号,CHAR(6) NOT NULL PRIMARY KEY,姓名,CHAR(8) NOT NULL,性别,TINYINT(1) NULL DEFAULT 1,出生时间,DATE NULL,专业,CHAR(12) NULL,总学分,INT(4) NULL DEFAULT 0,备注,TEXT NULL,);,9/21/2024,38,创建KCB表使用如下语句,USE PXSCJ;,CREATE TABLE KCB,(,课程号 CHAR(3) NOT NULL PRIMARY KEY,课程名 CHAR(16) NOT NULL,开课学期 TINYINT(1) NULL DEFAULT 1,学时 TINYINT(1) NULL,学分 TINYINT(1) NOT NULL,);,9/21/2024,39,创建CJB表使用如下语句,USE PXSCJ;,CREATE TABLE CJB,(,学号 CHAR(6) NOT NULL,课程号 CHAR(3) NOT NULL,成绩 INT(4) NULL,PRIMARY KEY(学号,课程号),);,9/21/2024,40,三、修改表,ALTER TABLE table_name,ADD ,/*添加列*/,| ALTER SET DEFAULT default_value | DROP DEFAULT,/*修改默认值*/,| CHANGE ,/*对列重命名*/,| MODIFY ,/*修改列类型*/,| DROP ,/*删除列*/,| RENAME ,/*重命名该表*/,| 其他,9/21/2024,41,注意:,若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。,例如,原来CHAR类型的列要修改成INT类型,而原来列值中有字符型数据“a”,则无法修改。,例7.3 假设已经在数据库PXSCJ中创建了表XSB,表中存在“姓名”列。在表XSB中增加“奖学金等级”列,并将表中的“姓名”列删除,USE PXSCJ,ALTER TABLE XSB,ADD 奖学金等级 TINYINT NULL,DROP 姓名;,9/21/2024,42,四、删除表,删除一个表可以使用,DROP TABLE,语句。语法格式如下:,Drop TEMPORARY TABLE IF EXISTS tbl_name , tbl_name .,例如,删除XSB表可以使用如下语句,USE PXSCJ;,DROP TABLE XSB;,5.表数据操作,9/21/2024,43,一、插入表数据,INSERT语句的基本格式如下:,INSERT INTO tbl_name (col_name,.),VALUES (expr | DEFAULT,.),(.),.,tbl_name,。被操作的表名。,col_name,。需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。,对于没有指出的列,它们的值根据列默认值或有关属性来确定。,VALUES子句。包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。,若tb1_name后不给出列名,则在VALUES子句中要给出每列的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值如下:,expr:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。,例如,列的数据类型为INT,插入数据“aa”时就会出错。当数据为字符型时要用单引号括起。,DEFAULT:指定为该列的默认值。前提是该列之前已经指定了默认值。,如果列清单和VALUES清单都为空,则INSERT会创建一行,每列都设置成默认值。,9/21/2024,44,【例7.4】 向PXSCJ数据库的表XSB(表中列包括学号、姓名、性别、出生时间、专业、总学分、备注)中插入如下的一行:,081101,王林,1,1990-02-10,计算机,50,NULL,使用下列语句:,USE PXSCJ,INSERT INTO XSB,VALUES(081101, 王林 , 1, 1990-02-10, 计算机, 50, NULL,);,9/21/2024,45,注意:若原有行中存在,PRIMARY KEY,或,UNIQUE,KEY,而插入的数据行中含有与原有行中,PRIMARY KEY,或,UNIQUE KEY,相同的列值,则I,NSERT,语句无法插入此行。,要插入这行数据需要使用,REPLACE,语句,,REPLACE,语句的用法和I,NSERT,语句基本相同。,使用,REPLACE,语句可以在插入数据之前将与新记录冲突的旧记录删除,从而使新记录能够正常插入,9/21/2024,46,【例7.6】 若例7.4中的数据行已经插入,其中学号为主键(PRIMARY KEY),现在想再插入如下一行数据:,081101,刘华,1,1991-03-08,通信工程,48,NULL,若使用INSERT语句,执行结果如下:,REPLACE INT XSB,VALUES(081101,刘华,1,1991-03-08,通信工程,48,null);,9/21/2024,47,二、修改表数据,UPDATE tbl_name,SET col_name1=expr1 , col_name2=expr2 .,WHERE where_definition, SET子句。根据WHERE子句中指定的条件对符合条件的数据行进行修改。若语句中不设定WHERE子句,则更新所有行。,col_name1、col_name2为要修改列值的列名,expr1、expr2可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。,WHERE子句。通过设定条件确定要修改哪些行,where_definition用于指定条件。,9/21/2024,48,【例7.7】 将PXSCJ数据库的XSB表(数据以表7.1中数据为准)中学号为081101的学生的备注值改为“三好生”,USE PXSCJ;,UPDATE XSB,SET 备注= 三好生,WHERE 学号=081101;,9/21/2024,49,【例7.8】 将XSB表中的所有学生的总学分增加10。,UPDATE XSB,SET 总学分 = 总学分+10;,【例7.9】 将姓名为“罗林琳”的同学的专业改为“软件工程”,备注改为“提前修完学分”,学号改为“081261”,UPDATE XSB,SET 专业 = 软件工程,备注 = 提前修完学分,学号 = 081261,WHERE 姓名 = 罗林琳;,9/21/2024,50,三、删除表数据,删除表中数据一般使用DELETE语句,语法格式如下:,DELETE FROM tbl_name,WHERE where_definition,【例7.10】 假设数据库mydata中有一个表table1,table1中有如下数据:,姓名 年龄 职业,张三 42 教师,李四 28 工人,要删除张三的信息可使用如下语句:,USE mydata,DELETE FROM table1,WHERE 姓名=张三;,9/21/2024,51,【例7.11】 将PXSCJ数据库的XSB表中总学分小于50的所有行删除,使用如下语句:,USE PXSCJ,DELETE FROM XSB,WHERE 总学分50;,使用TRUNCATE TABLE语句也可以删除表中数据,但是该语句将删除指定表中的所有数据,因此也称为清除表数据语句。,语法格式如下:,TRUNCATE TABLE table_name,9/21/2024,52,6. 查询数据,SELECT语句可以从一个或多个表中选取特定的行和列,结果通常是生成一个临时表。在执行过程中系统根据用户的要求从数据库中选出匹配的行和列,,并将结果存放到临时的表中,SELECT语句的语法格式如下:,SELECT,ALL | DISTINCT ,select_expr, .,FROM table1 , table2 /*FROM子句*/,WHERE where_definition /*WHERE子句*/,GROUP BY col_name | expr | position ASC | DESC, . /*GROUP BY子句*/,HAVING where_definition /*HAVING子句*/,ORDER BY col_name | expr | positionASC | DESC , . /*ORDER BY子句*/,LIMIT offset, row_count /*LIMIT子句*/,9/21/2024,53,一、选择列,1. 选择指定的列,使用SELECT语句选择表中的某些列,各列名之间要以逗号分隔。,【例7.12】 查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分,USE PXSCJ,SELECT 姓名,专业,总学分,FROM XSB;,9/21/2024,54,2. 定义列别名,当希望查询结果中的某些列或所有列显示时且使用自己选择的列标题时,可以在列名之后使用AS子句来指定查询结果的列别名。语法格式为:,SELECT column_name AS column_alias,【例7.13】 查询XSB表中计算机系同学的学号、姓名和总学分,结果中各列的标题分别指定为number、name和mark。,SELECT 学号 AS number, 姓名 AS name, 总学分 AS mark,FROM XSB,WHERE 专业= 计算机;,查询结果为:,9/21/2024,55,二、选择查询对象,1.引用一个表,可以用两种方式引用一个表,第一种方式是使用USE语句让一个数据库成为当前数据库,在这种情况下,如果在FROM子句中指定表名,则该表应该属于当前数据库。,第二种方式是指定的时候在表名前带上表所属数据库的名字。例如,假设当前数据库是db1,现在要显示数据库db2里的表tb的内容,使用如下语句:,SELECT * FROM db2.tb;,2. 引用多个表,如果要在不同表中查询数据,则必须在FROM子句中指定多个表。指定多个表时要使用到连接。把不同表的数据组合到一个表中叫做表的连接。,如,在PXSCJ数据库中需要查找选修了离散数学课程的学生的姓名和成绩,就需要将XSB、KCB和CJB三个表进行连接,才能查找到结果。,连接的方式有全连接和JOIN连接两种。,9/21/2024,56,1)全连接,连接的第一种方式是将各个表用逗号分隔,这样就指定了全连接。FROM子句产生的中间结果是一个新表,是每个表的每行都与其他表中的每行交叉产生的所有可能的,组合,列包含了所有表中出现的列,也就是笛卡儿积。这样连接表潜在地产生数量非常大的行,因为可能得到的行数为每个表中行数之积。在这样的情形下,通常要使,用WHERE子句设定条件来将结果集减小到易于管理的大小。,9/21/2024,57,例7.14】 查找PXSCJ数据库中所有学生选过的课程名和课程号,使用如下语句:,SELECT DISTINCT KCB.课程名, CJB.课程号,FROM KCB, CJB,WHERE KCB.课程号=CJB.课程号;,9/21/2024,58,(2)JOIN连接,连接的第二种方式是使用JOIN关键字的连接,JOIN连接主要分为三种:内连接、外连接和交叉连接。,1)内连接。,使用内连接时需要指定INNER JOIN关键字,并使用ON关键字指定连接条件。例如,要使用内连接实现例7.14的查询,可以使用以下语句:,SELECT DISTINCT 课程名, CJB.课程号,FROM KCB INNER JOIN CJB,ON (KCB.课程号=CJB.课程号);,该语句根据ON关键字后面的连接条件,合并两个表,返回满足条件的行。,内连接是系统默认的,可以省略INNER关键字。使用内连接后,FROM子句中ON条件主要用来连接表,其他并不属于连接表的条件可以使用WHERE子句来指定。,9/21/2024,59,2)外连接。,使用外连接需要指定OUTER JOIN关键字, 外连接包括:,左外连接,(LEFT OUTER JOIN):,结果表中除了匹配行外,还包括左表有的但右表中不匹配的行,对于这样的行,从右表被选择的列设置为NULL。,右外连接(,RIGHT OUTER JOIN):,结果表中除了匹配行外,还包括右表有的但左表中不匹配的行,对于这样的行,从左表被选择的列设置为NULL。,自然连接(,NATURAL JOIN,):自然连接还有自然左外连接(,NATURAL LEFT OUTER JOIN,)和自然右外连接(,NATURAL RIGHT OUTER JOIN,)。,NATURAL JOIN,的语义定义与使用了ON条件的INNER JOIN相同。,其中的,OUTER,关键字均可省略。,9/21/2024,60,【例7.15】 查找所有学生情况及他们选修的课程号,如果学生未选修任何课,也要包括其情况。,SELECT XSB.* , 课程号,FROM XSB LEFT OUTER JOIN CJB,ON XSB.学号 = CJB.学号,9/21/2024,61,未完待后,9/21/2024,62,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!