SQL数据库

2、复杂数据查询
(1)查询所有同学的选课及成绩情况 ,要求显示出学生的学号、姓名、课程号及课程成绩。
select 选修.学号,学生姓名,课程号,成绩 from 学生,选修 where 学生.学号=选修.学号

(3)查询“计算机99-1”班的同学的选课及成绩情况,要求显示学生的学号、姓名、课程号、课程名称、成绩。
select 选修.学号,选修.课程号,学生姓名,课程名称,成绩 from 学生,选修,课程,班级
where 学生.班级号=班级.班级号 and 学生.学号= 选修.学号 and 选修.课程号=课程.课程号 and 班级名称='
计算机 99-1'

(5)查询所有同学的平均成绩及选课门数,要求显示学号、姓名、平均成绩(将该列明定名为:average-score)、选
课的门数(将该列明定名为:choice-num)
select 选修.学号,学生姓名,avg(成绩)as 平均成绩,count(*)as 选课门数
from 学生,选修 where 学生.学号=选修.学号 group by 选修.学号,学生姓名

(6)查询所有选修了课程但未参加考试的所有同学及相应的课程,要求显示学生的学号、姓名、课程号、课程名称。
select 选修.学号,选修.课程号,学生姓名,课程名称 from 学生,选修,课程
where 学生.学号=选修.学号 and 选修.课程号= 课程.课程号 and 成绩 is null

(7)查询所有选修了课程但考试不及格(假设<60分为不及格)的所有同学及相应的课程,要求显示学生的学号、
姓名、课程号、课程名称、成绩。
select 选修.学号,选修.课程号,学生姓名,课程名称,成绩 from 学生,选修,课程
where 学生.学号=选修.学号 and 选修.课程号= 课程.课程号 and 成绩<'60'

(8)查询选修了课程名为“程序设计语言”的所有同学及成绩状况,要求显示学生的 姓名、课程的成绩。(使用ANY)
select 姓名,成绩from 学生,课程,选修 where 学生.学号=选修.学号 and 课程.课程号=选修.课程号 and 选修.课程号
=any(select 课程号 from 课程 where 课程名称='程序设计语言')

(9)查询“计算机系”的所有同学及成绩情况,要求显示学生的学号、姓名、班级名称、课程号、课程名称、成绩。
select 选修.学号,选修.课程号,学生姓名,班级名称,课程名称,成绩 from 学生,选修,课程,班级 where 学生.学号=选修.
学号 and 选修.课程号= 课程.课程号 and 学生.班级号=班级.班级号 and 系别='计算机系'

(10)查询所有教师的任课情况,要求显示教师姓名、担任课程名称。
select 教师姓名,课程名称 from 教师,课程,讲授
where 教师.教师号=讲授.教师号 and 课程.课程号=讲授.课程号

(11)查询所有教师的任课门数,要求显示教师姓名、担任课程门数。
select 教师姓名,count(*) as 任课门数 from 教师,讲授
where 教师.教师号=讲授.教师号 group by 教师姓名

(12)查询和“李建国”是同一班级的同学的姓名。
select 学生姓名from 学生,班级 where 班级名称=(select 班级名称 from 学生,班级 where 学生.班级号=班级.班级
号 and 学生姓名='李建国') and 学生.班级号=班级.班级号
select s_name from student
where student.class_no=(select class_no from student where s_name='李建国')

(13)查询没有选修“计算机基础”课程的学生姓名。(用NOT EXISTS)
select 学生姓名 from 学生
where not existen(select课程号 from课程 where 课程名称='计算机基础')
(14)查询主讲“数据库原理与应用”和主讲“数据结构”的教师姓名。
select 教师姓名 from 教师,课程,讲授
where 教师.教师号=讲授.教师号 and 课程.课程号=讲授.课程号 and 课程名称='数据库原理与应用'
group by 教师姓名 union select 教师姓名 from 教师,课程,讲授
where 教师.教师号=讲授.教师号 and 课程.课程号=讲授.课程号
and 课程名称='数据结构' group by 教师姓名

3、自定义储存过程
(1)create procedure insert_student(@sno char(6),@sn varchar(10),@class_name char(20),@sex char(2),@bir datetime) as
insert into 学生 values(@sno,@sn,@class_name,@sex,@sex ,@bir)

(2)exec insert_student @sno='002112',@sn='王大力',@sex='男',@class_name='信息00-3',@bir='1982-06-25'
(3)create procedure insert_course(@course_no char(5),@course_name char(20),@course_score numeric(6,2)='2')
as insert into 课程 values(@course_no,@course_name,@course_score)

