表數據操作SQL語句

表中數據的操作有四條基本語句
Select ,Insert,Update,delete
LIKE 只可用於:char、nchar、varchar、nvarchar 和datetime
通配符 描述
% 0或多個字符串
_ 任何單個的字符
[] 在指定區域或集合內的任何單個字符
[^] 不在指定區域或集合內的任何單個字符
like和通配符結合可以進行模糊查詢
例如:SELECT companyname
FROM customers
WHERE companyname LIKE '%R%'
用邏輯操作符 AND、OR 和 NOT 來連接一系列的表達式
使用 AND 返回滿足所有條件的行
使用 OR 返回滿足任一條件的行
使用 NOT 返回不滿足條件的行
優先級:NOT、AND、OR由左到右
例如:SELECT productid, productname, supplierid, unitprice FROM  products WHERE (productname LIKE 'T%' OR productid = 46)  AND  (unitprice > 16.00)
使用 BETWEEN 來查詢在一定範圍內的值,要返回不在指定區域的行時,使用 NOT BETWEEN
使用 IN 時,注意:
和使用由 OR 操作符連起來的一系列比較操作符,其效果是等價的
在搜索條件中不能包含 NULL 值,這將返回不可預測的結果集
使用 NOT IN 搜索條件來返回值不在指定列表中的行
除非使用了 ORDER BY 子句,否則 DISTINCT 子句將按隨機的順序顯示結果集中的行
如果指定了 DISTINCT 子句, ORDER BY 中的字段必須出現在選擇列表中
對包含空值的字段使用聚合函數時,應注意
SQL Server 的聚合函數(COUNT(*) 除外)將忽略字段中的空值
COUNT(*)將計算所有的行,包括NULL和重複項
    使用 HAVING 子句時,應注意:
只在使用 GROUP BY 子句的同時,使用 HAVING子句來限制分組
可以引用任何出現在選擇列表中的字段
不要聯合使用關鍵字 ALL 和 HAVING 子句。 因爲 HAVING 子句會忽略 ALL 關鍵字,並返回只符合 HAVING 條件的組
Insert into 表名 values(列值1,列值2,列值2,……)
Update 表名 set  列1=值1,列2=值2…… where 條件
Delete 表名 where 條件
內連接:select products.*,suppliers.supplierid from products inner
join suppliers on products.supplierid=suppliers.supplierid
左連接
select discounttype,discount,s.stor_name from discounts d
left outer join stores s on d.stor_id=s.stor_id
右連接
select discounttype,discount,s.stor_name from discounts d
right join stores s on d.stor_id=s.stor_id
完全連接
select discounttype,discount,s.stor_name from discounts d
full join stores s on d.stor_id=s.stor_id
交叉連接
select discounttype,discount,s.stor_name from discounts d
cross join stores s
標量函數
返回一個標量(單值)結果
表值函數
返回 table 數據類型
內置函數
系統提供,返回標量數據類型或 table 數據類型
函數的限制
用戶定義函數體中不允許使用內置非確定性函數,如:@@ERROR、 @@IDENTITY等
創建標量函數
CREATE FUNCTION fn_DateFormat (@indate datetime, @separator char(1))RETURNS Nchar(20) AS BEGIN  RETURN    CONVERT(Nvarchar(20),datepart(mm,@indate)) + @separator + CONVERT(Nvarchar(20),datepart(dd,@indate)) + @separator + CONVERT(Nvarchar(20),datepart(yy,@indate))END
使用多語句表值函數:
BEGIN 和 END 分隔了函數體
RETURNS 子句指定 table 作爲返回的數據類型
RETURNS 子句定義了返回表的名字和格式
返回變量名的使用域限定於函數局部
不允許:
出現返回非函數返回值的語句以及產生副作用的語句
對數據庫表的更新、全局遊標語句、創建對象的語句、事務控制語句
CREATE FUNCTION fn_Employees (@length varchar(9))
RETURNS @fn_Employees table
   (EmployeeID int PRIMARY KEY NOT NULL,
   [Employee Name] nvarchar(61) NOT NULL)
AS
BEGIN
   IF @length = 'ShortName'
      INSERT @fn_Employees SELECT EmployeeID,  LastName FROM Employees
   ELSE IF @length = 'LongName'
      INSERT @fn_Employees SELECT EmployeeID,
      (FirstName + ' ' + LastName) FROM Employees
RETURN
END
內聯表值函數返回表,以在 FROM 子句中被引用,就像視圖一樣
使用內聯表值函數
RETURN 子句在括號中包含單個 SELECT 語句,SELECT 語句的結果集構成函數所返回的表
函數體不由 BEGIN 和 END 分隔
RETURNS 指定 table 作爲返回的數據類型
不必定義返回變量的格式,因爲它由 RETURN 子句中的 SELECT 語句的結果集的格式設置
CREATE FUNCTION fn_CustomerNamesInRegion
   ( @RegionParameter nvarchar(30) )
RETURNS table
AS
RETURN
(
   SELECT CustomerID, CompanyName
   FROM Northwind.dbo.Customers
   WHERE Region = @RegionParameter
)
觸發器:
Create trigger 觸發器名字
On {表名或視圖名}
With encryption
{for|after|instead of}{delete|insert|update}
As
操作SQL語句
1、for和after的作用相同,都是在觸發器都在指定的事件之後。
Instead of是用觸發器的操作替代原有的操作。
2、delete ,insert,update可以只有一個,也可以有多個
觸發器不能執行的操作
對數據的操作
不允許對基表執行修改,刪除等操作
對索引的操作
Reconfigure語句
--刪除觸發器
drop trigger 觸發器名稱
--禁用觸發器
alter table stu
disable trigger 觸發器名稱
--解禁觸發器
alter table stu
enable trigger 觸發器名稱

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章