萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mssql數據庫 >> SQL語句簡單語法

SQL語句簡單語法

   SQL語句基本的四大元素(增,刪,改,查) 插入數據

  語法:INSERT INTO 表名(字段1,字段2,...)VALUES(值1,值2,...)

  其中,INTO可選.

  例如:將姓名‘張三’學號‘s2t14’年齡22插入到stuInfo表中的stuName,stuNo,stuAge這三個字段中。

  INSERT INTO stuInfo (stuName,stuNo,stuAge) VALUES ('張三','s2t14',22)

  插入多行數據

  1.通過INSERT SELECT語句將現有表中的數據添加到新表

  語法:INSERT INTO 新表名(字段1,字段2,...)SELECT 字段1,字段2,... FROM 原表名

  例如:INSERT INTO TongXunLu(‘Name’,‘Address’,‘Email’)SELECT SName,SAddress,SEmail FROM Students

  2.通過SELECT INTO語句將現有表中的數據添加到新表

  語法:SELECT 表名.字段1,表名.字段2,... INTO 新表名 FROM 原表名

  例如:SELECT Students.SName,Students.SAddress,Students.SMail INTO TongXunLu FROM Students

  因為標識列的數據是不允許指定的,因此我們可以創建一個新的標識列

  語法:SELECT IDENTITY (數據類型,標識種子,標識增長量) AS 列名 INTO 新表名 FROM 原表名

  例如:SELECT Students.SName,Students.SAddress,Students.SMail,IDENTITY(int,1,1)AS StudentsID INTO TongXunLu FROM Students

  3.通過UNION關鍵字合並數據進行插入

  UNION語句用於將兩個不同數據或查詢結果組合的一個新的結果集,當然,不同的數據或查詢結果,也要求數據個數、順序、數據類型都一致,因此,當向表中重復插入多次數據的時候,可以使用SELECCT...UNION來簡化操作。

  例如:INSERT Students(SName,SGrade,SSex)

  SELECT '女生1',7,0 UNION

  SELECT '女生2',7,0 UNION

  SELECT '女生3',7,0 UNION

  SELECT '女生4',7,0 UNION

  SELECT '女生5',7,0 UNION

  SELECT '男生1',7,1 UNION

  SELECT '男生2',7,1 UNION

  SELECT '男生3',7,1 UNION

  SELECT '男生4',7,1 刪除數據

  語法:DELETE FROM 表名 WHERE (條件)

  例如:刪除stuInfo表中年齡小於20歲的學生。

  DELETE FROM stuInfo WHERE stuAge <20

  TRUNCATE TABLE用來刪除表中所有行的命令,功能上它類似於沒有WHERE子句的DELETE語句。

  例如:要刪除學員信息表中的所有記錄行,可以使用。

  TRUNCATE TABLE Students

  提示:TRUNCATE TABLE 刪除表中的所有行,但是表的結構、列、約束、索引等不會被改動。TRUNCATE TABLE不能用於有外鍵約束引用的表,這種情況下,需要使用DELETE語句。 修改數據

  語法:UPDATE 表名 SET 字段1=值1,字段2=值2,... WHERE (條件)

  例如:將stuInfo表中姓名是張三的學生年齡修改為25歲。

  UPDATE stuInfo SEF stuAge = 25 WHERE stuName = '張三'

  還可以通過表達式來更新數據。

  例如:需要在成績表中更新成績,所有低於85分的都在原來的基礎上加5分,更新的SQL語句如下。

  UPDATE Scores SET Scores =Scores + 5 WHERE Scores <= 85 查詢數據

  1.查詢所有的數據行和列

  把表中所有數據行和列到列舉出來需要使用“*”通配符來表示所有的列。

  例如:查詢Students表中的所有數據。

  SELECT * FROM Students

  2.條件查詢

  語法:SELECT 字段1,字段2,...FROM 表名

  例如:查詢stuInfo表中所有學生的姓名(stuName)和年齡(stuAge)兩個字段。

  SELECT stuName,stuAge FROM stuInfo

  3.在查詢中使用列名

  AS子句可以用來改變結果集列的名稱,還有一種情況是要讓標題列的信息更易懂。

  例如:把SCode列名查詢後顯示為“學員編號”

  SELECT SCode AS 學員編號,SName AS 學員姓名 FROM Students

  還有一種情況是使用計算、合並得到新列的命名。

  例如:在查詢Employees表中的數據時,需要把FirstName和LastName字段合並成一個叫“姓名”的字段。

  SELECT FirstName+'.'+LastName AS '姓名'FROM Employees 或者

  SELECT '姓名'= FirstName+'.'+LastName FROM Employees

  4.查詢空行

  在SQL語句中采用“IS NULL”或者“IS NOT NULL”來判斷是否為空行。

  例如:要查詢學員信息表中沒有填寫Email信息的學員,可以使用以下查詢語句。

  SELECT SName FROM Students WHERE SEmail IS NULL

  5.在查詢中使用常量列

  有的時候,一些常量的缺省信息需要添加到查詢輸出中,以方便統計或計算。

  例如:查詢學員信息的時候,學校名稱統一都是“河北新龍”,查詢輸出的語句為。

  SELECT 姓名=SName,地址=SAddress,'河北新龍' AS 學校名稱 FROM Students

  6.查詢返回限制的行數

  例如:在測試的時候,如果數據庫中有上萬條記錄,而只要檢查前面十行數據是否有效。

  SELECT TOP 10 SName,SAddress FROM Students WHERE SSex = 0 查詢排序

  如果需要按照一定的順序排列查詢語句選中的行,需要使用ORDER BY子句,並且排序可以是升序(ASC)或者降序(DESC)。如果不指定ASC或者DESC,缺省記錄集按ASC升序排序。上面講述的SQL語句都可以在其後面加上ORDER BY來進行排序。

  例如:查詢學員成績的時候,如果把所有成績都降低10%後加5分,再按照及格成績的高低來進行排列。

  SELECT StudentID AS 學員編號,(Score*0.9+5)AS 綜合成績 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score

  還可以按照多個字段進行排序。

  例如:要在學員成績的基礎上,再按照課程ID進行排序的語句如下。

  SELECT StudentID AS 學員編號,Score AS 成績 FROM Score WHERE Score>60 ORDER BY Score,CourseID

  特殊排序

  在數據庫表中有以下字符數據,如:

  13-1、13-10、13-100、13-108、14-3、14-1、13-18

  現在希望通過SQL語句進行排序,並且首先要按照前半部分的數字進行排序,然後再按照後半部分的數字進行排序,輸出要排成這樣:13-1、13-10、13-18、13-100、13-108、14-1、14-3

  數據庫表名:SellRecord;字段名:ListNumber

  分析:

  這是查詢語句,需要使用SELECT語句,需要用到ORDER BY進行排序,並重新計算出排序的數字來。

  前半部分的數字,可以從先找到“-”符號的位置,然後取其左半部分,最後再使用Convert函數將其轉換為數字。

  Convert(int,Left(ListNumber,CharIndex('-',ListNumber)-1))

  後半部分的數字,可以先找到“-”符號的位置,然後把從第一個位置到該位置的全部字符替換為空格,最後再使用Convert函數將其轉換為數字。

  Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))

  完整的T-SQL語句是:

  SELECT ListNumber

  FROM SellRecord

  ORDER BY Convert(int,Left(ListNumber,CharIndex('-',ListNumber)-1)),Convert(int,Stuff(ListNumber,1,Charindex('-',ListNumber),''))

  使用LIKE進行模糊查詢

  LIKE運算符用於匹配字符串或字符串的一部分(稱為子串),由於該運算符只用於字符串,所以僅與Char或Varchar數據類型聯合使用。

  在數據更新、刪除或者查詢的時候,依然可以使用LIKE關鍵字來進行匹配查找,例如:

  SELECT * FROM Students WHERE SName LIKE '張%'

  使用BETWEEN在某個范圍內進行查詢

  使用關鍵字BETWEEN可以查找那些介於兩個已知值之間的一組未知值。要實現這種查找必須知道開始查找的初值和終值,這個最大值和最小值用單詞AND分開,例如:

  SELECT * FROM SCore WHERE Score BETWEEN 60 AND 80

  此外,BETWEEN查詢日期范圍的時候使用得比較多,例如:查詢不在1992年8月1號到1993年8月1號之間訂購的讀書列表。

  SELECT * FROM Sales WHERE ord_date NOT BETWEEN '1992-8-1' AND '1993-8-1'

  提示:使用NOT來對限制條件“取反”操作

  使用IN在列舉值內進行查詢

  查詢的值是指定的某些值之一,可以使用帶列舉值的IN關鍵字來進行查詢。

  例如:列舉值放在圓括號裡,用逗號分開。

  SELECT SName AS 學員姓名 FROM Students WHERE SAddress IN ('北京','廣州','上海') ORDER BY SAddress SQL Server中的聚合函數

  在查詢中還會經常碰到的要求是取某些列的最大值、最小值、平均值等信息,有時候還需要計算出究竟查詢到多少行數據項。這個時候就可以使用聚合函數了,聚合函數能夠基於列進行計算,並返回單個值。

  SQL Server提供了以下幾個聚合函數:

  1.SUM

  SUM返回表達式中所有數值的總和,它只能用於數字類型的列。

  例如:在Pubs數據庫中,要得到商務付款的總數,執行以下查詢語句。

  SELECT SUM(ytd_sales) FROM titles WHERE type = 'business'

  注意:這種查詢只返回一個數值,因此,不能夠直接與可能

copyright © 萬盛學電腦網 all rights reserved