(4)第一种: exec insert_course @course_no='02004',@course_name='多媒体技术',@course_score='6'
第二种: exec insert_course @course_no='02005',@course_name='多媒体技术与应用'

(5)create procedure query_student(@sno char(6),@sn varchar(10) output,@sex char(2) output,@bir datetime output)
as select @sn=学生姓名,@sex=性别,@bir=出生日期 from 学生 where 学号=@sno

(6)declare @sn varchar(10)
declare @sex char (2)
declare @bir datetime
exec query_student'001101',@sn output,@sex output,@bir output
select '学生姓名'=@sn,'性别'=@sex,'出生日期'=@bir

(1)create trigger display_trigger on 学生for insert as select * from 学生
(2)exec insert_student @sno='991105',@class_no='js9901',@sn='刘一',@sex='男',@bir='1981-08-25'

--首先在数据库的属性中把数据库还原模式改为“完全”或“大容量日志记录”
--1、进行完全备份
exec sp_addumpdevice 'disk','mylogfile','d:\back\mylogfile.bak'
backup database 学生选课系统 to mylogfile

--2、进行事务日志备份
exec sp_addumpdevice 'disk','mylogfile2','d:\back\mylogfile2.bak'
backup log 学生选课系统 to mylogfile2

--3、再次进行事务日志备份
exec sp_addumpdevice 'disk','mylogfile3','d:\back\mylogfile3.bak'
backup log 学生选课系统 to mylogfile3

--4、还原(依次是:完全还原-第一次事务日志还原-第二次事务日志还原)
restore database 学生选课系统 from mylogfile with norecovery
restore log 学生选课系统 from mylogfile2 with norecovery
restore log 学生选课系统 from mylogfile3 with recovery

合集下载

《sql数据库入门》课件

《sql数据库入门》课件
《SQL数据库入门》PPT课 件
目录
• SQL数据库概述 • SQL基础语法 • 数据库设计和创建 • 数据插入、更新和删除 • 数据库查询优化 • SQL函数和存储过程 • SQL数据库安全
01
SQL数据库概述
SQL数据库的定义
1
SQL数据库是一种关系型数据库管理系统,它使 用结构化查询语言(SQL)来创建、操作和管理 数据库。
非关系型数据库
非关系型数据库不使用关系模型来组 织和存储数据,如NoSQL数据库,如 MongoDB、Cassandra等。
SQL数据库的应用场景
电子商务
SQL数据库可以用于电子商务 网站的数据存储和管理,如商
品信息、订单信息等。
金融
SQL数据库可以用于金融行业 的数据存储和管理,如银行系 统、证券交易系统等。
分析查询执行计划
通过查看查询执行计划,分析查询过程中的 瓶颈和问题,针对性地进行优化。
监控数据库性能
实时监控数据库性能指标,及时发现和解决 性能问题。
定期维护数据库
对数据库进行定期的清理、优化和更新,保 持数据库的健康状态。
学习和实践
不断学习和实践新的查询优化技术和方法, 提高自己的技能水平。
06
可扩展性
设计时考虑未来的数据增长和业务变化,确保数 据库能够灵活适应变化。
ABCD
规范化设计
遵循数据库规范化原则,如第一范式、第二范式 等,以减少数据冗余和提高数据一致性。
性能优化
根据查询需求和数据量,合理设计索引、分区等 ,以提高查询效率。
创建数据库
选择数据库管理系统( DBMS)
根据需求选择合适的DBMS, 如MySQL、Oracle、SQL Server等。

最全SQL数据库试题-整理

最全SQL数据库试题-整理

一、单项选择题1.下列四项中,不属于数据库特点的是( C )。

A.数据共享B.数据完整性C.数据冗余很高D.数据独立性高2.下列四项中,不属于SQL2000实用程序的是( D )。

A.企业管理器B.查询分析器C.服务管理器D.媒体播放器3.SQL Server安装程序创建4个系统数据库,下列哪个不是(C )系统数据库。

A.masterB.modelC.pubD.msdb4.(A )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。

数据库在建立、使用和维护时由其统一管理、统一控制。

A.DBMS B.DBC.DBS D.DBA5. 在SQL中,建立表用的命令是( B )。

A.CREATE SCHEMAB.CREATE TABLEC.CREATE VIEWD.CREATE INDEX6.SQL语言中,条件年龄BETWEEN 15 AND 35表示年龄在15至35之间,且( A )。

