- 掌握無條件查詢的使用方法。
- 掌握條件查詢的使用方法。
- 掌握庫函數及彙總查詢的使用方法。
- 掌握分組查詢的使用方法。
- 掌握查詢的排序方法。
- 掌握鏈接查詢的使用方法。
- 查詢各位學生的學號、班級和姓名。
- 查詢課程的所有信息。
- 查詢數據庫中有哪些專業班級。
- 查詢學時數大於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行所示) */