数据库(SQL SERVER)常用知识点

时间:2023-03-09 05:31:29
数据库(SQL SERVER)常用知识点
1,连接数据库字符串
Data Source=192.168.1.249;Initial Catalog=bbx_uf_jiekou;User ID=sa;Password=123
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
2.读取库中所有表名
  select name from sysobjects where xtype='u'
3,查询指定表的所有列名
  select      列名=name      from      syscolumns      where      id=object_id(N'要查的表名')
4.1。表结构相同的表,且在同一数据库(如,table1,table2)
     Sql :insert into table1 select * from table2 (完全复制)  
           insert into table1 select distinct * from table2(不复制重复纪录)   
           insert into table1 select top 5 * from table2 (前五条纪录)
  2。不在同一数据库中(如,db1 table1,db2 table2)
     sql:  insert into db1..table1 select * from db2..table2 (完全复制)
           insert into db1..table1 select distinct * from db2table2(不复制重复纪录)  
           insert into tdb1..able1 select top 5 * from   db2table2 (前五条纪录)
5.表一和表二合并
   表一:学号,语文,数学,外语
   表二:学号,德,美,体
   select ISNULL(a.学号,b.学号) as 学号1,* from 表一 a full join 表二 b on (a.学号=b.学号) order by 学号1
6.表备份
   select * into sys_colmns_201300325bf from sys_colmns where条件
7.查询语句,多个个字段拼接为一个
   select Cast(cCusCode as NvarChar)+'*'+Cast(cCusName as NvarChar) as cCusName from UFDATA_023_2012..customer
8.修改表中某列的数据类型
   ALTER TABLE myTest ALTER COLUMN fName nvarchar(30) null
9.查询表和存储过程的结构
sp_help 表名
sp_helptext 存储过程名
10.union 去掉重复的    union all 合并在一起
11.判断表是否存在
1)if exists/note exists(select 1 from sysobjects where id=object_id('表名') and xtype='U')
begin
sql语句
end
2)if exists(select * from sysobjects where name='表名')
3)if(object_id('表名','u') is not null)--u:用户定义
12.sql数据库在日期上添加年或月或日
select DATEADD(YEAR,1,convert(datetime,date)) from ceshi_tb
select DATEADD(MONTH,1,convert(datetime,date)) from ceshi_tb
select DATEADD(DAY1,convert(datetime,date)) from ceshi_tb
13.sql数据库判断指定日期与到期日期相差多少天
select * from ceshi_tb where DATEDIFF(DAY,指定日期,到期日期)=1--查询出指定日期与到期日期相差一天的数据

14.查询出输入当前月份的所有数据

select * from ceshi_tb where month("date")=MONTH(GETDATE())--sql数据库

select * from ceshi_tb where month("date")=MONTH(now())--access数据库

15.SQL事物回滚

begin transaction--开始事物

CREATE TRIGGER T_INSERT_卷烟销售表 
ON 卷烟销售表 
FOR INSERT 
AS 
BEGIN TRANSACTION 
--检查数据的合法性:销售的卷烟是否有库存,或者库存是否大于零 
IF NOT EXISTS ( 
SELECT 库存数量 
FROM 卷烟库存表 
WHERE 卷烟品牌 IN (SELECT 卷烟品牌 FROM INSERTED) 

BEGIN 
--返回错误提示 
RAISERROR(’错误!该卷烟不存在库存,不能销售。’,16,1) 
--回滚事务 
ROLLBACK 
RETURN 
END

commit transaction

加begin transaction可以开始一个事务,commit transaction可以提交这个事务,如果在此次执行中有错误,或想取消,可以使用RollbackTrans回滚事务,则在开始事务后的操作会被全部取消。

16.本周周一的日期:select dateadd(week, datediff(week, 0, getdate()), 0);

17.某列(columns_name)内容转化为小写字符:lower(columns_name) ,转化为大写字符:upper(columns_name)

18.case when的应用

create proc proc_ceshi
@name varchar(100)
as
declare @type int
select @type=case when COUNT(name)>0 then 1 else 0 end from tb_ceshi where name=@name
if @type=1
begin
print '该人员存在'
end
else
begin
print '该人员不存在'
end

19.sql数据取整:

floor(100.9) = 100
floor 返回小于或等于所给数字表达式的最大整数。 ceiling(100.1) = 101
ceiling 返回大于或等于所给数字表达式的最小整数。

20.表明设为变量

create proc  mysp_para

@tableName varchar(20)

as

declare @mm varchar(20)

set @mm='select * from '+@tableName

exec(@mm)--执行查询

21.获取字符串长度

len(name)

22.获取指定日期月份的第一天和最后一天

declare @date datetime
set @date='2014-05-10'
select CAST(DATEADD(day,1 - DAY(@Date), @Date) AS DATETIME) --指定日期月份的第一天日期
select DATEADD(day, -DAY(@Date), DATEADD(month, 1, CAST(@date AS DATETIME)))--指定日期月份的最后一天日期