A.包括15岁和35岁B.不包括15岁和35岁C.包括15岁但不包括35岁D.包括35岁但不包括15岁7.下列四项中,不正确的提法是( C )。

A.SQL语言是关系数据库的国际标准语言B.SQL语言具有数据定义、查询、操纵和控制功能C.SQL语言可以自动实现关系数据库的规范化D.SQL语言称为结构查询语言8.在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。

A. sp_dbhelpB. sp_dbC. sp_helpD. sp_helpdb9.SQL语言中,删除表中数据的命令是( A )。

A. DELETEB. DROPC. CLEARD. REMOVE10.SQL的视图是从( C )中导出的。

A. 基本表B. 视图C. 基本表或视图D. 数据库11. 下列哪个不是sql 数据库文件的后缀。

CA..mdf B..ldfC..tif D..ndf12. 数据定义语言的缩写词为( A )。

SQL数据库实验报告 (1)

SQL数据库实验报告  (1)

资源与环境科学学院实验报告一、上机实习名称:SQL Server的安装及数据库的建立二、实验目的:1、通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。

2、熟悉对DBMS的操作3、熟悉如何使用SSMS和SQL建立数据库和表,并加深对于完整性的理解。

三、实验内容:1、根据安装文件的说明安装数据库管理系统。

2、学会启动和停止数据库服务,思考可以用哪些方式来完成启动和停止。

3、掌握管理工具的使用(1)SQL Server Management Studio的使用➢连接服务器的方法➢查询分析器的使用(2)配置管理器的使用4、了解数据库系统的逻辑组件:它们主要是数据库对象,包括基本表、视图、触发器、存储过程、约束等。

今后将学习如何操作这些数据库对象。

5.在SSMS中创建数据库和表四、实验步骤1. SQL Server 2008的体系结构和特点介绍SQL Server 是一个关系数据库管理系统。

由微软公司2008年第三季度正式发布, SQL Server 2008是一个重大的产品版本,在安全性、可用性、易管理性、可扩展性、商业智能等方面有了更多的改进和提高,对企业的数据存储和应用需求提供了更强大的支持和便利,使得它成为迄今为止最强大和最全面的SQL Server版本。

SQL Server 2008 版本体系:根据不同的用户类型和使用需求,微软公司推出了5种不同的SQL Server版本,包括企业版(Enterprise)、标准版(Standard)、工作组版(Workgroup)、学习版(Express)和移动版(Compact)Microsoft SQL Server 2008系统由4个主要部分组成。

这4个部分被称为4个服务,这些服务分别是数据库引擎、分析服务、报表服务和集成服务。

2. SQL Server管理工作室的启动打开windows控制面板—管理—服务,启动SQL Server 服务,如下图(1)开始→程序→Microsoft SQL Server 2008→SQL Server Management Studio(如图1.1所示)。

sql server连接数据库的步骤

sql server连接数据库的步骤

sql server连接数据库的步骤连接SQL Server数据库主要有以下步骤:1.安装SQL Server数据库:首先需要安装SQL Server数据库软件。

可以从Microsoft官网下载SQL Server安装包,然后进行安装。

安装过程中需要选择数据库引擎组件以及相应的实例名称。

2.配置SQL Server:安装完成后,需要对SQL Server进行一些基本的配置。

包括设置服务器身份验证模式(Windows身份验证或SQL Server身份验证)、设置端口号以及配置防火墙等。

3.启动SQL Server服务:在安装完成并配置好之后,需要确保SQL Server服务已经启动。

可以通过Windows服务管理器查看并启动SQL Server服务。

4.确定数据库服务器的名称:在连接SQL Server之前,需要明确数据库服务器的名称,即实例名称。

在安装SQL Server时可以指定实例名称,如果没有指定则默认为默认实例(MSSQLSERVER)。

5.确定认证方式:连接SQL Server时可以使用Windows身份验证或SQL Server身份验证。

Windows身份验证是使用操作系统的登录凭据进行连接,SQL Server身份验证是使用用户名和密码进行连接。

6.使用SQL Server Management Studio(SSMS)连接数据库:SSMS是用于管理和操作SQL Server数据库的工具。

打开SSMS后,在连接对话框中选择服务器类型为“数据库引擎”,然后输入数据库服务器的名称和认证方式。

7.连接到数据库服务器:在SSMS中输入数据库服务器的名称和认证方式后,点击“连接”按钮进行连接。

如果连接成功,则可以开始操作数据库。

8.创建数据库:连接到数据库服务器后,可以通过SSMS创建数据库。

