- 掌握无条件查询的使用方法。
- 掌握条件查询的使用方法。
- 掌握库函数及汇总查询的使用方法。
- 掌握分组查询的使用方法。
- 掌握查询的排序方法。
- 掌握链接查询的使用方法。
- 查询各位学生的学号、班级和姓名。
- 查询课程的所有信息。
- 查询数据库中有哪些专业班级。
- 查询学时数大于60的课程信息。
- 查询在1986年出生的学生的学号、姓名和出生日期。
- 查询三次做业的成绩都在80分以上的学号、课程号。
- 查询姓张的学生的学号、姓名和专业班级。
- 查询05级的男生信息。
- 查询没有做业成绩的学号和课程号。
- 查询学号为0538的学生的做业1总分。
- 查询选修了K001课程的学生人数。
- 查询数据库中共有多少个班级。
- 查询选修三门以上(含三门)课程的学生的学号和做业1平均分、做业2平均分和做业3平均分。
- 查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种链接查询的方式)。
SQL语句代码sql
/* 1.查询各位学生的学号、班级和姓名。 2.查询课程的所有信息。 3.查询数据库中有哪些专业班级。 4.查询学时数大于60的课程信息。 5.查询在1986年出生的学生的学号、姓名和出生日期。 6.查询三次做业的成绩都在80分以上的学号、课程号。 7.查询姓张的学生的学号、姓名和专业班级。 8.查询05级的男生信息。 9.查询没有做业成绩的学号和课程号。 10.查询学号为0538的学生的做业1总分。 11.查询选修了K001课程的学生人数。 12.查询数据库中共有多少个班级。 13.查询选修三门以上(含三门)课程的学生的学号和做业1平均分、做业2平均分和做业3平均分。 14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种链接查询的方式)。 */ select * from 学生表; select * from 课程表; select * from 学生做业表; --1.查询各位学生的学号、班级和姓名。 select distinct 学号,姓名,专业班级 from 学生表,课程表; --2.查询课程的所有信息。 select * from 课程表; --3.查询数据库中有哪些专业班级。 select 专业班级 from 学生表; --4.查询学时数大于60的课程信息。 select * from 课程表 where 学时数>60; --5.查询在1986年出生的学生的学号、姓名和出生日期。 select 学号,姓名,出生日期 from 学生表 where 出生日期 like '1986%'; --6.查询三次做业的成绩都在80分以上的学号、课程号。 select 学号,课程号 from 学生做业表 where 做业1成绩>=80 and 做业2成绩>=80 and 做业3成绩 >=80; --7.查询姓张的学生的学号、姓名和专业班级。 select 学号,姓名,专业班级 from 学生表 where 姓名 like '张%'; --8.查询05级的男生信息。 select * from 学生表 where 专业班级 like '%05' and 性别 in ('男'); --9.查询没有做业成绩的学号和课程号。 select 学号,课程号 from 学生做业表 where 做业1成绩 | 做业2成绩| 做业3成绩 is null; --10.查询学号为0538的学生的做业1总分。 select sum(做业1成绩) as '学号为0538的学生的做业1总分' from 学生做业表 where 学号 in (0538); --11.查询选修了K001课程的学生人数。 select distinct count(学号) as '选修了K001课程的学生人数' from 学生做业表 where 课程号 in ('K001'); --12.查询数据库中共有多少个班级。 select count(distinct 专业班级) as '数据库中共有多少个班级' from 学生表; --13.查询选修三门以上(含三门)课程的学生的学号和做业1平均分、做业2平均分和做业3平均分。 select 学号,avg(做业1成绩) as '做业1平均分',avg(做业2成绩) as '做业2平均分',avg(做业3成绩) as '做业3平均分' from 学生做业表 where 学号 in (select 学号 from 学生做业表 group by 学号 having (count(*)>2)) group by 学号; /* SELECT 学生做业表.学号,AVG(做业1成绩) as '做业1平均分',AVG(做业2成绩) as '做业2平均分',AVG(做业3成绩) as '做业3平均分' FROM 学生表,学生做业表 WHERE 学生表.学号 = 学生做业表.学号 GROUP BY 学生做业表.学号 HAVING COUNT(*) >2; */ --14.查询于兰兰的选课信息,列出学号、姓名、课程名(使用两种链接查询的方式)。 --第一种 select 学生表.学号,姓名,课程名 from 学生表,课程表,学生做业表 where 学生表.学号=学生做业表.学号 and 课程表.课程号=学生做业表.课程号 and 姓名 in ('于兰兰'); --第二种 select 学生表.学号,姓名,课程名 from 学生表 left join (select 学号,课程名 from 课程表 join 学生做业表 on 课程表.课程号=学生做业表.课程号) as 链接表 on 学生表.学号=链接表.学号 where 姓名='于兰兰' ;
- 掌握各类查询的使用方法。
- 掌握数据操纵的使用方法。
- 查询与“张志国”同一班级的学生信息(使用链接查询和子查询方式)。
- 查询比“计算机应用基础”学时多的课程信息(使用链接查询和子查询方式)。
- 查询选修课程号为K002的学生的学号、姓名(使用链接查询、普通子查询、相关子查询、使用exists关键字的相关子查询)。
- 查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。
- 在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。
- 将全部课程的学分数变为原来的两倍。
- 删除张乐的信息。
SQL语句代码数据库
--1.使用查询语句完成如下任务(每个查询都要给出SQL语句,而且列出查询结果)。 --(1)查询与“张志国”同一班级的学生信息(使用链接查询和子查询方式)。 --子查询 select * from 学生表 WHERE 专业班级 = (SELECT 专业班级 FROM 学生表 WHERE 姓名 = '张志国'); --链接查询 select 学生表1.* from 学生表 as 学生表1,学生表 as 学生表2 where 学生表2.姓名='张志国' AND 学生表1.专业班级=学生表2.专业班级; --(2)查询比“计算机应用基础”学时多的课程信息(使用链接查询和子查询方式)。 --链接查询 SELECT 课程表1.* FROM 课程表 AS 课程表1,课程表 AS 课程表2 WHERE 课程表2.课程名 = '计算机应用基础' AND 课程表1.学时数>课程表2.学时数; --子查询 SELECT * FROM 课程表 WHERE 学时数>(SELECT 学时数 FROM 课程表 WHERE 课程名 = '计算机应用基础'); --(3)查询选修课程号为K002的学生的学号、姓名(使用链接查询、普通子查询、相关子查询、使用exists关键字的相关子查询)。 --链接查询1 select 学生表.学号,姓名 from 学生表 join (select 学号 from 学生做业表 join 课程表 on 课程表.课程号='K002'and 学生做业表.课程号='K002' ) as 新命名表 on 新命名表.学号=学生表.学号; --链接查询2 SELECT 学生表.学号,学生表.姓名 FROM 学生做业表,学生表 WHERE 学生做业表.课程号 = 'K002' AND 学生做业表.学号=学生表.学号; --普通子查询 select distinct 学生表.学号,学生表.姓名 from 学生做业表,学生表 where 学生表.学号 in ( select 学生表.学号 from 学生做业表 where 学生做业表.课程号='K002' and 学生做业表.学号=学生表.学号 ); --相关子查询 select distinct 学生表.学号,学生表.姓名 from 学生表,学生做业表 where 学生表.学号 in ( select 学生做业表.学号 from 学生做业表 where 学生做业表.课程号='K002' ); --使用exists关键字的相关子查询 select distinct 学生表.学号,学生表.姓名 from 学生做业表,学生表 where exists ( select * from 学生做业表 where 学生做业表.课程号='K002' and 学生做业表.学号=学生表.学号 ); --select * from 学生表 --select * from 课程表 --select * from 学生做业表 --(4)查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。 select distinct 学号,课程号,做业1成绩,做业2成绩,做业3成绩 from 学生做业表 where 学号 not in (select 学号 from 学生做业表 where 课程号='K001' OR 课程号='M001'); --2.使用数据操纵完成如下任务(每个任务都要给出SQL语句,而且列出查询结果)。 --(1)在学生表中添加一条学生记录,其中,学号为0593,姓名为张乐,性别为男,专业班级为电子05。 insert into 学生表(学号,姓名,性别,专业班级) values (0593,'张乐','男','电子05'); --(2)将全部课程的学分数变为原来的两倍。 update 课程表 SET 学分数=学分数*2; --(3)删除张乐的信息。 delete from 学生表 where 姓名='张乐'; --select * from 课程表; --select * from 学生表;
用数据库备份语句完成数据库的彻底备份,能用DTS工具对表的数据进行导出和导入,能用备份文件恢复数据库。安全
注意:为演示导入导出,备份恢复,特地建立一个aoe数据库(和以前的market数据库基本一致),用来演示ide
SQL语句代码函数
--先建立一个aoe数据库,用来演示导入导出,备份恢复 create database aoe; use aoe; create table Customers( --客户表 CustomerID int constraint pk_1 primary key, --客户编号为主键 Cname nvarchar(20) not null, --客户姓名 City nvarchar(20) --所在城市 ); create table Goods( --商品表 GoodID int constraint pk_2 primary key, --商品编号为主键 Gname nvarchar(20) not null, --商品名称 Price float not null, --单价 Provider nvarchar(20) not null,--供应商 Stocks int check(Stocks>=0), --库存量 Status nvarchar(20) --商品状态 ); create table Orders( --订单表 OrderID int constraint pk_3 primary key, --订单号 GoodID int constraint fk_1 foreign key references Goods(GoodID), --商品编号 CustomerID int constraint fk_2 foreign key references Customers(CustomerID),--客户编号 Quantity int check(Quantity>0),--定货数量 OrderSum float ,--定货金额 Date nvarchar(20) --日期 ); --插入两条数据 insert into Customers (CustomerID,Cname,City) values (2,'李勇','西安'); insert into Customers (CustomerID,Cname,City) values (1,'阿纲','西安'); --使用DTS 数据转换服务,导入导出数据(具体操做实验报告展现) /*可能遇到的问题: 一、没有数据源(重要): 解决方法:去(控制面板)搜索(ODBC 数据源)而后新添加由SQLSERVER驱动程序组成的数据源(记得将本身设置的名称记下) 而后再导入导出向导的帮助下能够继续进行操做 二、关于数据源使用Microsoft OLE DB Driver for SQL Server仍是Microsoft OLE DB Provider for SQL Server? 区别是前者是 ODBC 链接,后者是OLE DB链接 --这个设计到一些历史沿革问题:最初每一个厂商标准不同,后来出现同一标准ODBC,微软又推出本身的Sql Server的oledb, 为了照顾使用者,微软给了个odbc接口,用户使用后内部进行OLE DC转化,再转化执行,所以多一道转化,耗时些 三、我第一次导出数据时,因不熟练导出的数据不知道位置 后来发如今系统数据库master中 */ select * from Customers; --查看发现导入数据成功 --补充知识点:ODBC:通常指开放数据库链接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的。 --备份和恢复图形化界面操做方法(手动操做很简单,根据提示进行) --SQL语句方法展现 --一、备份: DECLARE @filename VARCHAR(255); --文件名 DECLARE @date DATETIME; --日期 DECLARE @path VARCHAR(255); --文件存放路径 SELECT @date = GETDATE(); --获取当前时间 SET @filename = CAST(DATEPART(yyyy, @date) AS VARCHAR) + '-' + CAST(DATEPART(mm, @date) AS VARCHAR) + '-' + CAST(DATEPART(dd, @date) AS VARCHAR) +'-' + CAST(DATEPART(hh,@date) as varchar)+CAST(DATEPART(mi,@date) as varchar)+'.bak'; --设置的文件名是用时间命名的(好处:下次备份名字不会重复) set @path='D:\SqlServer备份文件示例\'+@filename; backup database aoe to disk=@path; /*可能遇到的问题: 1.备份的磁盘显示操做系统权限不够5(重要) 解决办法1:去(计算机)右键点击选择(属性)选择(安全)修改用户的权限(这种办法比较耗时,且对磁盘不安全) 解决办法2:在盘中新建文件夹,查看属性中安全是否容许写入,若是容许,就用这个文件夹路径 */ --二、还原: drop database aoe; --先删除后还原 restore database aoe from disk='D:\SqlServer备份文件示例\2020-5-17-1416.bak' WITH REPLACE; /*可能遇到的问题:日志文件没有备份(重要) 解决方法:在还原语句后加WITH REPLACE(如56行所示) */