真不簡單!!
一:使用select語句進行查詢
語法:
SELECT <列名>
FROM <表名>
[WHERE <查詢條件表達式>]
[ORDER BY <排序的列名>[ASC或DESC]]
eg1:
SELECT SCode,SName,SAddress
FROM Students
WHERE SSEX = 0
ORDER BY SCode
二:查詢所有列和行:
eg:
SELECT * FROM Course
SELECT * FROM Students
三:查詢部分列
eg:
SELECT SName, SAddress FROM Students
SELECT SName ,SGrade FROM Students
WHERE SAddress = '北京'
四:列別名
eg:
SELECT SCode AS 學生編號,SName AS 學生姓名,
SAddress AS 學生地址
FROM Students
WHERE SAddress <> '河南新鄉'
SELECT FirstName + '.' + LastName AS 姓名
FROM Employees
注意:
1. + 連接的數據類型必須兼容
2. 如果 + 連接字符型數據,結果為字符串數據的連接
3. 如果 + 連接數值型數據,結果為數值的和
五:使用等號命名列
eg:
SELECT 姓名 = FirstName+'.'+LastName
FROM Employees
六:查詢空行
eg:
SELECT SName FROM Students WHERE SEmail IS NULL
七:使用常量列
eg:
SELECT 姓名=SName,地址= SAddress , '北京新興橋' AS 學校名稱
FROM Students
八:限制固定行數
eg:
SELECT TOP 5 SName, SAddress
FROM Students WHERE SSex = 0
九:按百分數返回行
SELECT TOP 20 PERCENT SName, SAddress
FROM Students WHERE SSex = 0
十:相關練習:









SELECT StudentID,Score FROM Score ORDER BY Score
SELECT StudentID AS 學生編號,(Score*0.9+5) AS 綜合成績
FROM Score
WHERE (Score*0.9+5)>60
ORDER BY Score
十二:降序排列
eg:
SELECT StudentID,Score FROM Score ORDER BY Score DESC
十三:按多列排序
eg:
SELECT StudentID AS 學生編號, CourseID AS 課程ID, Score AS 成績
FROM Score
WHERE Score > 60
ORDER BY CourseID, Score
常見問題:
.SQL語句不區分大小寫
.字符串和日期類型都需要單引號
.起表名的時候,千萬不要起得太好,例如不要使用User作為表名。
如果表名和關鍵字重復了,我們可以通過[]取消轉義。
select * from [User]
注意:新建查詢窗口中的中文空格。
select * from Message
十四:常用的幾類函數:









函數名稱:CharIndex('str1','str2',index)//位置從開始
--參數含義:
--第一個參數:要查詢的字符串
--第二個參數:在哪個字符串中搜索
--第三個參數:從str2的第幾個字母開始搜索
eg:
select charindex('好好學','S1是S2的基礎,所以大家好好學',1)
SELECT CHARINDEX('JBNS','My Jbns Course')
select charindex('微冷的雨','好人啊微冷的雨',4)
select charindex('媽媽說','我們要為國家爭光,媽媽說,是人就要有理想',11)
len():獲取小括號中字符串的長度,空格也算一個字符長度
eg:
select len('明天咱們還上課,希望大家回去好好休息')
select len('大家都是好孩子 ')
注意點:如果內容以多個空格結尾,那么結尾的多個空格,是不計算長度的
upper():將括號中出現的英文全部轉換成大寫
select upper('i can speak english.你能嗎?')
select lower('I HAVE A DREAM')
select upper('i have a dream,俺有一個夢想')
LTrim():清除括號中內容左邊的空格(left:right)
select ltrim(' 生活不是林黛玉, '
select rtrim(' 生活不是林黛玉, ')
--既想移除左邊空格,也想移除右邊空格
select rtrim(ltrim(' 生活, '))
select ltrim(rtrim(' 你還好吧! '))
select len(rtrim('今年奇怪了,北京沒下雪, '))
substring('字符串',截取的位置,截取的長度)
select substring('好吧,我愛自己偉大的祖國,真的',6,1)
right():從字符串右邊返回指定類型的字符
select left('大家今天好像都沒有交日記本,我去',3)
select right('大家今天好像都沒有交日記本,我去',2)
replace('str1','要替換的字符','目標字符'):
select replace('周傑倫,殘疾人,雖然手不殘疾,但是X殘疾','殘疾','好')
stuff('字符串',刪除的起始位置,刪除的長度,'插入的字符串')
select stuff('我愛你中國,我愛你故鄉',4,2,'北京')
select stuff('我們都要有理想,為了理想我們熬夜,當然以犧體為代價',6,2,'自信')

--01.getdate():獲取當前日期和時間
select getdate()
--1000ms是s
--02.dateadd(按年/月/日添加,增量,時間)
select dateadd(yy,100,'2014-8-6')
select dateadd(year,-20,getdate())
--03.datediff(按年/月/日求差,小時間,大時間)
select datediff(year,'1998-01-01',getdate())
--04.datename:獲取某個日期是星期幾
select datename(dw,'2014-08-06')
--05.datepart(mm,日期):獲取指定日期對應的年/月/日部分
select datepart(yy,getdate())
--Year yy
--Month mm
--Day dd
--push(推) pull(拉)
--通過該方式也可以獲取當天是周幾
select datepart(dw,getdate())

--01.rand():產生一個到之間的隨機數
select right(rand(),4)
Select rand()
--如果產生四位數(-9999)
--02.abs:取絕對值
select abs(-10)
select abs(10)
--非負數
--03.ceiling:天花板,你要看天花板,抬頭,向上取整
select ceiling(1.999991)
--04.floor:向下取整
select floor(1.999999)
select ceiling(1.000000000000001)
select floor(2.999999999999999)
--04.power(5,2)求冪值
select power(4,4)
select 1*2/3+5-56+100-5/100
select power(2,3)
--05.round:將一個數字四舍五入到指定精度
select round(42.564,1)
--06.sign:如果括號中寫的是一個正數,返回,如果是負數,返回-1
--如果是返回
select sign(20)
select sign(0)
--07.sqrt()開平方
select sqrt(9)


卡里面的字母“O和數字0”、“字母i和數字1”,用戶反映說看不清楚,公司決定,把存儲在數據庫中的密碼中所有的“O”都改成“0”,把所有的“i”都改成“1”;




UPDATE Card SET PassWord = REPLACE(PassWord ,'O','0')
UPDATE Card SET PassWord = REPLACE(PassWord ,'i','1')
2:在數據庫表中有以下字符數據,如:
13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2

13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2








后半部分的數字:


SELECT ListNumber
FROM SellRecord
ORDER BY
CONVERT(int, LEFT(ListNumber, CHARINDEX('-', ListNumber)-1)),
CONVERT(int, STUFF(ListNumber,1, CHARINDEX('-', ListNumber), ''))
3:







新生入學,為其分配一個Email地址
分析:

DATEDIFF(DD,BornDate, GETDATE())>=365*20


RIGHT(Email, LEN(Email) - CHARINDEX('@',Email) )


CONVERT(VARCHAR(4), DATEPART(YYYY,GETDATE()))

獲取4位隨機數
RIGHT(RAND(),4)
世上無難事,只怕有心人。