在SSMS的对象资源管理器中右键点击“数据库”,然后选择“新建数据库”,输入数据库名称、文件路径等信息,点击“确定”即可创建数据库。

sql数据库实训总结(文档)

sql数据库实训总结(文档)

sql数据库实训总结(文档)sql数据库实训总结sql数据库实训总结,SQL是Structured Query Language(结构化查询语言)的缩写。

SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

下面是共享的sql数据库实训总结,欢迎阅读!sql数据库实训总结我在sql server 索引基础学问系列中,第一篇就讲了记录数据的基本格式。

那里主要讲解的是,数据库的最小读存单元:数据页。

一个数据页是8k大小。

对于数据库来说,它不会每次有一个数据页变化后,就存到硬盘。

而是变化达到一定数量级后才会作这个操作。

这时候,数据库并不是以数据页来作为操作单元,而是以64k的数据(8个数据页,一个区)作为操作单元。

区是管理空间的基本单位。

一个区是八个物理上延续的页(即 64 kb)。

这意味着 sql server 数据库中每 mb 有 16 个区。

为了使空间分配更有效,sql server 不会将全部区别配给包含少量数据的表。

sqlserver 有两种类型的区:统一区,由单个对象全部。

区中的全部 8 页只能由所属对象使用。

混合区,最多可由八个对象分享。

区中八页的每页可由不同的对象全部。

通常从混合区向新表或索引分配页。

当表或索引增长到 8 页时,将变成使用统一区举行后续分配。

假如对现有表创建索引,并且该表包含的行足以在索引中生成 8 页,则对该索引的全部分配都使用统一区举行。

为何会这样呢?其实很容易:读或写 8kb 的时光与读或写 64 kb的时光几乎相同。

在 8 kb 到 64 kb 范围之内,单个磁盘 i/o 传输操作所花的时光主要是磁盘取数臂和读/写磁头运动的时光。

因此,从数学上来讲,当需要传输 64 kb 以上的 sql 数据时,尽可能地执行 64 kb 磁盘传输是有益的,即分成数个64k 的操作。

由于 64 kb 传输基本上与 8 kb 传输一样快,而每次传输的 sql server 数据是 8 kb 传输的 8 倍。

sql2008r2数据库实例名

sql2008r2数据库实例名

SQL2008R2数据库实例名一、什么是SQL2008R2数据库实例名SQL2008R2数据库实例名是指在SQL Server 2008R2数据库管理系统中创建的数据库实例的名称。

每个实例都有一个唯一的名称,用于区分不同的数据库实例。

数据库实例名在连接数据库时非常重要,因为它是访问数据库的唯一标识。

二、SQL2008R2数据库实例名的命名规则1. 长度限制:数据库实例名的最大长度为16个字符,且不区分大小写。

2. 允许字符:数据库实例名只能由以下字符组成:字母、数字、下划线和美元符号。

但是不能以下划线或美元符号开头。

3. 不能重复:数据库实例名在同一台服务器上必须是唯一的,不同的实例名对应不同的数据库实例。

三、设置SQL2008R2数据库实例名的步骤1. 在SQL Server Management Studio(SSMS)中连接数据库服务器。

2. 在对象资源管理器中展开“数据库引擎”节点,右键单击“SQL Server”并选择“属性”。

3. 在“常规”选项卡中,找到“服务器名称”和“实例名称”栏。

4. 在“实例名称”栏中输入想要创建的数据库实例名。

5. 点击“确定”保存设置,然后重启SQL Server服务以使设置生效。

四、SQL2008R2数据库实例名的注意事项1. 使用具有描述性的名称:为了方便管理和识别,建议使用具有描述性的名称来命名数据库实例,比如“SalesDBInstance”或“HRDBInstance”。

2. 避免使用保留关键字:数据库实例名不应该与SQL Server的保留关键字相同,以免引起混淆和错误。

3. 与应用程序协调设置:如果数据库用于支持特定的应用程序,建议与应用程序开发人员协调设置数据库实例名,以确保一致性和无缝连接。

五、SQL2008R2数据库实例名的重命名1. 使用SSMS连接到数据库服务器。

2. 在对象资源管理器中,展开“数据库引擎”节点,右键单击“SQL Server”并选择“属性”。

SQL数据库的查询方法

