




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第4章章 查詢與視圖查詢與視圖 4.1 SQLSQL語言簡介語言簡介 4.2 SELECT數據訪問基本方法數據訪問基本方法 4.3 條件檢索的條件檢索的SELECT語句語句4.4 從多張表檢索的從多張表檢索的SELECT語句語句4.5 UnionUnion操作和子查詢語句操作和子查詢語句 4.6 SQLSQL常用函數及其使用方法常用函數及其使用方法4.1 SQLSQL語言簡介語言簡介 1.SQL (Structured Query Language):結構化查詢語言,結構化查詢語言,是一種介于關系代數與關系運算之間的語言,主要功能包括是一種介于關系代數與關系運算之間的語言,主要功能包括查詢、
2、操縱、定義和控制等方面,是一個通用的、功能極強查詢、操縱、定義和控制等方面,是一個通用的、功能極強的關系數據庫語言。的關系數據庫語言。2.Transact-SQL的組成的組成3.1)數據定義語言)數據定義語言(DDL Data Definition Language):用來建立數據庫、數據庫對象。如用來建立數據庫、數據庫對象。如Create table、view等。等。4.2)數據操縱語言)數據操縱語言(DML Data Manipulation Language):用來操縱數據庫中的數據的命令。如用來操縱數據庫中的數據的命令。如select、insert、update、delete等。等。5
3、.3)數據控制語言)數據控制語言(DCL Data Control Language):用來用來控制數據庫組建的存取權限等。如控制數據庫組建的存取權限等。如Grant、Revoke等。等。6.4)流程控制語言)流程控制語言(FCL Flow Control Language):用來設用來設計應用程序的語句。如計應用程序的語句。如if、while、case等。等。7.5)其他語言要素)其他語言要素(ALE Additional language Element):包括變量、運算符、函數和注解等。包括變量、運算符、函數和注解等。4.2 SELECT數據查詢數據查詢 SELECT語句的基本格式如下:
4、語句的基本格式如下:SELECT select_listFROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC INTO new_table SELECT 子句子句SELECT ALL | DISTINCT TOP n PERCENT := * | table_name | view_name | table_alias .* | column_name | expression | AS
5、column_alias | column_alias = expression ,.n 4.2.1 表中列的使用方法表中列的使用方法 1. 選擇所有字段選擇所有字段SELECT * FROM 表名表名 如:如:use pubsselect * from authors(顯示顯示authors中的所有信息,全表查詢)中的所有信息,全表查詢) 2. 選擇部分字段選擇部分字段SELECT 列名列名1,列名列名2,列名列名n FROM 表名表名 如:如:use studentselect 學號學號,姓名姓名,性別性別 from 學生基本情況學生基本情況(顯示學生基本情況中學號顯示學生基本情況中學號,
6、姓名姓名,性別字段的信息)性別字段的信息)SELECT語句的使用方式語句的使用方式3. 為字段設置別名為字段設置別名SELECT 列名列名1 as 新名新名1,列名列名2 as 新名新名2,列名列名n as 新名新名n FROM 表名表名 (將選擇字段的標題按新的名稱顯示)將選擇字段的標題按新的名稱顯示)注意:新標題的名稱可以有下列方式:注意:新標題的名稱可以有下列方式:1)在列表達式后面給出列名在列表達式后面給出列名 select xh 學號學號2)用用“=”來連接列表達式來連接列表達式 select 學號學號 = xh3)新標題的名稱用單引號、雙引號括起來;新標題的名稱用單引號、雙引號括起
7、來;4)用用AS關鍵字來連接列表達式和指定的列名關鍵字來連接列表達式和指定的列名 SELECT語句語句例如:查詢例如:查詢authors中編號、姓名、電話、地址的信息,可中編號、姓名、電話、地址的信息,可以采用以下方式:以采用以下方式:1.select au_id 編號編號,au_lname 姓姓,au_fname 名名,phone 電電話話,address 地址地址 from authors2.select 編號編號=au_id ,姓姓=au_lname ,名名=au_fname ,電話電話=phone ,地址地址=address from authors3.select au_id 編號編
8、號,au_lname 姓姓,au_fname 名名,phone 電話電話,address 地址地址 from authors4.select au_id 編號編號,au_lname 姓姓,au_fname 名名,phone 電話電話,address 地址地址 from authors5.select au_id as 編號編號,au_lname as 姓姓,au_fname as 名名,phone as 電話電話,address as 地址地址 from authorsSELECT語句語句4. 在選擇列表中使用表達式在選擇列表中使用表達式在查詢數據時,可以通過運算操作來控制從在查詢數據時,可以
9、通過運算操作來控制從一個表中的返回值。一個表中的返回值。例如:查詢每個學生的總成績、平均成績。例如:查詢每個學生的總成績、平均成績。select 學號學號,姓名姓名,數學成績數學成績+語文成績語文成績+英語英語成績成績 as 總成績總成績,(數學成績數學成績+語文成績語文成績+英語成英語成績績)/3 as 平均成績平均成績 from 學生基本情況學生基本情況SELECT語句語句4. 消除字段數據的重復值消除字段數據的重復值在查詢數據時,可能會有許多重復的數據。在查詢數據時,可能會有許多重復的數據。SQL 提供的提供的Distinct 關鍵字,可以從關鍵字,可以從select 語句的結果集中消除
10、重復的數據。語句的結果集中消除重復的數據。例如:例如:1)查詢學生來至哪些院系的信息。查詢學生來至哪些院系的信息。select distinct 院系名稱院系名稱 from 學生基本情學生基本情況況2)查詢有哪些專業(yè)的學生。查詢有哪些專業(yè)的學生。select distinct 所學專業(yè)所學專業(yè) from 學生基本情學生基本情況況SELECT語句語句6. 限制記錄的行數限制記錄的行數在限制查詢記錄的行數時,可以使用下列方式:在限制查詢記錄的行數時,可以使用下列方式:1)使用使用top n : 返回前返回前n條記錄;條記錄;2)使用使用top n percent :返回前返回前n%條記錄條記錄;3
11、)使用使用set rowcount n:返回前返回前n條記錄。條記錄。n=0關閉關閉例如:例如:1)顯示前)顯示前5條記錄條記錄select top 5 * from 學生基本情況學生基本情況2)顯示顯示20%學生的信息學生的信息select top 20 percent * from 學生基本情況學生基本情況3)對所有)對所有select 語句,均顯示語句,均顯示5條記錄。條記錄。set rowcount 5select * from 學生基本情況學生基本情況4.2 條件子句的使用方法條件子句的使用方法1.條件子句條件子句最常用的條件子句是最常用的條件子句是where 和和having,用它
12、們來,用它們來指定一系列條件,執(zhí)行操作時只返回滿足條件的記錄。指定一系列條件,執(zhí)行操作時只返回滿足條件的記錄。Having 通常與通常與Group by一起使用,用來說明返回一起使用,用來說明返回分組的條件。分組的條件。例如:例如:1)顯示男生的相關信息)顯示男生的相關信息Select * from 學生基本情況學生基本情況 where 性別性別=男男2)顯示男生人數超過)顯示男生人數超過10人的院系信息人的院系信息select 院系名稱院系名稱,count(*) as 男生人數男生人數 from 學學生基本情況生基本情況 where 性別性別=男男 group by 院系名稱院系名稱 hav
13、ing count(*)104.2 SELECT語句的查詢條件語句的查詢條件2算術表達式、比較運算符算術表達式、比較運算符算術運算符有:算術運算符有:+ +、- -、* *、/ /、% %使用算術表達式的一般形式為:使用算術表達式的一般形式為:expression operator expression 比較運算符:比較運算符:是最為常見的一種條件限制方是最為常見的一種條件限制方式,用于測試兩個表達式是否相同,返回值為式,用于測試兩個表達式是否相同,返回值為True 或或False。WHERE子句中允許出現的比較運算符有:子句中允許出現的比較運算符有:=(等于)、(等于)、(大于)、(大于)、
14、=(對于等于)、(對于等于)、(小于)、(小于)、=(小于等于)、(小于等于)、(不等于)(不等于) 、!=(不等于)(不等于) 、!(不大于)、(不大于)、!= 80 and 數學成績數學成績=904.2 SELECT語句的查詢條件語句的查詢條件4.IN 列表搜索條件列表搜索條件IN 列表搜索條件用于返回與給定的列表中任意一列表搜索條件用于返回與給定的列表中任意一個值相匹配的記錄。格式為:個值相匹配的記錄。格式為:條件字段條件字段 NOT IN (列表選項列表選項) 例如:查詢數學成績?yōu)槔纾翰樵償祵W成績?yōu)?0、80、90的信息。的信息。select * from 學生基本情況學生基本情況
15、where 數學成績數學成績 in (70,80,90) In列表條件是列表條件是OR的簡化形式,上面語句等價于:的簡化形式,上面語句等價于:select * from 學生基本情況學生基本情況 where 數學成績數學成績 = 70 OR數學成績數學成績 = 80 OR 數學成績數學成績 = 904.2 SELECT語句的查詢條件語句的查詢條件6LIKE匹配模式匹配模式LIKE匹配模式是確定條件字符串是否與指定的模式匹匹配模式是確定條件字符串是否與指定的模式匹配。使用格式:配。使用格式:條件字段條件字段 NOT LIKE 匹配模式匹配模式SQL中的有效模式包括:中的有效模式包括:%:可匹配任
16、意類型和長度的字符串:可匹配任意類型和長度的字符串。Like Like 李李%_(下劃線):可匹配任何單個字符(下劃線):可匹配任何單個字符。Like 71005_Like 71005_ :指定范圍或集合中的任何單個字符。:指定范圍或集合中的任何單個字符。Like a-dLike a-d:不屬于指定范圍或集合的任何單個字符:不屬于指定范圍或集合的任何單個字符例如:例如:1)查詢所有姓)查詢所有姓“張張”的學生信息的學生信息select * from 學生基本情況學生基本情況 where 姓名姓名 like 張張%4.2 SELECT語句的查詢條件語句的查詢條件6NULL搜索條件搜索條件空值比較
17、的關鍵字是空值比較的關鍵字是 IS NULL或或 IS NOT NULL。其中。其中NULL表示字段的數據未知或不確表示字段的數據未知或不確定。格式為:定。格式為:表達式表達式 IS NULL 或或 表達式表達式IS NOT NULL例如:查詢缺少數學成績的學生信息。例如:查詢缺少數學成績的學生信息。select * from 學生基本情況學生基本情況 where 數學成數學成績績 is null查詢示例表查詢示例表練習討論練習討論1.按按10%的比例顯示本專業(yè)的男生信息;的比例顯示本專業(yè)的男生信息;2.查詢查詢“管理學院管理學院”專業(yè)分布情況;專業(yè)分布情況;3.查詢本專業(yè)學生來自哪些省份;查
18、詢本專業(yè)學生來自哪些省份;4.查詢英語不及格學生的信息,顯示學號、姓名、專業(yè)、英語查詢英語不及格學生的信息,顯示學號、姓名、專業(yè)、英語原成績、英語原成績、英語+10、英語、英語*1.1等字段信息;等字段信息;5.顯示管理學院學生中,不姓顯示管理學院學生中,不姓“劉劉”和和“張張”的學生信息;的學生信息;6.查詢查詢“數學數學”在在65-75之間,而之間,而“英語英語”不在不在70-90之間的之間的學生信息;學生信息;7.查詢查詢“管理學院、能源學院、機械學院、人文學院管理學院、能源學院、機械學院、人文學院”學號在學號在01-07之間的學生信息。之間的學生信息。8.將學生的將學生的“學號、姓名、
19、性別、身份證號學號、姓名、性別、身份證號” 作為一列、作為一列、“院系名稱、專業(yè)院系名稱、專業(yè)”作為一列,各數據之間用作為一列,各數據之間用“,”分隔;列分隔;列名分別為名分別為“基本信息基本信息”、“隸屬關系隸屬關系”進行顯示;進行顯示;9.查詢總成績查詢總成績、=、(select avg(數學成績數學成績) FROM 學生基本情況學生基本情況 )思考:思考:1)如何查詢本專業(yè)大學英語成績)如何查詢本專業(yè)大學英語成績=60且低且低于平均分的學生信息?于平均分的學生信息?2)統計管理學院各專業(yè)高等數學低于平均分的人數。統計管理學院各專業(yè)高等數學低于平均分的人數。3)查詢大學英語成績最高分的學生
20、信息。)查詢大學英語成績最高分的學生信息。Exists子查詢子查詢3)使用)使用Exists的子查詢的子查詢使用使用Exists(或(或Not Exists)引入子查詢時,就相)引入子查詢時,就相當于進行一次存在測試。當于進行一次存在測試。外部查詢的外部查詢的Where子句測試子句測試子查詢返回的行是否存在。子查詢返回的行是否存在。子查詢實際上不產生任何子查詢實際上不產生任何數據,它只返回數據,它只返回True或或False。例如:查詢成績表中女生的學習成績。例如:查詢成績表中女生的學習成績。SELECT * FROM 成績表成績表 Where exists(select * FROM 學生基
21、本情況學生基本情況 where 學號學號=成績表成績表.學號學號 and 性別性別=女女)思考:思考:1)如何查詢管理學院的學生成績?)如何查詢管理學院的學生成績?2)查詢本專業(yè)高等數學不及格的學生信息?)查詢本專業(yè)高等數學不及格的學生信息?練習討論練習討論數據表名:數據表名:JBQK數據表名:數據表名:CJB練習討論練習討論n根據根據JBQK表、表、CJB表完成下列查詢:表完成下列查詢:n1.查詢高等數學成績高于平均成績的學生信查詢高等數學成績高于平均成績的學生信息,顯示學號、姓名、專業(yè)、高等數學等;息,顯示學號、姓名、專業(yè)、高等數學等;n2.查詢信息管理專業(yè)男生的高等數學成績、查詢信息管理
22、專業(yè)男生的高等數學成績、電子商務專業(yè)女生的高等數學成績、能源學院電子商務專業(yè)女生的高等數學成績、能源學院所有學生的數學成績,顯示顯示學號、姓名、所有學生的數學成績,顯示顯示學號、姓名、性別、院系、專業(yè)、高等數學等,按院系、專性別、院系、專業(yè)、高等數學等,按院系、專業(yè)排序;業(yè)排序;n3.查詢與查詢與“劉文東劉文東”同專業(yè)的學生信息,顯同專業(yè)的學生信息,顯示顯示學號、姓名、專業(yè)、各門課程成績。示顯示學號、姓名、專業(yè)、各門課程成績。基于查詢的數據表基于查詢的數據表1 基于查詢生成新的數據表基于查詢生成新的數據表如果需要將查詢結果保存下來,使用如果需要將查詢結果保存下來,使用INTO子句可以生成一個新
23、表并將結果保存在這個新子句可以生成一個新表并將結果保存在這個新的數據表中。的數據表中。命令基本格式:命令基本格式:Select 選擇字段表選擇字段表 Into 新的表名新的表名 FROM 已有的表已有的表 where 條件條件例如:例如:1)將)將“學生基本情況學生基本情況”表復制成表復制成jbqkSelect * Into jbqk from 學生基本情況學生基本情況2)統計各個院系英語成績的平均分、最高分、最低分、考試統計各個院系英語成績的平均分、最高分、最低分、考試人數,結果放在人數,結果放在Eng_tj表。表。SELECT 學生基本情況學生基本情況.院系名稱院系名稱, AVG(成績表成
24、績表.大學英語大學英語) AS 英語平均英語平均, MAX(成績表成績表.大學英語大學英語) AS 英語最高英語最高, MIN(成成績表績表.大學英語大學英語) AS 英語最低英語最低, COUNT(*) AS 考試人數考試人數INTO Eng_tjFROM 學生基本情況學生基本情況 INNER JOIN 成績表成績表 ON 學生基本情況學生基本情況.學號學號 = 成績表成績表.學號學號GROUP BY 學生基本情況學生基本情況.院系名稱院系名稱思考:思考:1)將管理學院學習成績前)將管理學院學習成績前10名學生的信息保存到數名學生的信息保存到數據表據表gl_10中,只保存學號、姓名、專業(yè)、各
25、門課程成績。中,只保存學號、姓名、專業(yè)、各門課程成績。2)如何將本專業(yè)不及格學生的信息保存在數據表)如何將本專業(yè)不及格學生的信息保存在數據表bjg_xs? ,保存學號、姓名、專業(yè)、各門課程成績。保存學號、姓名、專業(yè)、各門課程成績。3)將)將jbqk表的結構復制到表的結構復制到jb_jg中。中。將查詢結果插入數據表將查詢結果插入數據表2 向已有表插入數據向已有表插入數據用用Insert IntoSelect語句,可以將一個子語句,可以將一個子查詢的結果添加到數據表中。查詢的結果添加到數據表中。命令格式:命令格式:Insert Into 數據表數據表 Select 查詢查詢例如:創(chuàng)建臨時數據表例如
26、:創(chuàng)建臨時數據表stu_1,存放從基本,存放從基本情況表、成績表中查詢出來的學號、姓名、性情況表、成績表中查詢出來的學號、姓名、性別、年齡、總成績、平均成績等信息。別、年齡、總成績、平均成績等信息。create table #stu_1(學號學號 char(8),姓名姓名 nchar(4),性別性別 nchar(1),年齡年齡 tinyint,總成績總成績 int,平均成績平均成績 decimal(5,2)goinsert into #stu_1 select jbqk.學號學號,jbqk.姓名姓名,jbqk.性別性別,year(getdate()-year(出生日期出生日期),cjb.高等數
27、學高等數學+cjb.大學英語大學英語+cjb.計算機基礎計算機基礎+cjb.管理學管理學,(cjb.高等數學高等數學+cjb.大學英語大學英語+cjb.計算機基礎計算機基礎+cjb.管理學管理學)/4from 學生基本情況學生基本情況 jbqk inner join 成績表成績表 cjb on jbqk.學號學號=cjb.學號學號goselect * from #stu_1思考:如何將信息管理、電子商務專業(yè)學習成績前思考:如何將信息管理、電子商務專業(yè)學習成績前5名的學名的學生信息放到與基本情況表結構類似的數據表生信息放到與基本情況表結構類似的數據表inf_ec中?中?子查詢修改記錄子查詢修改記
28、錄3 用子查詢修改記錄用子查詢修改記錄Update 語句中,語句中,Set子句、子句、Where 子句均可以使用子查詢。子句均可以使用子查詢。例如:在基本情況表中添加字段例如:在基本情況表中添加字段“第第1學期總分學期總分”、“第第1學期平均學期平均”,并修改,并修改這些字段的值。這些字段的值。alter table 學生基本情況學生基本情況 add 第第1學期總分學期總分 smallint,第第1學期平均學期平均 decimal(5,2)goupdate 學生基本情況學生基本情況 set 第第1學期總分學期總分=(select cjb.高等數學高等數學+cjb.大學英語大學英語+cjb.計算
29、機基礎計算機基礎+cjb.管理學管理學 from 成績表成績表 cjb where 學生基本情況學生基本情況.學號學號=cjb.學號學號), 第第1學期平均學期平均=(select (cjb.高等數學高等數學+cjb.大學英語大學英語+cjb.計算機基礎計算機基礎+cjb.管理學管理學)/4 from 成績表成績表 cjb where 學生基本情況學生基本情況.學號學號=cjb.學號學號)goselect * from 學生基本情況學生基本情況思考:思考:1)對本專業(yè)高等數學不及格的學生,將數學成績提高)對本專業(yè)高等數學不及格的學生,將數學成績提高15%;2)將不是本專業(yè)學生的各門課程成績清空
30、;)將不是本專業(yè)學生的各門課程成績清空;子查詢刪除記錄子查詢刪除記錄4 用子查詢刪除記錄用子查詢刪除記錄Delete 命令的命令的where 子句可以使用子查詢來從數據表中刪子句可以使用子查詢來從數據表中刪除相關記錄。除相關記錄。例如:從基本情況表、成績表中刪除例如:從基本情況表、成績表中刪除“男生男生”的相關記錄。的相關記錄。delete from 成績表成績表 where exists(select * from 學生基學生基本情況本情況 jbqk where 成績表成績表.學號學號=jbqk.學號學號 and jbqk.性別性別=男男)godelete from 學生基本情況學生基本情況
31、 where 性別性別=男男goselect * from 學生基本情況學生基本情況select * from 成績表成績表思考:將本專業(yè)學生的成績備份到思考:將本專業(yè)學生的成績備份到dele_bak,并從,并從cjb中刪中刪除;同時在除;同時在jbqk表中添加字段表中添加字段Dele_flag 、dele_table ,并,并給給dele_flag賦值賦值1、給、給dele_table賦值備份表的名稱。賦值備份表的名稱。SQL查詢的增強功能查詢的增強功能1.COMPUTE子句子句2.使用使用COMPUTE和和COMPUTE BY子句既能瀏覽詳子句既能瀏覽詳細數據又可看到統計的結果。細數據又可
32、看到統計的結果。3.主要功能:主要功能:4.1)生成合計作為附加的匯總放在結果集的最后。)生成合計作為附加的匯總放在結果集的最后。5.2)當與)當與BY一起使用時,則在結果集生成控制中斷一起使用時,則在結果集生成控制中斷與小計。與小計。6.3)同一查詢內可同時用)同一查詢內可同時用COMPUTE和和COMPUTE BY子句。子句。7.4)如果使用)如果使用COMPUTE BY,則必須使用,則必須使用ORDER BY。COMPUTE子句子句其語法形式為:其語法形式為:COMPUTE 聚合函數聚合函數(column_name),n BY column_name ,n 注意:注意:nCOMPUTE
33、BY 子句不能與子句不能與SELECT INTO子句一起使用。子句一起使用。nCOMPUTE子句中的列必須出現在子句中的列必須出現在SELECT子句的列表中。子句的列表中。nCOMPUTE BY表示按指定的列進行明細匯總,使用表示按指定的列進行明細匯總,使用BY關鍵字時必須同時使用關鍵字時必須同時使用ORDER BY子句,并且子句,并且COMPUTE BY后出現的列必須具有與后出現的列必須具有與ORDER BY后出現的后出現的列相同的順序,且不能跳過其中的列。列相同的順序,且不能跳過其中的列。例如:如果例如:如果ORDER BY子句按照如下順序指定排序列:子句按照如下順序指定排序列:ORDER
34、 BY a,b,c則則COMPUTE BY后的列表只能是下面任一種形式:后的列表只能是下面任一種形式:BY a,b,cBY a,bBY aCOMPUTE子句子句應用舉例:應用舉例:1)對管理學院學生的學號、姓名、高等數學、)對管理學院學生的學號、姓名、高等數學、大學英語、數據庫列出明細,并統計高等數學大學英語、數據庫列出明細,并統計高等數學平均分、最高分及人數;平均分、最高分及人數;2)對管理學院學生按專業(yè)列出學號、姓名、)對管理學院學生按專業(yè)列出學號、姓名、專業(yè)、高等數學的明細,并統計高等數學的平專業(yè)、高等數學的明細,并統計高等數學的平均、最高、最低成績;均、最高、最低成績;3)按專業(yè)列出高
35、等數學的明細,并統計各專)按專業(yè)列出高等數學的明細,并統計各專業(yè)的平均、最高、最低成績;然后計算全校的業(yè)的平均、最高、最低成績;然后計算全校的平均、最高、最低成績。平均、最高、最低成績。WITH ROLLUP在在Group By子句后使用子句后使用with Rollup,將對,將對Group By指定的各列產生匯總行。指定的各列產生匯總行。例如:例如:1)統計各專業(yè)人數及總人數。)統計各專業(yè)人數及總人數。2)按專業(yè)統計男、女生人數,并統計專業(yè))按專業(yè)統計男、女生人數,并統計專業(yè)總人數及學生的總人數??側藬导皩W生的總人數。3)按學院、專業(yè)統計數據庫的平均、最高)按學院、專業(yè)統計數據庫的平均、最高
36、分,同時統計各個學院以及全校的平均、最高分,同時統計各個學院以及全校的平均、最高成績。成績。WITH Cube在在Group By子句后使用子句后使用with Cube,將對,將對Group By指定的各列的所有可能組合均產生指定的各列的所有可能組合均產生匯總行。匯總行。例如:按專業(yè)統計男、女生人數,并統計專例如:按專業(yè)統計男、女生人數,并統計專業(yè)總人數及男、女生總人數、全部學生的總人業(yè)總人數及男、女生總人數、全部學生的總人數。數。Select 所學專業(yè)所學專業(yè),性別性別,count(*) as 人數人數From jbqkGroup by 所學專業(yè)所學專業(yè),性別性別 with cube常用字符
37、串函數常用字符串函數1.ASCII(C):返回字符串最左端字符的返回字符串最左端字符的ASCII值;值;例如:顯示字符例如:顯示字符A、a、0的的ASCII值值select ascii(A) as A,ascii(a) as a,ascii(0) as zero2.CHAR(N):返回返回n(0-255)對應的字符;對應的字符;例如:顯示十進制數例如:顯示十進制數65、97、48、32對應的字符對應的字符select char(65) ,char(97),char(48),char(32)3.STR(FLOAT,LEN,DECIMAL):將數轉換成字將數轉換成字符串;符串;FLOAT:表示要轉
38、換的數值;:表示要轉換的數值;LEN:轉換后的字符串的長度;轉換后的字符串的長度;DECIMAL:轉換后的字符串中包含的小數位數。轉換后的字符串中包含的小數位數。常用字符串函數常用字符串函數說明:說明:1)若沒有給出長度,則對整數部分按默認長度)若沒有給出長度,則對整數部分按默認長度10位進行轉換;位進行轉換;2)若給出的長度太短,則先滿足整數部分,然后)若給出的長度太短,則先滿足整數部分,然后是小數部分;是小數部分;3)若給出的長度不能滿足整數部分的長度,則顯)若給出的長度不能滿足整數部分的長度,則顯示示n個個*。例如:例如:select str(123.45), str(123.45,6,
39、2), str(123.45,5,2), str(123.45,3,2), str(123.45,2,2)思考:長度不夠時,是否進行四舍五入?思考:長度不夠時,是否進行四舍五入?常用字符串函數常用字符串函數4.SUBSTRING(C,START,LENGTH):截取子串;截取子串;其中:其中:C待截取的字符串;待截取的字符串; START截取字符的起始位置;截取字符的起始位置; LENGTH截取字符的長度。截取字符的長度。例如:例如:SELECT SUBSTRING(12345ABCDEF,1,2), SUBSTRING(12345ABCDEF,5,5), SUBSTRING(12345ABC
40、DEF,6,5), SUBSTRING(12345ABCDEF,10,5), SUBSTRING(12345ABCDEF,12,2)思考:思考:1)位置、長度參數是否可以省略?)位置、長度參數是否可以省略?2)顯示基本情況表中,學號)顯示基本情況表中,學號01開頭的學生信息開頭的學生信息3)根據身份證號,顯示)根據身份證號,顯示1988年出生的學生信息年出生的學生信息常用字符串函數常用字符串函數4.LEFT(C,LEN) :從左邊開始截取給定長度從左邊開始截取給定長度字符串;字符串;6.RIGHT(C,LEN) :從右邊開始截取給定長從右邊開始截取給定長度字符串;度字符串;7.LEN(C) :
41、返回字符串的字符個數(不包括返回字符串的字符個數(不包括尾部空格)尾部空格)8.LTRIM(C) :刪除字符串左端空格;刪除字符串左端空格;9.RTRIM(C):刪除字符串右端空格;刪除字符串右端空格;10. CAST(表達式表達式 as 類型類型):將表達式轉換為將表達式轉換為SQL的某種類型。的某種類型。字符函數應用舉例字符函數應用舉例1 顯示姓名最后一個字為顯示姓名最后一個字為“強強”的學生;的學生;select * from 學生基本情況學生基本情況 where 姓名姓名 like %強強%goselect * from 學生基本情況學生基本情況 where right(rtrim(姓
42、名姓名),1)=強強2 顯示身份證號帶顯示身份證號帶X的學生信息;的學生信息;select * from 學生基本情況學生基本情況 where 身份證號身份證號 like %X%goselect * from 學生基本情況學生基本情況 where right(rtrim(upper(身份證身份證號號),1)=X3 顯示姓名為兩個字的學生信息;顯示姓名為兩個字的學生信息;select * from 學生基本情況學生基本情況 where len(rtrim(姓名姓名)=24 將學號、姓名、數學成績組成一個顯示內容;將學號、姓名、數學成績組成一個顯示內容;select 學號學號+ +姓名姓名+str
43、(數學成績數學成績,5) as 組合顯示組合顯示 from 學生基本學生基本情況情況 思考:思考:1 如何查詢姓名僅一個或兩個字的學生信息?如何查詢姓名僅一個或兩個字的學生信息? 2 如何將學號、姓名、平均成績進行組合顯示?如何將學號、姓名、平均成績進行組合顯示? 3 如何顯示如何顯示“管院管院”學生的信息?學生的信息?字符函數應用舉例字符函數應用舉例寫出下列語句的結果:寫出下列語句的結果:1. select ascii(123)+ascii(char(65)+ len(str(100+23)+ len(ltrim(str(12*10+23+456/1000) as len12. select
44、 ascii(str(456)+ascii(ltrim(str(456)+ascii(rtrim(str(456) as len23. select ascii(str(456,3)+len(left(管理管理,2)+len(right(學院學院,2)+len(rtrim(str(789.123) as len34. declare s1 char(100),s2 char(50)set s1=西安科技大學管理學院西安科技大學管理學院set s2=信息管理與信息系統信息管理與信息系統select substring(s1,1,1)+substring(s1,3,1)+ substring(s1
45、,5,1)+substring(s2,1,1)+substring(s2,3,1)+char(48)+char(49)go 常用日期時間函數常用日期時間函數Getdate():返回當前系統的日期和時間;返回當前系統的日期和時間;Year(date):返回指定日期的年份;返回指定日期的年份;Month(date):返回指定日期的月份;返回指定日期的月份;Day(date):返回指定日期的某天;返回指定日期的某天;Dateadd(datepart,n,date):在指定日期上加上一在指定日期上加上一段時間,返回新的日期時間;段時間,返回新的日期時間;其中:其中:Datepart:yyyy;mm;d
46、d;ww/wk;hh;mi;ss;Datediff(datepart,startdate,enddate):返回兩返回兩個日期的日期和時間的差值。個日期的日期和時間的差值。Datename(datepart,date):返回指定日期部分的返回指定日期部分的字符串。字符串。日期時間函數舉例日期時間函數舉例1)select dateadd(yyyy,2,getdate()2)select 學號學號,姓名姓名,出生日期出生日期, datediff(yy,出生日期出生日期,getdate() as 年齡年齡 from 學生基本情況學生基本情況where month(getdate()=month(出生
47、出生日期日期)3) select 2年后的今天年后的今天是是+datename(dw,dateadd(yyyy,2,getdate() as 星期星期日期時間函數舉例日期時間函數舉例declare d datetime -聲明局部變量聲明局部變量set d=getdate() -將系統日期時間賦給變量將系統日期時間賦給變量select 今天是今天是+datename(yyyy,d)+年年+ datename(mm,d)+月月+ datename(dd,d)+日日+ datename(hh,d)+時時+ datename(mi,d)+分分+ datename(ss,d)+秒秒+ datename
48、(dw,d)日期時間函數舉例日期時間函數舉例說明下列語句的作用:說明下列語句的作用:1. select top 5 姓名姓名,datediff(yy,出生日出生日期期,getdate()as 年齡年齡 from 學生基本情況學生基本情況 order by 2 desc2. select 學號學號,姓名姓名,出生日期出生日期, year(getdate()-year(出生日期出生日期) as age from 學生基本情況學生基本情況 where year(出生日期出生日期) 1982 order by age desc3. select 學號學號,姓名姓名,出生日期出生日期 from 學生基學生基本情況本情況 where year(出生日期出生日期) between 1982 and 1985 order by 出生日期出生日期日期時間函數舉例日期時間函數舉例思考:思考:1 如何顯示下一個月過生日的學生信息?如何顯示下一個月過生日的學生信息?2 如何顯示如何顯示2008年年齡正好年年齡正好25歲的學生?歲的學生
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 低碳環(huán)保新能源ESG債券發(fā)行法律風險評估合同
- 區(qū)塊鏈挖礦網絡交換機租賃與數據恢復合同
- 2025年中國恒溫離子直發(fā)器市場調查研究報告
- 2025年中國家用電吹風市場調查研究報告
- 2025年中國套式波刃立銑刀市場調查研究報告
- 2025年中國雙面皮帶線市場調查研究報告
- 2025年中國印染ERP系統軟件市場調查研究報告
- 2025年中國化肥專用管市場調查研究報告
- 2025年中國全棉彈力府綢市場調查研究報告
- 2025年中國低泡濕潤劑市場調查研究報告
- 2024年度電子煙產品OEM定制與合作協議
- 礦山植被恢復治理方案
- 年度污水處理托管服務 投標方案(技術標 )
- 2025新外研社版英語七年級下單詞表
- 急救救援知識培訓
- 牧場物語-礦石鎮(zhèn)的伙伴們-完全攻略
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認證機構要求》中文版(機翻)
- 合規(guī)培訓計劃方案
- 大氣簡約南昌大學校園文化介紹宣傳
- 部編人教版六年級下冊語文全冊課內閱讀訓練(含答案)
- 2024屆高考地理一輪復習 課件第28講 工業(yè)區(qū)位及其變化
評論
0/150
提交評論