SQL 知识及用法备忘录

  1 ---查询当前数据库一共有多少张表
  2 select COUNT(1) from sysobjects where xtype=‘U‘
  3
  4 ---查询当前数据库有多少张视图
  5 select COUNT(1) from sysobjects where xtype=‘V‘
  6
  7 ---查询当前数据库 有多少个存储过程
  8 select COUNT(1) from sysobjects where xtype=‘P‘
  9
 10 -- row_number()函数用法 row_number() over (order by cloumn) from tableName
 11 select ROW_NUMBER() over (order by cardNo ),* from T_ValueCard
 12
 13
 14 select type from sysobjects group by type
 15 --
 16 select * from sysobjects
 17
 18
 19 --触发器
 20 if not exists (select * from sysobjects where id=OBJECT_ID(‘Student‘) and name=‘Student‘)
 21 begin
 22     create table Student    --学生表
 23     (
 24         StudentID int primary key,    --学号
 25         StudentName nvarchar(15)    --姓名
 26     )
 27 end
 28
 29 if not exists (select * from sysobjects where id=OBJECT_ID(‘BorrowRecord‘) and name=‘BorrowRecord‘)
 30 begin
 31     create table BorrowRecord    --借书记录表
 32     (
 33         RecordID int primary key,    --流水号
 34         StudentID int,                --学号
 35         OutTime datetime,            --借出时间
 36         ReturnDate datetime            --归还时间
 37     )
 38 end
 39
 40 --创建触发器语法
 41 --create trigger trigger_name
 42
 43 --on {table_name | view_name}
 44
 45 --{for | After | Instead of }            [ insert, update,delete ]
 46
 47 --as            sql_statement
 48
 49 --删除触发器  drop trigger trigger_name
 50
 51 -- 查看当前数据库的触发器
 52 --select * from  sysobjects where  type=‘TR‘
 53 --查看某个触发器
 54 --exec  sp_helptext ‘TStudent‘
 55
 56 --触发器实例----触发器是属于隐式的
 57 --create trigger TStudent
 58 --on Student                --在Student表中创建触发器
 59 --for Update                --针对什么事件触发
 60 --as                        --时间触发后要做的事情
 61 --if update(StudentID)
 62 --begin
 63 --    Update BorrowRecord
 64 --        set StudentID=i.StudentID
 65 --        from BorrowRecord br,Deleted d,Inserted i    --Deleted和Inserted为临时虚拟表
 66 --        where br.StudentID=d.StudentID
 67 --end
 68 --go
 69
 70 --查询的时候临时生成自定义数据列
 71 select ‘Web‘ as SourceName,* from TM_Goods
 72 --生成空列数据
 73 select ‘‘ as SourceName, * from TM_Goods
 74
 75
 76
 77 --- 所查列的值出现特殊结果字符 给这个结果字符加单引号 如下所示的Sex字段
 78 select top 20 ID, GuestName,MemNo,CardNo, [Identity], BagNo,BoxNo,case Sex when ‘M‘ then ‘男‘ when ‘F‘ then ‘女‘ end as Sex,Holes,
 79 case [Status] when 1 then ‘已预约‘ when 2 then ‘已来场登记‘ when 3 then ‘已球场登记‘ when 4 then ‘已出发‘
 80 when 5 then ‘已离场‘ when 6 then ‘已结账‘ when 7 then ‘退回结账‘ when -1 then ‘已取消预约‘ when -2 then ‘取消登记‘
 81 when 0 then ‘未知‘ end as [Status],
 82 StrategyCode,   CreateTime,CheckinTime, Creator, CheckOutTime, CheckoutUser,
 83 LastEditTime, LastEditor ,ExpiryDate, MainCardNo,
 84 SalemanCode from Checkin
 85
 86 ---查询的时候如果结果里面包含空格或者特殊字符可以等量替换然后在进行查询
 87 select * from TM_Goods where REPLACE(Name,‘ ‘,‘‘)=REPLACE(‘海立得 车载型空气净化机‘,‘ ‘,‘‘)
 88
 89 ---死锁有关脚本
 90 create  proc   [dbo].[p_lockinfo]
 91   @kill_lock_spid   bit=1,     --是否杀掉死锁的进程,1   杀掉,   0   仅显示
 92   @show_spid_if_nolock   bit=1   --如果没有死锁的进程,是否显示正常进程信息,1   显示,0   不显示
 93   as
 94   declare   @count   int,@s   nvarchar(1000),@i   int
 95   select   id=identity(int,1,1),标志,
 96     进程ID=spid,线程ID=kpid,块进程ID=blocked,数据库ID=dbid,
 97     数据库名=db_name(dbid),用户ID=uid,用户名=loginame,累计CPU时间=cpu,
 98     登陆时间=login_time,打开事务数=open_tran,   进程状态=status,
 99     工作站名=hostname,应用程序名=program_name,工作站进程ID=hostprocess,