SQL数据库的查询⽅法简单查询:⼀、投影select * from表名select列1,列2... from表名select distinct 列名from表名⼆、筛选select top 数字列|* from表名(⼀)等值与不等值select * from表名where列名=值select * from表名where列名!=值select * from表名where列名>值select * from表名where列名<值select * from表名where列名>=值select * from表名where列名<=值(⼆)多条件与范围select * from表名where条件1 and|or 条件2 ...select * from表名where between ... and ...select * from表名where列in (值列表)(三)模糊查询 like % _select * from表名where列 like '%_....'三、排序select * from表名where条件 order by 列名 ASC|DESC,列名 ASC|DESC四、分组:统计函数(聚合函数)count(), max(), min(), sum(), avg()count()统计总⾏数count(*)得到所有的⾏数count(列)得到该列中所有⾮null个数。

select COUNT(*) from car where Brand='b003'max(列) 这⼀列的最⼤,min(列)这⼀列的最⼩select min(price) from carsum(列)这⼀列的和,avg(列)这⼀列的平均select AVG(price) from cargroup by ...having...1.group by后⾯跟的是列名。

2.⼀旦使⽤group by分组了,则select和from中间就不能⽤*,只能包含两类东西⼀类是:group by 后⾯的列名,另⼀类是统计函数select Oil,avg(price) from Car group by oil对于统计函数⽣成的列,默认是⽆列名,可以通过下⾯的⽅法指定列名。

数据库的sql语句练习题

数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。

请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。

b) 查询学生表中的男性学生信息。

c) 查询学生表中年龄为18岁的学生信息。

d) 查询学生表中成绩大于等于90分的学生信息。

e) 查询学生表中姓“张”的学生信息。

2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。

3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。

4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。

5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。

学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。

已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。

6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。

以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。

祝你练习愉快,取得好成绩!。

数据库—SQL语言

