表数据操作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 触发器名称

 


 

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