




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 电子科技大学数据库原理及应用 了解结构化查询语言SQL操作原理 学习数据库SQL操作语句使用 掌握数据库对象创建 掌握数据库表访问操纵 掌握多表关联数据查询 掌握数据库对象修改与删除 掌握数据库视图使用 掌握SQL Server数据库管理工具使用2 电子科技大学数据库原理及应用一、基本概念一、基本概念3.1 SQL简介SQL( Structured Query Language,结构化查询语言 )是一种对数据库进行访问的数据操作子语言。其SQL语句执行命令完成对数据库访问操作。二、二、SQL发展发展w 20世纪70年代由IBM公司开发w 1979年ORACLE公司首先提供商用的SQLw 1
2、986 ANSI的数据库委员会批准了SQL作为关系型数据库语言的美国标准。w 1987年国际标准化组织(ISO)将其采纳为国际标准SQL86。w 1989年更新成为国际标准SQL-89w 1992年更新成为国际标准SQL-92(或称SQL2)w 1999年更新成为国际标准SQL-99(或称SQL3)w 2008年更新成为国际标准SQL:20083 电子科技大学数据库原理及应用三、三、SQL应用情况应用情况绝大多数主流的关系型数据库管理系统采用了SQL标准语言实现数据库操作wOraclewSybasewDB2wMicrosoft SQL ServerwAccesswMySqlw。 其中一些厂商数
3、据库管理系统对SQL语句进行了扩展开发,如Sybase、 Microsoft SQL Server将操作语言扩展为Transaction-SQL;Oracle将操作语言扩展为PL/SQL。4 电子科技大学数据库原理及应用四、四、SQL操作机理操作机理SQL主要操作功能:w SQL 从数据库存取数据w SQL 从数据库删除数据w SQL 创建新数据库w SQL 在数据库中创建新表w SQL 在数据库中创建存储过程w SQL 在数据库中创建视图w SQL 可以设置数据库对象的访问权限 数据库DBMS(执行SQL)数据库应用程序返回结果提交SQLI/O数据5 电子科技大学数据库原理及应用五、五、SQ
4、L语言语句类别语言语句类别1. 数据操纵语言数据操纵语言(Data Manipulation Language,DML)是SQL语言中用于增添、修改、删除数据的语句,主要语句如下:w INSERT - 向数据库表中插入数据 w UPDATE - 更新数据库表中的数据w DELETE - 从数据库表中删除数据 6 电子科技大学数据库原理及应用2. 数据定义语言数据定义语言(Data Definition Language,DDL)是SQL语言中用于创建或删除数据库对象的语句。这类语句也可以定义数据表对象的主外键、索引、约束等要素。主要语句如下:w CREATE DATABASE - 创建新数据库
5、w DROP DATABASE 删除数据库w ALTER DATABASE - 修改数据库属性 w CREATE TABLE - 创建新表 w ALTER TABLE 修改数据库表结构w DROP TABLE - 删除表w CREATE INDEX - 创建索引w DROP INDEX - 删除索引 7 电子科技大学数据库原理及应用3. 数据查询语言数据查询语言(Data Query Language,DQL)是SQL语言中用于对数据库进行查询的语句。该语句只有Select一个语句,但其变化范型较多。4. 数据控制语言数据控制语言(Data Control Language,DCL)是SQL语
6、言中用于对数据访问权进行控制的语句。主要语句如下:w GRANT 授予用户对数据对象的权限w DENY 拒绝授予用户对数据对象的权限w REVOKE 撤消用户对数据对象的权限8 电子科技大学数据库原理及应用5. 事务处理语言事务处理语言(Transaction Process Language,TPL)是SQL语言中用于数据库内部事务处理的语句。主要语句如下:w BEGIN TRANSACTION 开始事务w COMMIT 提交事务w ROLLBACK 回滚事务6. 游标控制语言游标控制语言(Cursor Control Language,CCL)是SQL语言中用于数据库游标操作的语句。主要语
7、句如下:w DECLARE CURSOR 定义游标w FETCH INTO 提交游标数据w CLOSE CURSOR 关闭游标9 电子科技大学数据库原理及应用六、六、SQL语言的数据类型语言的数据类型1. 基本数据类型w 字符:CHAR、VARCHAR、TEXTw 整数:SMALLINT、INTEGERw 浮点数:NUMBER(n,d)、FLOAT(n,d)w 日期:DATE、DATETIMEw 货币:MONEY2. 不同数据库所支持数据类型Access的数据类型见表3-1所示SQL Server的数据类型见表3-2所示MySQL的数据类型见表3-3所示10 电子科技大学数据库原理及应用部门信
8、息雇员信息项目信息任务信息工程项目管理数据库数据库系统任务:w 创建项目数据库ProjectDBw 创建数据库表对象及其约束w 完成数据库表的数据插入、修改、删除以及查询处理某企业希望通过创建一个工程项目管理数据库,实现对项目信息管理。3.2 数据定义语句DDL一、数据库案例一、数据库案例11 电子科技大学数据库原理及应用列名类型键是否非空备注DepartmentNamechar(35)主键是部门名称DepartIntroVarchar(200)否是部门简介OfficeNumberchar(15)否是办公室编号OfficePhonechar(12)否是办公电话部门(DEPARTMENT)表结构
9、1. 数据库表结构设计列名类型键是否非空备注EmployeeNumberInt主键是代理键,雇员编号NameVarchar(30)否是姓名Departmentchar(35)外键是部门Phonechar(12)否是电话EmailVarchar(100)否是邮件雇员(EMPLOYEE)表结构12 电子科技大学数据库原理及应用列名类型键是否非空备注ProjectIDInt主键是项目编号NameVarchar(30)否是项目名称Departmentchar(35)外键是部门MaxHoursNumber否是最长工时StartDateDateTime否否开始日期EndDateDateTime否否结束日期
10、项目(PROJECT)表结构13 电子科技大学数据库原理及应用列名类型键是否非空备注ProjectIDInt主键,外键是复合键,项目编号EmployeeNumberInt主键,外键是复合键,雇员编号HoursWorkedNumeric(6,2)否否工作时数任务(ASSIGNMENT)表结构14 电子科技大学数据库原理及应用列名类型键是否非空备注DepartmentNamechar(35)主键是部门名称DepartIntroVarchar(200)否是部门简介OfficeNumberchar(15)否是办公室编号OfficePhonechar(12)否是办公电话列名类型键是否非空备注Employ
11、eeNumberInt主键是代理键,雇员编号NameVarchar(30)否是姓名Departmentchar(35)外键是部门Phonechar(12)否是电话EmailVarchar(100)否是邮件参照完整性约束DEPARTMENT表EMPLOYEE表2. 数据库表关联设计15 电子科技大学数据库原理及应用列名类型键是否非空备注DepartmentNamechar(35)主键是部门名称DepartIntroVarchar(30)否是部门简介OfficeNumberchar(15)否是办公室编号OfficePhonechar(12)否是办公电话DEPARTMENT表结构列名类型键是否非空备
12、注ProjectIDInt主键是项目编号NameVarchar(30)否是项目名称Departmentchar(35)外键是部门MaxHoursNumeric(6,2)否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期PROJECT表结构参照完整性约束16 电子科技大学数据库原理及应用列名类型键是否非空备注ProjectIDInt主键是项目编号NameVarchar(30)否是项目名称Departmentchar(35)外键是部门MaxHoursNumber否是最长工期StartDateDateTime否否开始日期EndDateDateTime
13、否否结束日期PROJECT表结构列名类型键是否非空备注ProjectIDInt主键,外键是复合键,项目编号EmployeeNumberInt主键,外键是复合键,雇员编号HoursWorkedNumeric(6,2)否否工作时数ASSIGNMENT表结构参照完整性约束17 电子科技大学数据库原理及应用3. 业务规则设计w 如果要删除EMPLOYEE中的某个行,若该行连接有ASSIGNMENT的外键值,则禁止对EMPLOYEE行执行删除操作。在创建表时定义参照完整性约束。w 如果要删除PROJECT中的某个行,则ASSIGNMENT中连接到PROJECT的对应行数据也将随之被删除。在创建表时定义级
14、联删除约束。w 如果某雇员离职,则企业将删除该雇员数据,但前提是必须先有人接替这个雇员工作,然后才允许删除该雇员数据。w 如果企业取消某个项目,将删除该项目数据。同时,也将删除该项目所下属的任务数据。数据库中如何设计?问题:上述项目数据库设计如何通过SQL实现?18 电子科技大学数据库原理及应用二、数据库创建语句二、数据库创建语句1. 语句基本格式例 创建一个人力资源管理数据库HR,其SQL语句如下:CREATE DATABASE HR;CREATE DATABASE 其中CREATE DATABASE 为创建数据库语句的关键词,为被创建数据库的标识符名称。19 电子科技大学数据库原理及应用实
15、践操作: 在SQL Server中,创建第一个数据库HR。20 电子科技大学数据库原理及应用2. 语句完整格式CREATE DATABASE on primary ( - 默认属于primary文件组name=databasename_data,- 主数据文件的逻辑名称filename=D:databasename_data.mdf, - 主数据文件的物理名称size=数值MB, -主数据文件的初始大小maxsize=数值MB, - 主数据文件增长的最大值filegrowth=数值%-主数据文件的增长率)log on(/*-日志文件的具体描述,各参数含义同上-*/name=databasena
16、me_log, - 日志文件的逻辑名称filename=所存目录:databasename_log.ldf, - 日志文件的物理名称size=数值MB, -日志文件的初始大小filegrowth=数值MB-日志文件的增长值);21 电子科技大学数据库原理及应用CREATE DATABASE ProjectDBon primary( - 默认属于primary文件组name=Project_data,- 主数据文件的逻辑名称filename=d:Project_data.mdf, - 主数据文件的物理名称size=10MB, -主数据文件的初始大小maxsize=50MB, - 主数据文件增长的
17、最大值filegrowth=10%-主数据文件的增长率)log on(name=Project_log,- 日志文件的逻辑名称filename=d:Project_log.ldf,- 日志文件的物理名称size=10MB, -日志文件的初始大小filegrowth=1MB-日志文件的增长值);例 创建一个项目信息管理数据库ProjectDB,其SQL语句如下:22 电子科技大学数据库原理及应用实践操作: 采用完整参数SQL语句,创建数据库ProjectDB。23 电子科技大学数据库原理及应用三、数据库删除语句三、数据库删除语句1. 语句基本格式例 删除前面创建的人力资源管理数据库HR,其SQL
18、语句如下:DROP DATABASE HR;DROP DATABASE ;其中DROP DATABASE 为语句命令关键词,为数据库名称。24 电子科技大学数据库原理及应用实践操作: 删除数据库HR。25 电子科技大学数据库原理及应用实践练习: 在SQL Server数据库管理系统环境中,创建一个选课系统数据库Catalog,完成后再删除它。26 电子科技大学数据库原理及应用四、数据库表创建语句四、数据库表创建语句1.语句基本格式CREATE TABLE ( 列完整性约束, 列完整性约束, 列完整性约束, );其中CREATE TABLE 为创建表语句的关键词,为将被创建的数据库表名称。27
19、电子科技大学数据库原理及应用例 雇员数据库表EMPLOYEE创建CREATE TABLE EMPLOYEE( EmployeeNumber Int, Name VarChar(30), Department Char(35), Phone Char(12), EmailVarChar(100) );列名类型键是否非空备注EmployeeNumberInt主键是NameVarChar(30)否是DepartmentChar(35)否是PhoneChar(12)否否EmailVarChar(100)否是28 电子科技大学数据库原理及应用2. 列约束条件CREATE TABLE NewTableNa
20、me( ColumnName DataType OptionalConstraint, ColumnName DataType OptionalConstraint, ColumnName DataType OptionalConstraint, );列约束子句 w PRIMARY KEY主键w NOT NULL非空值w NULL空值w UNIQUE值唯一w CHECK有效性检查w DEFAULT缺省值列约束子句29 电子科技大学数据库原理及应用CREATE TABLE EMPLOYEE( EmployeeNumber Int PRIMARY KEY IDENTITY(1,1), Name V
21、arChar(30) NOT NULL, Department Char(35)NOT NULL DEFAULT 人力资源, Phone Char(12)NULL, EmailVarChar(100)NOT NULL UNIQUE );例 雇员数据库表EMPLOYEE创建列名类型键是否非空备注EmployeeNumberInt主键是代理键NameVarChar(30)否是DepartmentChar(35)否是缺省值“人力资源”PhoneChar(12)否否EmailVarChar(100)否是要求取值唯一30 电子科技大学数据库原理及应用说明:在Sybase或SQL Server,用INDE
22、NTITY标识代理键在Oracle数据库中用SEQUENCE标识代理键在MySQL数据库中,用AUTO_INCREMENT标识代理键31 电子科技大学数据库原理及应用实践操作: 在SQL Server中执行SQL创建EMPLOYEE表32 电子科技大学数据库原理及应用CREATE TABLE STUDENT( StudentID Char(10) PRIMARY KEY, StudentName VarChar(30)NOT NULL, StudentGender Char(2)NOT NULL CHECK (StudentGender IN(男,女), BirthDay Date NOT N
23、ULL, Major Varchar(30) NULL DEFAULT 软件工程, StudentPhone Char(11) NULL );实践练习: 课程目录数据库表STUDENT创建。列名类型键是否非空备注StudentIDChar(10)主键是StudentNameVarChar(20)否是StudentGenderChar(2)否是(男,女)BirthDayDate否是MajorVarchar(30)否否缺省值 “软件工程”StudentPhoneChar(11)否否33 电子科技大学数据库原理及应用3、使用表约束定义主键CREATE TABLE DEPARTMENT( Depart
24、mentName Char(35) NOT NULL, DepartIntro VarChar(200)NOT NULL, OfficeNumber Char(15)NOT NULL, OfficePhone Char(12)NOT NULL, CONSTRAINTDEPARTMENT_PKPRIMARY KEY(DepartmentName ) );使用表约束定义主键的优点:w 便于定义复合主键w 可命名主键约束w 便于定义代理键34 电子科技大学数据库原理及应用例 项目数据库表PROJECT创建CREATE TABLE PROJECT( ProjectID Int NOT NULL IDE
25、NTITY(100,10), Name VarChar(30)NOT NULL, Department Char(35)NOT NULL, MaxHours Numeric(6,2) NOT NULL DEFAULT 60.30, StartDate DateTime NULL, EndDate DateTime NULL, CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID) );列名类型键是否非空备注ProjectIDInt主键是代理键100开始,增量10NameChar(30)否是DepartmentChar(35)否是MaxHoursNumeric(6,
26、2)否是缺省值 60.30StartDateDateTime否否EndDateDateTime否否35 电子科技大学数据库原理及应用实践操作: 在SQL SERVER中使用SQL表约束语句创建主键。36 电子科技大学数据库原理及应用DEPARTMENT表结构列名类型键是否非空备注ProjectIDInt主键是项目编号NameVarChar(30)否是项目名称DepartmentChar(35)外键是部门MaxHoursNumeric(6,2)否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期PROJECT表结构参照完整性约束列名类型键是否非空备
27、注DepartmentNameText(35)主键是DepartIntroVarChar(200)否是OfficeNumberText(15)否是OfficePhoneText(12)否是4、使用表约束定义外键37 电子科技大学数据库原理及应用CREATE TABLE PROJECT( ProjectID Int NOT NULL IDENTITY(1,1), Name VarChar(30)NOT NULL, Department Char(35)NOT NULL, MaxHours Numeric(6,2) NOT NULL DEFAULT 100, StartDate DateTime
28、NULL, EndDate DateTime NULL, CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID), CONSTRAINTPROJ_DEPART_FK FOREIGN KEY(Department)REFERENCES DEPARTMENT (DepartmentName) ON UPDATE CASCADE );例例 创建创建PROJECT表中外键及其参照完整性约束38 电子科技大学数据库原理及应用实践操作:在SQL Server中创建PROJECT表外键及其参照完整性约束。39 电子科技大学数据库原理及应用列名类型键是否非空备注ProjectID
29、Int主键是NameVarChar(30)否是DepartmentChar(35)外键是MaxHoursNumber否是StartDateDateTime否否EndDateDateTime否否PROJECT表结构列名类型键是否非空备注ProjectIDInt主键,外键是EmployeeNumberInt主键,外键是HoursWorkedNumeric(6,2)否否ASSIGNMENT表结构参照完整性约束实践练习: 创建ASSIGNMENT表中外键,及其参照PROJECT和EMPLOYEE表的完整性约束40 电子科技大学数据库原理及应用列名类型键是否必需备注ProjectIDInt主键,外键是E
30、mployeeNumberInt主键,外键是HoursWorkedNumeric(6,2)否否ASSIGNMENT表结构参照完整性约束列名类型键是否必需备注EmployeeNumberInt主键是NameVarChar(30)否是DepartmentChar(35)外键是PhoneChar(12)否是EmailVarChar(120)否是EMPLOYEE表41 电子科技大学数据库原理及应用CREATE TABLE ASSIGNMENT( ProjectID Int NOT NULL, EmployeeNumberIntNOT NULL, HoursWorked Numeric(6,2) NUL
31、L, CONSTRAINTASSIGNMENT_PK PRIMARY KEY(ProjectID,EmployeeNumber), CONSTRAINTASSIGN_PROJ_FK FOREIGN KEY(ProjectID)REFERENCES PROJECT(ProjectID)ON DELETE CASCADE,CONSTRAINTASSIGN_EMP_FK FOREIGN KEY(EmployeeNumber)REFERENCES EMPLOYEE(EmployeeNumber);42 电子科技大学数据库原理及应用ALTER TABLE Constraint;ALTER TABLE 语
32、句可以用于添加、修改、删除表结构的列和约束。例 删除ASSIGNMENT表中外键ASSIGN_EMP_FK ,其SQL操作语句如下。ALTER TABLE ASSIGNMENT DROP CONSTRAINT ASSIGN_EMP_FK;五、修改表结构五、修改表结构SQL语句语句2、删除表中外键1、语句基本格式43 电子科技大学数据库原理及应用在ALT TABLE语句中,可以添加CHECK关键字实现数据范围约束添加。例 在定义PROJECT表时,规定StartDate必须早于EndDate,则可通过如下语句实现。ALTER TABLE PROJECT ADD CONSTRAINT PROJEC
33、T_Check_DatesCHECK (StartDate EndDate);3、在表中添加约束44 电子科技大学数据库原理及应用使用ALT TABLE语句,还可以在现有表结构中添加新的属性列。例 在PROJECT表中添加一列CurrentTotalHours,以跟踪在某项目上工作的实际小时数,则可通过如下语句实现。ALTER TABLE PROJECT ADD CurrentTotalHours Numeric(8,2) NULL;4、在表中添加列45 电子科技大学数据库原理及应用实践操作: 在PROJECT表中添加新列46 电子科技大学数据库原理及应用例 在PROJECT表中删除Curre
34、ntTotalHours列,则可通过如下语句实现。ALTER TABLE PROJECT DROP COLUMN CurrentTotalHours;5、在表中删除列47 电子科技大学数据库原理及应用六、删除表结构六、删除表结构SQL语句语句基本语句格式: DROP TABLE TableName;注意: 该语句将删除该表的所有数据及其结构例 删除EMPLOYEE表及其数据,可以使用如下语句。DROP TABLE EMPLOYEE;48 电子科技大学数据库原理及应用注意: 如果某表包含了参照完整性约束,直接执行DROP TABLE 语句,将会报错。说明:删除EMPLOYEE表前,必须先删除AS
35、SIGNMENT表或至少删除外键约束ASSIGN_EMP_FK,才能成功。49 电子科技大学数据库原理及应用七、索引对象定义七、索引对象定义索引在数据库中,索引是针对某个表中一列或多列建立的指向表中记录数据页的逻辑指针清单,其作用类似图书目录可支持对数据表的快速信息检索。其中CREATE INDEX 为创建索引语句的关键词。为在指定表中针对某列创建索引的名称。该语句执行后,在表中为指定列创建其列值的索引,使该列可实现快速查询。1、索引创建SQL语句基本语句格式:CREATE INDEX ON ;50 电子科技大学数据库原理及应用例 在学生信息表STUDENT中,为出生日期Birthday列创建
36、索引,以便可支持按出生日期快速查询学生信息,其索引创建SQL语句如下。CREATE INDEX Birthday_Idx ON STUDENT (Birthday);51 电子科技大学数据库原理及应用索引优点: 提高数据检索速度 可快速连接关联表 减少分组和排序时间索引开销: 创建和维护索引都需要较大开销 索引会占用额外存储空间 数据操纵因维护索引带来开销52 电子科技大学数据库原理及应用2、索引修改SQL语句其中ALTER INDEX 为索引对象修改语句的关键词。为在指定表中针对某列创建索引的名称。RENAME TO为索引换名关键词。当该语句执行后,原有索引被换名为新名称。使用SQL语句可以
37、对索引进行修改操作,其语句格式分别如下:ALTER INDEX ON RENAME TO ;例 在学生信息表STUDENT中,将原索引Birthday_Idx更名Bday_Idx,其索引修改SQL语句如下:ALTER INDEX Birthday_Idx ON STUDENT RENAME TO Bday_Idx;53 电子科技大学数据库原理及应用ALTER INDEX ON CLUSTERED | NONCLUSTERED;此外,索引对象修改SQL语句还可以更改索引的聚簇性质,例如修改为聚集索引或非聚集索引,其SQL语句格式如下:聚集索引与非聚集索引区别:在聚集索引中,键值的逻辑顺序决定了表
38、中相应行的物理顺序。在非聚集索引中,键值的逻辑顺序可以与表中相应行的物理顺序不同。54 电子科技大学数据库原理及应用3、索引删除SQL语句使用SQL语句可以对索引进行删除操作,其语句格式分别如下:DROP INDEX ;其中DROP INDEX 为删除索引语句的关键词。为被指定的索引名称。该语句执行后,将从表中删除该索引。例 在学生信息表STUDENT中,删除Birthday_Idx索引,其索引删除SQL语句如下:DROP INDEX Birthday_Idx;55 电子科技大学数据库原理及应用学院信息、课程信息教师信息、学生信息开课信息、选课信息课程目录数据库数据库系统任务:w 创建项目数据
39、库Catalogw 创建数据库表对象及其约束w 完成数据库表的数据插入、修改、删除以及查询处理某高校希望通过创建一个课程目录数据库,实现学生选课管理。一、数据库案例一、数据库案例3.3 数据操纵SQL语句56 电子科技大学数据库原理及应用学院信息表:COLLEGE(CollegeID,CollegeName,CollegeIntro,CollegeTel)课程表:COURSE(CourseID,CourseName,CourseType,CourseCredit,CoursePeriod,TestMethod)教师表:TEACHER(TeacherID,TeacherName,TeacherG
40、ender,TeacherTitle,CollegeID,TeacherPhone)学生表:STUDENT(StudentID,StudentName,StudentGender,BirthDay,Major,StudentPhone)开课计划表:PLAN(CoursePlanID,CourseID,TeacherID,CourseRoom,CourseTime,Note)选课注册表:REGISTER(CourseRegID,CoursePlanID,StudentID,Note)57 电子科技大学数据库原理及应用二、单条数据插入二、单条数据插入例 在学生信息表STUDENT中,原有数据见下图
41、所示INSERT INTO VALUES (列值表);其中INSERT INTO 为插入语句的关键词。为被插入数据的数据库表。给出在表中插入哪些列。数据操纵SQL语句是一类对数据库表中数据进行变动操作的语句集。它以INSERT、UPDATE、DELETE三种语句为核心,分别完成数据的插入、更新与删除处理。58 电子科技大学数据库原理及应用该语句执行后,学生信息表STUDENT的数据见下图所示。注意:在INSERT INTO插入数据语句中,所使用的Interger和Numeric等类型数值不使用引号标注,但Char、Varchar、Date和Datetime等值类型必须使用单引号。执行如下插入数
42、据SQL语句:INSERT INTO STUDENT VALUES(201222010002,刘菲,女,1995-04-23,软件工程,);59 电子科技大学数据库原理及应用三、多条数据插入三、多条数据插入在数据库表插入操作中,还可以一次执行一组SQL数据插入语句,实现在表中多行数据插入。例 在学生信息表STUDENT中,一次插入多个学生数据,其插入数据SQL语句如下: INSERT INTO STUDENT VALUES(201222010003,张亮,男,1996-01-21,软件工程,);INSERT INTO STUDENT VALUES(201222010004,谢云,男,1995-
43、08-12,软件工程,);INSERT INTO STUDENT VALUES(201222010005,刘亚,女,1995-06-20,软件工程,NULL);60 电子科技大学数据库原理及应用实践操作:在SQL SERVER中执行上述插入语句。61 电子科技大学数据库原理及应用这些语句执行后,学生信息表STUDENT的数据见下图所示。注意:在INSERT INTO插入数据语句中,若某些列的值不确定,可以在该列位置使用空值(NULL),但主键、非空列不允许使用NULL。此外,若表中主键为代理键,它不需要出现,因该值由DBMS自动提供62 电子科技大学数据库原理及应用实践练习: 在EMPLOYE
44、E表中插入多个员工信息数据列名类型键是否非空备注EmployeeNumberInt主键是代理键NameVarChar(30)否是DepartmentChar(35)否是缺省值“人力资源”PhoneChar(12)否否EmailVarChar(100)否是要求取值唯一63 电子科技大学数据库原理及应用四、数据更新四、数据更新SQL语句语句数据更新SQL语句可以对数据表中指定数据进行修改处理,其语句基本格式如下:UPDATE SET = ,=.WHERE ;其中UPDATE 为数据更新语句的关键词。为被更新数据的数据库表。SET 关键词指定对哪些列设定新值。WHERE 关键词给出需要满足的条件表达
45、式。64 电子科技大学数据库原理及应用例 在学生信息表STUDENT中,学生“杨宾”的原有Email数据为空,现需要修改为“”。其数据修改的SQL语句如下:UPDATE STUDENTSET Email= WHERE StudentName=杨宾;65 电子科技大学数据库原理及应用实践操作:在SQL SERVER中执行上述更新SQL语句。66 电子科技大学数据库原理及应用这个语句执行后,学生信息表STUDENT的数据下图所示。67 电子科技大学数据库原理及应用实践练习: 在下面的STUDENT表中,使用SQL语句将“刘亚”的出生日期和Email分别修改为“1995-05-15”、。68 电子科
46、技大学数据库原理及应用五、数据删除五、数据删除SQL语句语句数据删除语句DELETE将从指定数据库表中删除满足条件的数据行,其语句基本格式如下:DELETE FROM WHERE ;其中DELETE FROM为数据删除语句的关键词。为被删除数据的数据库表。WHERE 关键词给出需要满足的条件表达式。69 电子科技大学数据库原理及应用例 在学生信息表STUDENT中,删除姓名为 “张亮”的学生数据,其数据删除的SQL语句如下:DELETE FROM STUDENTWHERE StudentName=张亮;70 电子科技大学数据库原理及应用实践练习: 在下面的STUDENT表中,删除“张亮”信息。
47、71 电子科技大学数据库原理及应用3.4 SQL关系查询语句一、一、 语句基本格式语句基本格式在SQL语言中,数据查询语言 (DQL) 是负责对数据表进行查询访问的语句,这是对数据库访问使用最多的一类SQL语句SELECT ALL|DISTINCT , INTO FROM , WHERE GROUP BY HAVING ORDER BY ASC | DESC ;72 电子科技大学数据库原理及应用二、从单个表读取指定列二、从单个表读取指定列例 学生信息表STUDENT原始数据如下图所示。在数据库中,最简单的数据查询操作就是从单个数据表中读取指定列的数据,其基本语句格式为:SELECT ,FROM
48、 ;73 电子科技大学数据库原理及应用若要从STUDENT表中读取学生的学号、姓名、专业等列数据,其数据查询SQL语句如下:SELECT StudentID,StudentName,MajorFROM STUDENT;74 电子科技大学数据库原理及应用如果希望从STUDENT表查询所有列数据,其数据查询SQL语句如下:SELECT * FROM STUDENT;75 电子科技大学数据库原理及应用若希望从STUDENT表中查询专业列(Major)数据,其数据查询SQL语句执行结果如下:76 电子科技大学数据库原理及应用为了使读取的数据过滤重复行,可以在查询语句中加入DISTINCT关键字,其执行
49、结果如下。77 电子科技大学数据库原理及应用三、从单个表读取指定行三、从单个表读取指定行SQL查询语句也可以从一个数据表中读取满足条件的指定行数据,即完成关系数据的元组选择操作,其基本语句格式如下。SELECT *FROM WHERE ;例 从STUDENT表中查询性别为“男”的学生数据,其数据查询SQL语句如下。SELECT *FROM STUDENTWHERE StudentGender=男;78 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。79 电子科技大学数据库原理及应用四、从单个表读取指定行和列四、从单个表读取指定行和列例 从STUDENT表中查询性别为“
50、男”的学生学号、学生姓名、性别、专业数据,其数据查询SQL语句如下。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWHERE StudentGender=男;在SQL查询语句中,还可以从一个数据表中读取指定行与指定列范围内的数据,即同时完成关系数据的行列投影操作,其基本语句格式为:SELECT ,FROM WHERE ;80 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。81 电子科技大学数据库原理及应用在WHERE子句中可以使用如下方式,指定范围数据。1)使用BETWEEN.AND关键词
51、来限定列值范围,还可以使用关键词LIKE与通配符来限定查询条件。2)SQL查询语言的常用通配符有下划线(_)和百分号(%)。下划线(_)通配符用于代表一个未指定的字符。百分号(%)通配符用于代表一个或多个未指定的字符。五、五、Where条件子句条件子句82 电子科技大学数据库原理及应用例 若要从STUDENT表中查询出生日期在“1995-04-01”到“1996-04-01”的学生数据。其查询SQL语句如下:SELECT *FROM STUDENTWHERE BirthDay BETWEEN 1995-04-01 AND 1996-04-01;该语句执行后,其查询操作结果见下图所示。83 电子
52、科技大学数据库原理及应用例 若要从STUDENT表中查询邮箱域名为“”的学生数据。其数据查询SQL语句如下:SELECT *FROM STUDENTWHERE Email LIKE %;该语句执行后,其查询操作结果见下图所示。84 电子科技大学数据库原理及应用实践练习: 从学生数据表STUDENT中查询“刘”姓的学生信息。85 电子科技大学数据库原理及应用说明: 在SQL查询Where子句中,还可以使用多个条件表达式,并通过逻辑运算符(AND、OR、NOT)连接操作,进一步限定结果集的数据范围。以及使用IN或NOT IN关键词限定列值范围。例 从STUDENT表中查询性别为“男”,并且专业为“
53、软件工程”的学生数据,其数据查询SQL语句如下。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWHERE Major=软件工程 AND StudentGender=男;86 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。87 电子科技大学数据库原理及应用IN关键字使用: 从STUDENT表中查询,使用IN关键字读取”计算机应用”专业的学生。其SQL语句如下所示。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWH
54、ERE Major IN (计算机应用);88 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。89 电子科技大学数据库原理及应用六、对结果进行排序六、对结果进行排序 在SELECT查询语句返回的结果中,行的顺序是任意的。如果需要结果集排序,可以在SELECT语句中加入ORDER BY关键字。例 若要从STUDENT表中按学生出生日期降序输出学生数据,其数据查询SQL语句如下。SELECT *FROM STUDENTORDER BY Birthday DESC;在默认情况下,SQL查询的结果集是按指定列值的升序排列。可以使用关键词ASC和DESC选定排序是升序或降序。9
55、0 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。91 电子科技大学数据库原理及应用如果需要结果集按多个列排序,可以分别加入关键字ASC或DESC改变。例 若要将STUDENT表查询数据,首先按出生日期降序排列,然后按姓名升序排列,其数据查询SQL语句如下:SELECT *FROM STUDENTORDER BY Birthday DESC , StudentName ASC;92 电子科技大学数据库原理及应用实践练习: 从学生数据表STUDENT中查询信息,分别按姓名、出生日期升序排列输出。93 电子科技大学数据库原理及应用七、七、SQL内置函数和计算内置函数和计算
56、在SQL语言中,可以使用函数方式对SELECT查询结果集数据进行处理。这些函数可以是DBMS系统所提供的内置函数 ,也是用户根据需要自定义函数。典型DBMS系统提供的内置函数主要有以下几类:聚合函数算术函数字符串函数日期时间函数数据类型转换函数94 电子科技大学数据库原理及应用例 若要统计STUDENT表中的学生人数,在SELECT语句中可以使用COUNT()函数来计算,其查询SQL语句如下:SELECT COUNT(*) AS 学生人数FROM STUDENT;95 电子科技大学数据库原理及应用例 若要找出STUDENT表中年龄最大和年龄最小的学生出生日期,其查询SQL语句如下:SELECT
57、 Min(Birthday) AS 最大年龄,Max(Birthday) AS 最小年龄FROM STUDENT;96 电子科技大学数据库原理及应用例 若要计算出STUDENT表中各个学生的Email字符串长度,其查询SQL语句如下:SELECT StudentID, StudentName, Email, LEN( Email) AS 邮箱长度FROM STUDENT;97 电子科技大学数据库原理及应用八、八、SQL内置函数和分组内置函数和分组在SQL语言中,可在查询结果集进行分组数据统计。这是通过在SELECT语句中加入Group By子语句来实现。例 若要分专业统计STUDENT表中的学
58、生人数。在SELECT语句中可以使用GROUP BY分组子句完成统计,其查询SQL语句如下:SELECT Major AS 专业, COUNT(StudentID) AS 学生人数FROM STUDENTGROUP BY Major;98 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。99 电子科技大学数据库原理及应用在分组统计SQL查询语句中,还可以使用HAVING子句限定分组统计的条件。例 若要分专业统计STUDENT表中男生人数,但限定只显示人数大于2的人数,其查询SQL语句如下:SELECT Major AS 专业, COUNT(StudentID) AS 学
59、生人数FROM STUDENTWHERE StudentGender=男GROUP BY MajorHAVING COUNT(*)2;100 电子科技大学数据库原理及应用实践操作:执行上述SQL SELECT语句。101 电子科技大学数据库原理及应用Group by与having理解group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面或者包含在having 后的聚合函数里。where 子句的作用是在对查询结果进行分组前将不符合where条件的行去掉,即在分组之前过滤数据条件中不能包含聚合函数。 having 子句的作用是筛选
60、满足条件的组即在分组之后过滤数据条件中经常包含聚合函数。GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用102 电子科技大学数据库原理及应用注意:除了使用GROUP BY语句外,列的名称是不允许和内置函数一起混合使用。以下语句不规范。SELECT MaxHours, SUM(MaxHours)FROMPROJECTWHEREProjectID = 1200;DBMS产品在使用内置函数的方式也不一样。一般来说,内置函数是不能用于WHERE子句中的。以下语句不规范:SELECT ProjectID, MaxHoursFROMPROJECTWHEREMaxHours 40
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水库加固维修工程施工方案
- 水泥面楼梯防滑条施工方案
- 汽车配件销售经理:汽车配件行业销售经验简历
- 行测面试试题及答案
- 电路与电子学试题及答案
- 餐饮经营透视
- 管理型测试试题及答案
- 重庆名校联考试题及答案
- 研学基地的运营模式与管理
- 抗洪战士考试题及答案
- CVP中心静脉压CVP监测
- 13诗第十二-整本书阅读系列《经典常谈》名著阅读与练习
- 小学美术-湘美版四年级下册第10课中国龙教学设计学情分析教材分析课后反思
- 一年级下册劳技教案
- 部编版四年级语文下册第4单元大单元整体教学作业设计(教案配套)
- 大一逻辑学全部
- 游戏法缓解小班幼儿入园焦虑的个案研究
- 2023年包头轻工职业技术学院单招综合素质题库及答案解析
- 地下室顶板裂缝防水处理方案(完整资料)
- 宫颈锥切日间手术临床路径(妇科)及表单
- GB/T 23111-2008非自动衡器
评论
0/150
提交评论