数据库—SQL语⾔1 SQL 基本概念1.1 SQL 概念及分类定义:SQL是Structured Query Language的缩写,意思是结构化查询语⾔,是⼀种在数据库管理系统中查询或对数据库⾥⾯的数据进⾏更改的语⾔主流数据库管理系统关系型数据库MySQLOraclePostgre SQLSQL Server⾮关系型数据库redismongo DB数据定义语⾔DDL(Data Ddefinition Language)SQL 数据定义语⾔主要⽤来定义逻辑结构,包括定义基表,视图和索引删除表定义表修改表数据查询语⾔DQL(Data Query Language)SQL 的数据查询语⾔主要⽤来对数据库中的各种数据对象进⾏查询数据操纵语⾔DML(Data Manipulation Language)SQL 的数据操纵语⾔,⽤于改变数据库中的数据,包括插⼊,删除,修改数据控制功能DCL(Data Control Language)SQL 的数据控制语⾔,对表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句1.2 SQL 语⾔的特点综合统⼀:独⽴完成数据库⽣命周期中的全部活动,包括定义关系模式、录⼊数据、建⽴数据库、査询、更新、维护、数据库重构、数据库安全⾼度⾮过程化:⽤户只需提出“做什么”,⽽不必指明“怎么做⾯向集合的操作⽅式:SQL 采⽤集合操作⽅式以同⼀种语法结构提供两种使⽤⽅式:SQL既是⾃含式语⾔,⼜是嵌⼊式语⾔,SQL语句能够嵌⼊到⾼级语⾔程序中语⾔简洁,易学易⽤:SQL 语⾔语法简单,接近英语⼝语1.3 SQL 基本语法1 SQL 数据类型数据类型含义CHAR(n)CHARACTER(n)长度为 n 的定长字符串VARCHAR(n)CHARACTERVARYING(n)最⼤长度为 n 的变长字符串CLOB字符串⼤对象BLOB⼆进制⼤对象INTINTEGER长整数(4 字节)SMALLINT短整数(2 字节)BIGINT⼤整数(8 字节)数据类型含义NUMERIC(p, d)定点数,由 p 位数字(不包括符号、⼩数点)组成,⼩数点后边有 d 位数字DECIMAL(p, d)DEC(p, d)同 NUMERIC REAL取决于机器精度的单精度浮点数DOUBLE PRECISION取决于机器精度的双精度浮点数FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字数据类型含义BOOLEAN逻辑布尔值DATE⽇期,包含年、⽉、⽇,格式为 YYYY-MM-DDTIME时间,包含⼀⽇的时、分、秒,格式为 HH:MM:SS TIMESTAMP时间戳类型TIMERVAL时间间隔类型2 模式的定义及删除模式定义语法:CREATE SCHEMA <模式名> AUTHORIZATION <⽤户名>例⼦:CREATE SCHEMA "S-T" AUTHORIZATION WANG;模式定义 + 视图语法:CREATE SCHEMA <模式名> AUTHORZATION <⽤户名> [<表定义⼦句>|<视图定义⼦句>|<授权定义⼦句>];模式删除语法:DROP SCHEMA <模式名><CASCADE|RESTRICT>;CASCADE、RESTRICT两者必须⼆选⼀VASCADE(级联):删除模式的同时也把给模式的所有数据库对象删除RESTRICT(限制):如果该模式下有下属对象(⽐如表视图),则拒绝该删除语句的执⾏3 表的增删改查创建表CREATE TABLE 表名 (字段名类型字段约束, 字段名类型字段约束, 字段名类型字段约束);CREATE TABLE Student (name VARCHAR(20),age INT,sex CHAR(1),);删除表DROP TABLE <表名> [RESTRICT|CASCADE];DROP TABLE Student RESTRICT;修改ALTER TABLE <表名>[ADD [COLUMN] <新列名><数据类型> [完整性约束]][ADD <表级完整性约束>]ALTER TABLE Student ADD S_entrance DATE;ALTER TABLE Student ALTER COLUMN S_age INT;4 索引的增删改查当数据库中数据量巨⼤时,建⽴索引可以减少查询时间,索引可以建⽴在⼀列或多列上建⽴索引CLUSTER:聚簇索引,物理顺序与索引的逻辑顺序相同UNIQUE:唯⼀索引CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名> [<次序>]] ...);CREATE UNIQUE INDEX Stusno ON Student(Sno);修改索引ALTER INDEX <旧索引名> RENAME TO <新索引名>;ALTER INDEX SCno RENAME TO SCSno;删除索引DROP INDEX <索引名>DROP INDEX Stusno;2 SQL 的查询假设关系表Student、Course、SC如下:Student学号(Sno)姓名(Sname)性别(Ssex)年龄(Sage)院系(Sdept) 201215121李勇男20CS 201215122刘晨⼥19CS 201215123王敏⼥18MA 201215125张⼒男19ESCourse课程号(Cno)课程名(Cname)先⾏课(Cpno)学分(Ccredit) 1数据库542数学/23信息系统144操作系统635数据结构746数据处理/27Java语⾔64SC学号(Sno)课程号(Cno)成绩(Grade)2012151211922012151212852012151213882012151222902015151223802.1 查询所有列查询Student表中所有列SELECT * FROM Student;2.2 查询部分列查询Student表中的Sno、Ssex列SELECT Sno, Ssex FROM Student;2.3 列取别名查询Student表中的Sno、Ssex列,并将Sno命名为 “学号”,Ssex命名为 “性别”SELECT Sno 学号, Ssex 性别 FREOM Student;SELECT Sno AS 学号, Ssex AS 性别 FROM Student;2.4 表取别名查询Course表中的Cno列,并将查询结果命名为CCSELECT Cno FROM Course AS CC;2.5 查询结果去重查询SC中的Sno列,并将结果去重SELECT DISTINCT Sno AS 课程名 FROM SC;2.6 查询结果加条件查询条件如下:查询条件谓词⽐较=、>、<、<=、>=!=、<>、!>、!<、NOT确定范围BETWEEN ANDNOT BETWEEN AND确定集合IN、NOT IN字符匹配LIKE、NOT LIKE空值IS NULL、IS NOT NULL逻辑运算AND、OR、NOT 查询 SC 表中 Grade ⼤于 88 的信息SELECT * FROM SC WHERE Grade >= 88;查询 SC 表中 Grade 在 85 ~ 95 之间的信息SELECT * FROM SC WHERE Geade BETWEEN 85 AND 95;查询 1 是否包含在 (1,2) 之间SELECT 1 FROM (1, 2);查询 Course 表中包含 “系统” 的课程的课程号,课程名"%" 可以近似多个字符,"_" 只能近似⼀个字符SELECT Cno, Cname FROM Course WHERE Cname LIKE '%系统';查询 Course 中先⾏课为空的信息SELECT * FROM Course WHERE Cpno IS NULL;查询 Course 中学分为 4 分并且先⾏课为 1 的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 AND Cpno = 1;查询 Course 中学分为 4 分或 3 分的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 OR Ccredit = 4;2.7 聚集函数函数含义COUNT(*)统计元组个数COUNT([DISTINCT|ALL]<列名>)统计⼀列中值的个数SUM([DISTINCT|ALL]<列名>)计算⼀列值的总和AVG([DISTINCT|ALL]<列名>)计算⼀列值的平均值MAX([DISTINCT|ALL]<列名>)计算⼀列值中的最⼤值MIN([DISTINCT|ALL]<列名>)计算⼀列值中的最⼩值注:DISTINCT是去除重复的值查询 CS 表中 Grade 的个数(去重)、总和、平均值、最值SELECT COUNT(*) FROM SC;SELECT COUNT(DISTINCT Grade) FROM SC;SELECT SUM(Grade) FROM SC;SELECT AVG(Grade) FROM SC;SELECT MAX(Grade) FROM SC;SELECT MIN(Grade) FROM SC;2.8 分组查询将表 SC 按照 Sno 进⾏分组,然后筛选出分组中 Sno 为 "201215121" 的⼀组SELECT Sno FROM SC GROUP BY Sno HAVING Sno = '201215121';将 Student 与 SC 以 Sno 进⾏等值连接SELECT Student AS S, SC WHERE S.Sno = SC.Sno;2.10 ⾃⾝连接将 Student 表与⾃⽣进⾏连接SELECT Student AD S1, Student AS S2 WHERE S1.Sno = S2.Sno;2.11 外连接将 Course 与 SC 以 Cno 分别进⾏外连接、左外连接、右外连接SELECT * FROM Course OUTER JOIN SC ON o = o;SELECT * FROM Course LEFT OUTER JOIN SC ON o = o;SELECT * FROM Course RIGHT OUTER JOIN SC ON o = o;2.12 多表查询将 Student 与 SC 以 Sno 进⾏连接,并且将 Course 与 SC 以 Cno 进⾏等值连接SELECT *FROM Student JOIN SC ON Student.Sno = SC.SnoJOIN Course ON o = o;SELECT *FROM Student, Course, SCWHERE Student.Sno = SC.Sno AND o = o;2.13 嵌套查询查询 Grade > 90 的学⽣的学号(Sno)、姓名(Sname)、所在院系(Sdept)SELECT Sno, Sname, SdeptFROM StudentWHERE Sno IN (SELECT SnoFROM SCWHERE Grade > 90;);2.14 带有 ANY 的查询查询 Sage > 19 的所有学⽣的姓名(Sname)(结果满⾜⼦集中的任⼀值即可)SELECT SnameFROM StudentWHERE Sage > ANY (SELECT SageFROM StudentWHERE Sage > 19;);2.15 带有 ALL 的查询查询 Sage > 19 的所有学⽣的学号(Sno)(结果要满⾜⼦集中的所有值)SELECT SnoFROM StudentWHERE Sage > ALL (SELECT SageFROM StudentWHERE Sage > 19;);2.16 带 EXISTS 的查询查询没有⼀门课不选修的学⽣的姓名(Sname)SELECT SnameFROM StudentWHERE NOT EXISTS(SELECT *WHERE NOT EXISTS (SELECT *FROM SCWHERE Sno = Student.Sno AND Cno = o););)2.17 集合查询1 并集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的并集SELECT * FROM Student WHERE Sdept = "CS"UNIONSELECT * FROM Student WHERE Sage > 19;2 交集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的交集SELECT * FROM Student WHERE Sdept = "CS"INTERSECTSELECT * FROM Student WHERE Sage > 19;3 差集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的差集SELECT * FROM Student WHERE Sdept = "CS"EXCEPTSELECT * FROM Student WHERE Sage > 19;3 SQL 的增删改3.1 数据的插⼊1 标准添加INSERT INTO Student(Sno, Sname, Ssex, Sage, Sdept)VALUES ('201215128', '⽯昊', '男', 25, 'IS');2 指定部分字段INSERT INTO Student (Sname, Sage, Sdept) VALUE ('叶凡', 22, 'CS');3 不指定字段-- 不指定字段时,需要⼀⼀对应添加且不能缺少项⽬INSERT INTO VALUE Student ('201215128', '⽯昊', '男', 25, 'IS');4 批量添加INSERT INTO Student VALUES('201215128', '⽯昊', '男', 25, 'IS'),('201215129', '叶凡', '男', 22, 'CS'),('201215130', '狠⼈', '⼥', 20, 'MX');3.2 修改将 Student 表中学号(Sno)为 "201215122" 的学⽣姓名(Sname)改为 “⽯昊”,年龄(Sage)改为 25 UPDATE Student SET Sname = "⽯昊", Sage = 25 WHERE Sno = "201215122";3.3 删除删除 Student 表中年龄(Sage)⼤于 18 的数据DELETE FROM Student WHERE Sage > 18;4 视图4.1 视图定义视图(VIEW)也被称作虚表,即虚拟的表,是⼀组数据的逻辑表⽰,其本质是对应于⼀条 SQL 语句,结果集被赋予⼀个名字视图本⾝并不包含任何数据,它只包含映射到基表的⼀个查询语句,当基表数据发⽣变化,视图数据也随之变化⽬的:⽅便,简化数据操作当我们业务需求要查出多张表的数据,这时我们可能会关联多张表查询处理,如果这个查询 SQL 复杂的话也影响了查询效率,这个时候就可以创建视图,查询时候只需要select * from view就可以4.2 创建视图-- 末尾的 WITH CHECK OPTION 作⽤如下:-- 当后续操作对视图进⾏增删改操作时,可能视图已经不满⾜⼦条件 S 的约束-- 加上该语句之后,后续对视图进⾏增删改的时,系统会⾃动在该⼦条件 S 下进⾏操作CREATE VIEW S_STUAS <⼦查询>[WITH CHECK OPTION];将 Student 表中学⽣年龄(Sage)> 18 的学⽣创建⼀个名为 S_NEW 的视图,该视图包含学⽣的学号(Sno)、姓名(Sname)、性别(Ssex)、所在院系(Sdept)CREATE VIEW S_NEWASSELECT Sno, Sname, Ssex, SdeptFROM StudentWHERE Sage > 18WITH CHECK OPTION;4.3 删除视图-- CASCADE 的作⽤如下:-- 当加上该语句时,会删除该视图以及其下的所有视图-- 当不加该语句时,若该视图下该有其他视图,会删除失败DROP VIEW <视图名> [CASCADE];删除 4.2 创建的视图 S_NEWDROP VIEW S_NEW CASCADE;4.4 查询视图查询 4.2 视图 S_NEW 中性别(Ssex)为 “⼥” 的学⽣的学号(Sno)SELECT SnoFROM S_NEWWHERE Ssex = "⼥";4.5 视图更新视图是虚拟的,不存在的,所以对于视图的操作,最终会反映到基本表上将 4.2 的视图 S_NEW 中所在系(Sdept)为 “CS” 学⽣的性别(Ssex)全改为 “男”-- 更新视图UPDATE S_NEWSET Ssex = "男"WHERE Sdept = "CS";-- 更新基本表-- 因为 4.2 的视图创建条件是 Sage > 18,因此更新基本表时要加上该条件UPDATE StudentSET Ssex = "男"WHERE Sdept = "CS" AND Sage > 18;。

