嘿嘿,今天是周二啦,昨天開始初步學習啦數據庫,那么今天我們就是詳細的學習啦數據庫的檢索啦,或許今天學習的比較多,但是我感覺還是可以的啦,最重要的是我可以接受的啦,這個是最值得慶幸的啦,現在每天學習完在這里總結成為了我的習慣,在總結中我會有更多新的發現,或許就像今天一位友友和我說的,認為我現在在培訓,哪里還有時間寫博客那,我想說的是,我的確把今天學習的知識都熟悉熟悉,然后自己按照老師講的操作一遍后才來寫的博客,也許還有人會問?操作一遍都可以沒事情啦嗎,今天學習的知識就掌握啦嗎,當然不是啦,我們現在還是在學基礎的階段啦,好多東東真的是只要學習一邊好好思考思考就掌握啦的,但是大多數提高我個人認為還是在我們基礎學習完啦開始項目學習時間提高的啦,嘿嘿,下面就總結一下我今天學習的知識啦。
一.數據檢索中幾個關鍵字的使用
--1.查詢姓名為林平安的所有信息 select 職工ID,職工號,倉庫號,姓名,性別,工資 from dbo.職工 where 姓名='林平安' --2.查詢除了林平安之外的所有人信息(不等號!=,<>的使用) select 職工ID,職工號,倉庫號,姓名,性別,工資 from dbo.職工 where 姓名!='林平安' select 職工ID,職工號,倉庫號,姓名,性別,工資 from dbo.職工 where 姓名<>'林平安' --3.查詢工資在1500以上的且性別為男的人的所有信息(and關鍵字) select 職工ID,職工號,倉庫號,姓名,性別,工資 from dbo.職工 where 工資>1500 and 性別='男' --4.查詢工資在1500以下而且工資大於1800,性別為男的人的所有信息(or或者and關鍵字) select 職工ID,職工號,倉庫號,姓名,性別,工資 from dbo.職工 where 工資>1500 or 工資>1800 and 性別='男' --5.查詢倉庫所在地不在上海和濟南的所有信息(not關鍵字) select 倉庫Id,倉庫號,城市,面積,創建時間 from dbo.倉庫 where not(城市='上海' or 城市='濟南') --6.查詢工資在1200到1800之間的職工的所有信息(between...and...與not between...and...的使用) select * from 職工 where 工資 between 1200 and 1800 select * from 職工 where 工資 not between 1200 and 1800 --7.查詢所有職工號為zg1,zg2,zg3,zg4的職工的所有信息(關鍵字in與 not in的使用) select * from 職工 where 職工號 in('zg1','zg2','zg3','zg4') select * from 職工 where 職工號 not in('zg1','zg2','zg3','zg4') --8.產訊倉庫所在的城市為空的倉庫的所有信息(is null與is not null的使用) select * from 倉庫 where 城市 is null select * from 倉庫 where 城市 is not null
在這里select是查詢的意思啦,使用方法就像我上面做的幾個例題那樣啦,嘿嘿,使用where檢索符合條件的數據,這就是我們說的查詢的使用啦
二.模糊查詢
--模糊查詢(關鍵字like的使用) --1.查詢名字中間帶"平"的所有職工的信息 select * from 職工 where 姓名 like '%平%' --格式:使用%這個占位符可以是不定長度的字符串,也可以是_,但是一條下划線只能代表一個占位符 --2.查詢名字中間除了帶"平"的所有職工的信息 select * from 職工 where 姓名 not like '%平%' --3.查詢工資在1000到2000的名字中間除了帶"平"的所有職工的信息 select * from 職工 where 姓名 not like '_平_' and 工資 between 1000 and 2000
通配符 %多字符匹配的通配符,它匹配任意次數(零或多個)出現的任意字符;
通配符_ 單字符匹配,它匹配單個出現的字符;
[] 只匹配一個字符 並且這個字符必須是[]范圍內的 [0-9] [a-z][a,b,c]
三.升序與降序以及關鍵字top和percent的使用
--升序與降序 --1.查詢職工表中按照工資升序排列所有職工的信息,在這里需要注意的是如果沒有寫升序還是降序就默認為升序 select * from 職工 order by 工資 ASC --升序 --2.查詢職工表中按照工資升序倉庫號降序排列所有職工的信息(DESC的使用) select * from 職工 order by 工資 ASC,倉庫號 DESC --降序 --3.查詢職工中所有職工的信息,按照隨機數的順序排序 select * from 職工 order by NEWID() --隨機排序 --4.查詢職工表中前十條職工的所有信息(top的使用) select top 10 * from 職工 --查詢 --5.查詢職工表中記錄的10%職工的所有信息(percent的使用) select top 10 percent * from 職工
ORDER BY子句位於SELECT語句的末尾,它允許指定按照一個列或者多個列進行排序,還可以指定排序方式是升序(從小到大排列,ASC)還是降序(從大到小排列,DESC),Order by 語句一般要放到所有語句的后面,就是先讓其他語句進行篩選,全部篩選完成后,最后排序一下。
四.SQL Server字符串方法的使用
--1.分別呈現職工的姓氏和名字,而且查詢職工的工資情況(SUBSTRING方法的使用) --substring(express,start,length) --<1>:字符串 --<2>:整數 制定字符串分割的開始位置 --<3>:length 分割的長度 select 姓名,SUBSTRING(姓名,1,1)as 姓氏, SUBSTRING(姓名,2,2) as 名字,工資 from 職工 --2.把倉庫號轉變為大寫形式(UPPER方法的使用) select 倉庫號,UPPER(倉庫號) from 倉庫 --3.把倉庫號轉變為小寫形式(LOWER方法的使用) select 倉庫號,LOWER(倉庫號) from 倉庫
五.時間查詢用字符串形式
--4.查詢倉庫號和倉庫創建時間,在這里把倉庫的創建時間格式改變為mm/dd/yy的格式,即年月日的格式 --<1>:yy/mm/dd 1 --<2>:yy.mm.dd 2 select 倉庫號,CONVERT(char(10),創建時間,111)as 創建時間 from 倉庫
下面是在網上查找的關於事件類型的格式在數據庫語句中的寫作格式:
六.聚合函數
--1.查詢職工的總人數(COUNT方法的使用) select COUNT(*) as 職工總人數 from 職工 select COUNT(*) 職工人數 from 職工 --2.查詢倉庫中不重復的倉庫號作為新倉庫號顯示出來(distinct方法標識尋找不重復的記錄信息) select count(distinct(倉庫號)) as 新倉庫號 from 倉庫 --3.查詢每月需給職工發放的工資的總和(SUM方法的使用) select SUM(工資) from 職工 --4.查詢每月職工發放的工資的平均值(AVG方法的使用) select AVG(工資)from 職工 --5.查詢每月職工發放的工資的最大值(MAX方法的使用) select MAX(工資)from 職工 --6.查詢每月職工發放的工資的最小值(MIN方法的使用) select MIN(工資)from 職工 --7.查詢每月職工發放的工資的最大值與最小值差值(SUM與MIN方法的使用) select MAX(工資)-MIN(工資) as 工資差 from 職工
七.分組
--1.查詢職工表中的倉庫號並按照倉庫號進行分組 select 倉庫號 from 職工 group by 倉庫號 --2.查詢每個倉庫男職工的最高工資,按照倉庫號顯示出來(group by 的使用,在這里是使用group by 進行分組) select 倉庫號,MAX(工資) as 最高工資 from 職工 where 性別 ='男' group by 倉庫號 --3.查詢每個倉庫男職工的平均工資高於1800的職工工資,按照倉庫號分組顯示出來(having關鍵字的使用) select 倉庫號,MAX(工資) as 最高工資 from 職工 where 性別 ='男' group by 倉庫號 having avg(工資)>1800 --在這里需要注意的是:where 與 group by關鍵字一起使用的時候, where過濾的是分組前的數據,having 表示分組之后的數據過濾 --兩個字段進行分組 --4.查詢每個倉庫男職工的平均工資高於1800的職工工資,按照倉庫號和姓名分組顯示出來(在這里需要注意的是按照兩個列分組,是先按照倉庫號分組,然后再分完組的基礎上面在按照性名分組) select 倉庫號,MAX(工資) as 最高工資,姓名 from 職工 where 性別='男' group by 倉庫號,姓名
--多表鏈接 select 倉庫.城市,職工.姓名,職工.倉庫號 from 倉庫,職工 where 職工.倉庫號=倉庫.倉庫號 --2.內鏈接 select 姓名,城市 from 倉庫 inner join 職工 on 倉庫.倉庫號=職工.倉庫號 --3.左鏈接 select 姓名,城市 from 倉庫 left join 職工 on 倉庫.倉庫號=職工.倉庫號 --4.右鏈接 select 姓名,城市 from 倉庫 right join 職工 on 倉庫.倉庫號=職工.倉庫號 --5.全鏈接 select 姓名,城市 from 倉庫 full join 職工 on 倉庫.倉庫號=職工.倉庫號
九.插入,修改和刪除記錄以及清空記錄的操作
--數據的插入 insert into 職工(職工號,倉庫號,姓名,性別,工資) values('zg101','wh1','樂樂','女', 1560)
--多條數據的插入
insert into 職工(職工號,倉庫號,姓名,性別,工資) values('zg101','wh2','靜靜','女',1560),('zg101','wh3','笑笑','男', 1560)
-->修改 update 倉庫 set 面積=888,創建時間='2014-12-09' where 倉庫號='wh2' -->刪除 delete from t1
-->刪除多條記錄
delete 倉庫 where 倉庫號 in(‘wh1’,‘wh2’)
--清空表中記錄 truncate table t1
十. ADO.net的簡單入門
在這里我們僅僅初步了解下ADO.net,首先我們讓VS與MSSQL Server 有關系,就如下操作所示:
1.首先我們打開VS,進入首頁,然后選擇左側的“服務器資源管理器”,然后選擇“服務器”下面的“數據連接”,選中數據連接點擊鼠標右鍵,選擇“添加連接”,可出現選擇“選擇數據源”,即如下圖:
2.接下來雙擊選擇數據源,即可進入添加連接,而添加連接這個頁面就和昨天寫的怎樣進入數據庫是一樣的,嘿嘿,所以嘛,就說呢就省略嘍,但是我們選擇完之后需要選擇右下角的“高級”,可呈現高技屬性然后我們關注的主要是Data Source,這就是我們需要連接數據庫用到的連接字符串啦,我們可以復制下來,方便一會啦使用啦 嘿嘿,如下圖所示:
我們創建一個Winform窗體,然后拖拉幾個控件,如下如所示:
實現其在文本框中填寫數據而在數據庫中也顯示插入的數據記錄情況,代碼如下:
private void button1_Click(object sender, EventArgs e) { //連接字符串 //1 打開程序到數據庫的連接 //2 執行數據庫sql 語句操作 //3 數據庫返回到程序執行結果 string ConnectString = "Data Source=.;Initial Catalog=ClassScore;Integrated Security=True"; SqlConnection conn = new SqlConnection(ConnectString); conn.Open(); string username = this.txtname.Text.Trim(); string pwd = this.txtpwd.Text.Trim(); string sex = this.txtsex.Text.Trim(); string like = this.txtlike.Text.Trim(); string sql = "insert into userinfo(username,pwd,sex,like) values('" + username + "','" + pwd + "','" + sex + "','" +like+ "')"; SqlCommand cmd = new SqlCommand(sql, conn); int i = cmd.ExecuteNonQuery(); //受影響的行數 if (i > 0) { MessageBox.Show("注冊成功"); } else { MessageBox.Show("注冊失敗"); } }
綜上,可以看出數據庫與VS產生了關系。Connection,用來連接數據庫,Command,用來執行SQL語句。
好啦,今天的總結就寫到這里啦,嘿嘿,感覺我們的學習會越來越有意思啦。