100     域名=nt_domain,网卡地址=net_address
101   into   #t   from(
102     select   标志=‘死锁的进程‘,
103       spid,kpid,a.blocked,dbid,uid,loginame,cpu,login_time,open_tran,
104       status,hostname,program_name,hostprocess,nt_domain,net_address,
105       s1=a.spid,s2=0
106     from   master..sysprocesses   a   join   (
107       select   blocked   from   master..sysprocesses   group   by   blocked
108       )b   on   a.spid=b.blocked   where   a.blocked=0
109     union   all
110     select   ‘|_牺牲品_>‘,
111       spid,kpid,blocked,dbid,uid,loginame,cpu,login_time,open_tran,
112       status,hostname,program_name,hostprocess,nt_domain,net_address,
113       s1=blocked,s2=1
114     from   master..sysprocesses   a   where   blocked<>0
115   )a   order   by   s1,s2
116
117   select   @count=@@rowcount,@i=1
118
119   if   @count=0   and   @show_spid_if_nolock=1
120   begin
121     insert   #t
122     select   标志=‘正常的进程‘,
123       spid,kpid,blocked,dbid,db_name(dbid),uid,loginame,cpu,login_time,
124       open_tran,status,hostname,program_name,hostprocess,nt_domain,net_address
125     from   master..sysprocesses
126     set   @count=@@rowcount
127   end
128
129   if   @count>0
130   begin
131     create   table   #t1(id   int   identity(1,1),a   nvarchar(30),b   Int,EventInfo   nvarchar(255))
132     if   @kill_lock_spid=1
133     begin
134       declare   @spid   varchar(10),@标志   varchar(10)
135       while   @i<=@count
136       begin
137         select   @spid=进程ID,@标志=标志   from   #t   where   id=@i
138         insert   #t1   exec(‘dbcc   inputbuffer(‘+@spid+‘)‘)
139         if   @标志=‘死锁的进程‘   exec(‘kill   ‘+@spid)
140         set   @i=@i+1
141       end
142     end
143     else
144       while   @i<=@count
145       begin
146         select   @s=‘dbcc   inputbuffer(‘+cast(进程ID   as   varchar)+‘)‘   from   #t   where   id=@i
147         insert   #t1   exec(@s)
148         set   @i=@i+1
149       end
150     select   a.*,进程的SQL语句=b.EventInfo
151     from   #t   a   join   #t1   b   on   a.id=b.id
152   end
153 GO
时间: 2024-11-07 18:03:40

SQL 知识及用法备忘录的相关文章

SQL 语句日期用法及函数

SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date

Atitit &#160;补充说明 sql知识图谱与线路图attilax总结补充说明

Atitit  补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类  :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl,5gl   ,sql属于4gl1 1.2. 按照领域范围可分为通用语言与dsl领域特定语言,sql语言属于dsl1 2. 如何判断一门编程语言完备不完备,为什么脚本语言往往不完备?1 2.1. Sql语言又多少内置函数?2 2.2. Sql语言中的变量与数据结构,很多是表和视图一类复合结构2 2.

标准SQL语言的用法

原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5/ 标准SQL语言的用法 SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品

SQL语句的用法

SQL语句的用法 SQL 简介 SELECT DISTINCT WHERE AND OR IN 函数 INCLUDE HAVING 简介 SQL语句教程 SELECT SELECT "列名" FROM "表格名"; 列名可以为多个,该选中的列显示出来 DISTINCT SELECT DISTINCT "列名" FROM "表格名"; 只显示不同的值,重复值不显示,如果有多个列,则每一个列的值都相同时视作相同.如下表,执行sel

sql知识

1.LEN() 函数 LEN 函数返回文本字段中值的长度. SQL LEN() 语法SELECT LEN(column_name) FROM table_name在Oracle中对应的是length()函数.2. sql知识,布布扣,bubuko.com

sql case when 用法

sql语言中有没有类似C语言中的switch case的语句?? 没有,用case   when   来代替就行了.            例如,下面的语句显示中文年月         select   getdate()   as   日期,case   month(getdate())     when   11   then   '十一'     when   12   then   '十二'     else   substring('一二三四五六七八九十',   month(getda

SQL Union和SQL Union All用法

SQL Union和SQL Union All用法SQL Union和SQL Union All用法SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的列的顺序必须相同. SQL UNION 语法SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s)

oracle数据库中sql%notfound的用法

SQL%NOTFOUND 是一个布尔值.与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true.否则返回false.这样的语句在实际应用中,是非常有用的.例如要update一行数据时,如果没有找到,就可以作相应操作.如: begin update table_name set salary = 10000 where emp_id = 10; if sql%notfound then insert into

详细的SQL中datediff用法

DATEDIFF 函数 [日期和时间] 功能返回两个日期之间的间隔. 语法DATEDIFF ( date-part, date-expression-1, date-expression-2 ) date-part :year | quarter | month | week | day | hour | minute | second | millisecond 参数date-part 指定要测量其间隔的日期部分. 有关日期部分的详细信息,请参见日期部分. date-expression-1