数据库sql名词解释

数据库sql名词解释1. 数据库(Database):是按照一定的数据模型组织、存储数据的集合。

它包括数据的结构、存储方式、管理方式等。

2. 表(Table):是数据库中的基本对象,用于存储数据。

表由若干行和列组成,每行表示一个记录,每列表示一个字段。

3. 列(Column):是表中的一个字段,用于存储某种数据类型的值。

列定义了数据的类型、约束条件等。

4. 行(Row):是表中的一条记录,它包含了表中各个字段对应的具体数值。

5. 记录(Record):是一组相关数据的集合,通常以行的形式存在于表中。

6. 主键(Primary Key):是表中的一列或多列的组合,用于唯一标识表中的每条记录。

主键具有唯一性和非空性的特点。

7. 外键(Foreign Key):是表中的一列,用于与另一表的主键建立联系。

外键可以用于实现表之间的关联和数据一致性的保证。

8. 索引(Index):是用于加快数据查询和检索速度的数据结构。

索引可以基于一个或多个列的值来创建,并提供了快速定位和访问数据的能力。

9. 视图(View):是一个虚拟的表,它包含了从一个或多个表中查询得到的数据。

视图可以简化复杂的查询操作,提供了一种数据的抽象和封装。

10. 触发器(Trigger):是一种特殊的存储过程,它与表相关联,并在表的数据发生插入、更新或删除操作时自动执行。

触发器可以用于实现数据的完整性约束和业务逻辑的处理。

11. 存储过程(Stored Procedure):是一组预先编译好的SQL 语句集合,用于完成特定的任务。

存储过程可以封装复杂的业务逻辑,并可重复利用。

12. 事务(Transaction):是数据库操作的一个执行单元,它包含了一组相关的数据库操作。

事务具有原子性、一致性、隔离性和持久性的特点。

13. 数据库管理系统(DBMS):是一个软件系统,用于管理和操作数据库。

它提供了数据库的创建、维护、查询、备份、恢复等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档