如下:SELECT LogID,UserID,LogTime,Url,Description,(case OperateType when
OperateType = 0 then 新增 when OperateType=1 then 修改 else 删除 end
case) FROM LOG ????
12、说明:日程安排提前五分钟提醒
AS
在网上查了部分资料但是发现粘上去的代码都存在问题,无奈只好自己修改了一下,代码如下:
如下代码能正常运行,都是网上查找资料最后拼凑总结出来的。条件就自己加吧。网上好像也有不少类型的东西,这里留着以备不时只需!
复制代码 代码如下: SELECT (case when
a.colorder=1 then d.name else ” end) N’表名’, a.colorder N’字段序号’,
a.name N’字段名’, (case when COLUMNPROPERTY( a.id,a.name,’IsIdentity’)=1
then ‘√’else ” end) N’标识’, (case when FROM sysobjects WHERE (name in
(SELECT name FROM sysindexes WHERE AND (indid in (SELECT indid FROM
sysindexkeys WHERE AND (colid in (SELECT colid FROM syscolumns WHERE AND
AND >0 then ‘√’ else ” end) N’主键’, b.name N’类型’, a.length
N’占用字节数’, COLUMNPROPERTY(a.id,a.name,’PRECISION’) as N’长度’,
isnull(COLUMNPROPERTY,0) as N’小数位数’, (case when a.isnullable=1 then
‘√’else ” end) N’允许空’, isnull N’默认值’, isnull AS N’字段说明’
–into ##tx FROM syscolumns a left join systypes b on
a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype=’U’
and d.name<>’dtproperties’ left join syscomments e on
a.cdefault=e.id left join sys.extended_properties g on a.id=g.major_id
AND a.colid = g.minor_id order by object_name,a.colorder
sysproperties表的详解:
1、表名:sqlserver的注释表,每个数据库都有,包括表和字段的注释,表或者列的注释都会存储,没有注释不存储。
2、字段: id:表的ID或者是列的ID smallid:列的顺序,排序用 type:3
表,4字段,可能还有约束什么的,还没有测试出 name:统一的MS_Description
value:描述 如需修改 如果需要更新 此表的 内容 需要 开启
[允许对系统目录直接进行修改] ,否则 改不了 系统表 如果 不开启 此 功能
,那么也可以 使用 存储过程[sp_addextendedproperty] 来 添加更新删除
表和字段的描述 用法如下 –创建表 Create Table 表,a2 char –为表 添加
描述信息 : 第二个参数为 [描述] 第六个参数为 [表名] EXECUTE
sp_addextendedproperty N’MS_Description’, ‘人员信息表’, N’user’,
N’dbo’, N’table’, N’表’, NULL, NULL –为表 更新 描述信息 : 第二个参数为
[描述] 第六个参数为 [表名] EXECUTE sp_updateextendedproperty
‘MS_Description’,N’adsfasfdas’, N’user’, N’dbo’, N’table’, N’表’, NULL,
NULL –为表 删除 描述信息 : 第五个参数为 [表名] EXEC
sp_dropextendedproperty ‘MS_Description’,N’user’, N’dbo’, N’table’,
N’表’, NULL, NULL –字段的 添加 更新 删除 方法 –为 字段a1 添加
描述信息: 第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为
[字段名称] EXECUTE sp_addextendedproperty N’MS_Description’, ‘姓名’,
N’user’, N’dbo’, N’table’, N’表’, N’column’, N’a1′ –更新 字段 a1
的描述属性:第二个参数为 [描述] 第六个参数为 [表名] 第八个参数为
[字段名称] EXEC sp_updateextendedproperty
‘MS_Description’,’字段1dd’,’user’,dbo,’table’,’表’,’column’,N’a1′
–删除 字段 a1 的描述属性:第五个参数为 [表名] 第七个参数为
[字段名称] EXEC sp_dropextendedproperty
‘MS_Description’,’user’,dbo,’table’,’表’,’column’,’a1′ –删除测试 Drop
Table 表
2.DECODE的写法:SELECT LogID,UserID,LogTime,Url,Description,
decode(OperateType,0,新增,1,修改,删除) OperationName FROM LOG
oracle教程:PLSQL常用方法汇总
- caseSELECT LogID,UserID,LogTime,Url,Description,(case when
OperateType = 0 then 新增 when OperateType=1 then 修改 else 删除 end )
FROM LOG
23、说明:初始化表table1
建议用DECODE的写法
3,
WHERE name = @LogicalFileName
group by
t.xingshi))) t
按UserID分组
手机 B 3
select a,b,c from tablename ta where
a=(select max(a) from tablename tb where tb.b=ta.b)
–包含用户表,产品表和订单表关联后的所有信息
法二:select top 0 * into b from a
INSERT INTO TBL_TEST(ID,NAME,PID)
VALUES(‘5′,’121′,’2’);
–插入订单表数据
where
xingshi not between
如果您有什么问题,欢迎在下面评论,我们一起讨论,谢谢~
BEGIN
INNER JOIN Tse_User AS U WITH(NOLOCK) ON O.UserID = U.UserID
DECLARE curObject CURSOR FOR
–匹配除126以外的所有邮箱
select decode(sign(numb-6),-1,numb,6)
numb,decode(sign(numb-6),-1,xingshi,’其他’) xingshi, sum(amount) from
因为用户编号在订单表中为外键,所以,直接删除某个用户时,如果该用户下了订单,就会提示有外键不能删除。针对这种情况,可以考虑使用触发器。
总数:select count as totalcount from
table1
–匹配126邮箱的
INTERSECT 运算符通过只包括 TABLE1 和
TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT
一起使用时 (INTERSECT ALL),不消除重复行。
插入
CREATE VIEW V_Tse_TotalInfo
create table tabname(col1 type1 [not
null] [primary key],col2 type2 [not null],..)
select * from Tse_User with(nolock)
删除索引:drop index idxname
如果您觉得还不错,不妨点下右下方的推荐,有您的鼓励我会继续努力的~
BACKUP DATABASE pubs TO testBack
GO
CREATE TRIGGER TR_Tse_ADDOrder
ON Tse_Order
AFTER INSERT
AS
BEGIN
UPDATE Tse_Product SET Storage = Storage – (SELECT Number FROM
INSERTED)
WHERE ProductID IN (SELECT ProductID FROM INSERTED)
END 关于SQL定时作业部门的介绍,请看“工作经常使用的SQL整理,实战篇(三)”~
AND @OriginalSize = (SELECT size
FROM sysfiles WHERE name = @LogicalFileName)
2,向上查询
CREATE TRIGGER TR_Tse_DelUser
ON Tse_User
INSTEAD OF DELETE –代替默认的删除
AS
BEGIN
SET NOCOUNT ON
DELETE FROM Tse_Order WHERE UserID IN (SELECT UserID FROM
Deleted)
DELETE FROM Tse_User WHERE UserID IN (SELECT UserID FROM
Deleted)
END 使用触发器,添加订单时,产品表库存相应减少
三、技巧
11.存储过程和事务
— 创建 备份数据的 device
工作经常使用的SQL整理,实战篇(三)
查找:select * from table1 where field1
like ’%value1%’ —like的语法很精妙,查资料!
平均:select avg(field1) as avgvalue from
table1
获取所有产品的名字,以‘|’分隔,包含在输出参数@Names中
2、说明:删除数据库
创建触发器,删除用户表中用户时,会自动先删除订单表中的订单
11、说明:四表联查问题:
–左右表匹配的行
WHILE ((@Counter < @OriginalSize
/ 16) AND (@Counter < 50000))
–右边表中所有行,左边匹配右边,左边为空的补NULL
Delete from tablename where id not in
(select max(id) from tablename group by col1,col2,…)
SET NOCOUNT OFF
–将年,月,日,时,分,秒,毫秒以字符串形式连接起来作为订单号
@NewOwner as NVARCHAR(128)
工作经常使用的SQL整理,实战篇(二)
@NewSize INT
9.通配符
‘a’ and
‘z’ and xingshi
SELECT * FROM Tse_Order AS O WITH(NOLOCK)
select a.title,a.username,b.adddate from
table a,(select max(adddate) adddate from table where
table.title=a.title) b
values(111, ‘zhangsan’, ‘zhangsan’, 'zs@126.com', ”)
insert into b(a, b, c) select d,e,f from
b in ‘具体数据库’ where 条件
–左边表中所有行,右边匹配左边, 右边为空的补NULL
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
select * from Tse_Order with(nolock) where ID >= 2
AND (@OriginalSize * 8 /1024) >
@NewSize
SELECT UserID, COUNT(0) AS Number FROM Tse_Order WITH(NOLOCK) GROUP BY
UserID HAVING COUNT(0) >=3
如:
SET NOCOUNT ON
C: INTERSECT 运算符
简单查询
6、说明:外连接查询(表名1:a
表名2:b)
SELECT UserID, COUNT(0) AS Number FROM Tse_Order WITH(NOLOCK) GROUP BY
UserID HAVING COUNT(0) >=1 ORDER BY Number ASC
12、说明:使用外连接
— Wrap the log if necessary.
VALUES(‘PD00030’, ‘Benz’, 500500.0, 30000)
FETCH NEXT FROM curObject INTO @Name,
@Owner
select * from ( select rank()
over(partition by classroom order by grade desc)mm ,name,grade,classroom
from grade_class) t where t.grade>90
set @i=@i+1
修改
排序:select * from table1 order by
field1,field2 [desc]
12.游标
begin
CREATE PROCEDURE SC_Tse_GetProductNames
(
@Names varchar(max) OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
declare @ProductName varchar(64)
declare curTest cursor
for (select ProductName from Tse_Product)
open curTest –打开游标
fetch next from curTest into @ProductName
while @@fetch_status = 0 –获取成功
begin
if (@ProductName is not null and @ProductName <> ”)
begin
if (@Names is null or @Names = ”)
begin
set @Names = @ProductName
end
else
begin
set @Names = @Names + ‘|’+ @ProductName
end
end
fetch next from curTest into @ProductName
end
close curTest –关闭游标
deallocate curTest –释放游标
END
@OldOwner as NVARCHAR(128),
–插入产品表数据
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
U.Email, U.Mobile, P.ProductName, P.Price FROM Tse_Order AS O
WITH(NOLOCK)
1、1=1,1=2的使用,在SQL语句组合时用的较多
LEFT JOIN Tse_Order AS O WITH(NOLOCK) ON U.UserID = O.UserID
SELECT @StartTime = GETDATE(),
n Select (case when condition1 then
返回值1 when condition2 then 返回值2 end) from table;
SELECT * FROM Tse_Order AS O WITH(NOLOCK)
SQL: select a.a, a.b, a.c, b.c, b.d, b.f
from a LEFT OUT JOIN b ON a.a = b.c
select type,sum(case vender when ‘A’ then
pcs else 0 end),sum(case vender when ‘C’ then pcs else 0 end),sum(case
vender when ‘B’ then pcs else 0 end) FROM tablename group by type
SELECT O.OrderID, O.UserID, O.ProductID, O.PostTime, U.UserName,
U.RealName,
END
全连接
go
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE Name =
‘V_Tse_TotalInfo’)
drop table tabname
工作经常使用的SQL整理,实战篇(一)
while @i<30
Delete from Tse_User Where UserID = 111
if @strWhere !=”
10.视图
二、提升
FULL JOIN Tse_Product AS P WITH(NOLOCK) ON O.ProductID = P.ProductID
INNER JOIN Tse_Product AS P WITH(NOLOCK) ON O.ProductID =
P.ProductID
DBCC REINDEX
INSERT INTO Tse_Product(ProductID, ProductName, Price, Storage)
FROM sysfiles
DATENAME(HOUR, GETDATE()) + DATENAME(MINUTE,
GETDATE())+DATENAME(SECOND, GETDATE()) +DATENAME(MILLISECOND, GETDATE())
10、说明:几个简单的基本的sql语句
工作经常使用的SQL整理,实战篇,地址一览:
EXCEPT 运算符通过包括所有在 TABLE1
中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随
EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
接着上一篇“工作经常使用的SQL整理,实战篇(一)”继续讨论,这一篇中主要讨论增删改查,连接,分组和排序,通配符,视图,存储过程和事务,游标,触发器这些东西。
set @strSQL = ‘select count(*) as Total
from [‘ + @tblName + ‘]’
左连接(左外连接)
CONVERT(VARCHAR(30),(size*8/1024)) + ‘MB’
8、说明:between的用法,between限制查询数据范围时包括了边界值,not
between不包括
–左右表所有行,为空的补NULL
group by substr(t.name,1,1)
order by amount desc )
CREATE PROCEDURE [dbo].[SC_Tse_DeleteProduct]
(
@ProductID VARCHAR(64),
@Result int output
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRAN –开始事务
BEGIN
DELETE FROM Tse_Order WHERE ProductID = @ProductID
DELETE FROM Tse_Product WHERE ProductID = @ProductID
IF (@@ERROR <> 0)
BEGIN
SET @Result = -999
ROLLBACK TRAN –回滚
END
ELSE
BEGIN
SET @Result = 888
COMMIT TRAN –提交
END
END
END
7、说明:在线视图查询(表名1:a )
VALUES(@OrderID, 115, ‘PD00040’, 10, GETDATE())
select * from a left inner join b on
a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where
…..
SELECT * FROM Tse_User WITH(NOLOCK) WHERE Email LIKE
‘%@16_.com’
4、说明:子查询(表名1:a 表名2:b)
SELECT * FROM Tse_User WITH(NOLOCK) WHERE Email LIKE
‘%@126.com’
WHILE(@@FETCH_STATUS=0)
6.增删改查
14、说明:前10条记录
INNER JOIN Tse_User AS U WITH(NOLOCK) ON O.UserID = U.UserID
select avg(grade) AS 平均分,t.classroom
from grade_class t group by t.classroom having
avg(grade)>94
按UserID分组,订单数量大于等于1,按订单数量升序
法一:select * into b from a where
1<>1
–匹配16开头,后面跟一个任意字符的邮箱
相关文章
- Server中早就存在了满意分裂意况的有余高可用性技艺,举例数据库镜像技艺
- 表定义允许在它的三个列中利用NULL值,须求思索id不三回九转的标题
- 【澳门新葡8455最新网站】没学过的同学能左右一些数据库的功底知识,课程战表高的有所学子的学号
- 澳门新葡8455最新网站提出采取MySQL5.5及事后的本子,InnoDB的多寡存款和储蓄在表空间中
- 那将要跟数据库服务器交互作用1W次,必需必要连接的数字
- 澳门新葡8455最新网站对于这种删除数据的台本开荒,大概会阻止修改操作
- 澳门新葡8455最新网站:数据库服务也自动重启了,该数据库文件不能被实例使用
- 德姆oUser.然后创建客商并mapping到数据库,那么要怎么准确的去除这个Windows认证账号呢
- dgpage中Mail重复的笔录并保存近年来一条.,在再一次的记录中
- 末尾大家再介绍redis.py的socket交互作用,redis合计在以下几点之间做出了妥胁