sqlserver常用基本预语法

use test
select * from sysobjects where xtype=‘u‘
select * from users
truncate table users --删除所有记录,性能高于delete

insert into users values(1,‘admin‘)
go
insert into users values(2,‘mrhu‘)
go
insert into users values(3,‘kiss‘)

select count(*) as counts from users  --比较truncate操作前后变化
go
truncate table users
go
select count(*) as counts from users  

print @@version  --系统版本
print @@servername  --服务器名

insert into users values(‘a‘,‘a‘) --错误编号
go
if @@error=245
	print ‘insert wrong‘

print @@language --版本语言信息
print @@datefirst  --一周的第一天从星期几算起
truncate table users
print @@cpu_busy

create table partment  --获取最近添加的标识列的值
(
	pid int identity(3,10),
	pname varchar(20)
)
insert into partment(pname) values(‘技术部‘)
print @@identity
select * from partment

declare @num int --局部变量
set @num=12
print @num

declare @strName varchar(20)
select @strName=‘state‘
print @strName
select pid,@strName from partment --??

declare @i int --if条件判断
set @i=9
if (@i>10)
	begin
		print ‘i morethan 10‘
	end
else
	begin
		print ‘i lessthan 10‘
	end

declare @i int --while循环控制
set @i=12
--print @i
while (@i<18)
  begin
	print @i
	set @[email protected]+1
	if @i<17
		continue;
	if @i>15
		break;
  end

--使用case分支判断
select username,‘管理员‘ as rank from users where username=‘admin‘
select username,‘普通用户‘ as rank from users where username=‘mrhu‘

select username,
case username
  when ‘admin‘ then ‘管理员‘
  when ‘mrhu‘  then ‘普通用户‘
else username
end as rank
from users

--系统函数
print ascii(‘ABC‘) --获取指定字符串中左起第一个字符的ASC码
print char(75)  --根据给定的ASC码获取相应的字符
print len(‘abcde‘) --获取给定字符串的长度
print lower(‘ABCDE‘) --转小写
print upper(‘abcde‘) --转大写
print ltrim(‘  abc abc d‘) --过滤左空格
print rtrim(‘  abc abc  ‘)	--过滤右空格
print abs(-123) --绝对值
print power(2,3) --2的3次方
print rand()*1000  --获取0--1000的随机数
print pi() --圆周率
print getdate() --系统时间
print dateadd(day,-3,getdate()) --3天前时间
print dateadd(hh,4,getdate())  --加上4小时,hour/hh,minute/mi,second/ss
print datediff(year,‘2005-1-1‘,getdate()) --指定时间和现在时间的年差
print datediff(mi,‘2005-1-1‘,‘2006-1-1‘)  --minute/mi,second/ss
print ‘abc‘+cast(456 as varchar) --字符串转换合并
print ‘abc‘+convert(varchar,456)  --字符串连接要保持类型一致
print convert(varchar(12), ‘2005-01-01‘)
print year(getdate())  --获取指定时间部分,year,month,day
print datepart(year,getdate())
print datepart(hh,getdate()) --小时
print datepart(mi,getdate()) --分钟
print datepart(ss,‘2005-2-1 12:30:50‘) --秒
print datepart(ms,getdate()) --毫秒
print host_id() --返回工作站标识号
print host_name() --获取主机名
print db_id(‘master‘)  --获取数据库编号
print db_name(4) --获取数据库名

create table student
(
	sname varchar(30),
	sbirthday datetime  --sbirthday datetime default (getdate())
)
-- 利用系统函数作为默认值约束
alter table student add constraint df_student_sbirthday default (getdate()) for sbirthday
insert into student(sname) values(‘mrhu‘)
insert into student values(‘admin‘,default)
select * from student
alter table student drop df_student_sbirthday --删除约束
sp_help student --显示表信息

select stuff(‘ABCDEF‘,2,1,‘GH‘)as test  --填充函数

create function countstudent(@sname varchar(12)) --自定义函数
returns int
 begin
	return (select count(*) from student where [email protected])
 end

select dbo.countstudent(‘admin‘) as counts --调用自定义函数
select * from sysobjects where xtype=‘FN‘

create proc p_countstudent  --存储过程创建
as
 select dbo.countstudent(‘mrhu‘) as counts
drop proc p_countstudent

exec p_countstudent 

sp_help student --查看表结构
sp_helptext p_countstudent  --查看存储过程内容 

if object_id(‘student2‘) is not null
	drop function student2
create function student2(@sname varchar(12))  --返回内联表值函数
returns table
as
return
(
	select * from student where [email protected]
)
select * from dbo.student2(‘admin‘) --调用函数

create function student3(@sname varchar(12))  --表值函数
returns @studentTest table
(
	用户名 varchar(12),
	注册时间 datetime
)
as
 begin
	insert @studentTest
	select * from student as s where [email protected]
	return
 end

select * from student3(‘mrhu‘) --调用函数
drop function student3

sp_helptext student

select distinct sname from student --剔除重复

select * from users where id>all(select id from users where id<3)
select * from users where id>=any(select id from users)

if exists(select * from users where username=‘mrhu‘)
print ‘exists‘
else
print ‘not exists‘

select username,id from users where username=‘mrhu‘
union
select ‘合计:‘,sum(id) from users

insert into users values(4,‘number0‘)
insert into users values(5,‘number1‘)
insert into users values(6,‘number4‘)
insert into users values(7,‘number3‘)
insert into users values(8,‘number4‘)
sp_help users

select * from users
update users set username=‘number2‘ where id=6

declare @str varchar(200)  --执行带变量的sql
declare @i int
set @i=4
set @str=‘select top ‘+cast(@i as nvarchar(20))+‘ from users‘
--exec(@str)
exec sp_executesql @str

EXECUTE sp_executesql
          N‘select * from users where [email protected]‘, --select top @i * from users 出错???
          N‘@i int‘,
		  @i = 4;

create proc usersPage  --分页查询模拟测试
@CurrentPageSize int,
@PageSize int,
@CurrentPage int
as
Declare @strSql nvarchar(400)
set @strSql = ‘select * from
  (select top ‘ + convert(nvarchar(4), @CurrentPageSize) + ‘ *
  from (select top ‘ + convert(nvarchar(4),(@PageSize * @CurrentPage)) + ‘ * from users) as tt
  order by id desc) as stt
  order by id‘
exec sp_executesql @strSql    

exec userspage 4,3,2

use test
select * from sysobjects where type like ‘%f%‘

sp_helptext usersPage
sp_helptext ProcTest

declare cur_exp cursor for select * from users --游标定义
open cur_exp
fetch cur_exp			--提取游标
fetch next from cur_exp
close cur_exp
deallocate cur_exp  --释放游标
select @@fetch_status --游标执行状态0(fetch执行成),-1(执行失败或行不存在),-2(行不存在)

create table Book
(
	title varchar(50),
	price numeric(9,3)
)
insert into Book values(‘book1‘,95.00)
insert into Book values(‘book2‘,45.00)
insert into Book values(‘book3‘,65.00)
insert into Book values(‘book4‘,99.00)
update Book set price=155.00 where title=‘book2‘
delete  from Book
select * from Book

=====================================================
           以下部分需要细看
=====================================================

--使用冒泡排序找出Book表中最贵的书
declare cur_book cursor for select title,price from Book
open cur_book
declare @title varchar(50)
declare @price numeric(9,3)
declare @title_temp varchar(50)
declare @price_temp numeric(9,3)
fetch cur_book into @title,@price
fetch cur_book into @title_temp,@price_temp
while @@fetch_status=0
 begin
	if @price<@price_temp
	  begin
		set @[email protected]_temp
		set @[email protected]_temp
	  end
	fetch cur_book into @title_temp,@price_temp
 end
close cur_book
deallocate cur_book
print ‘最贵的书是:‘[email protected]+‘ 价格:‘+convert(varchar(20),@price)

--通过存储过程,使用冒泡排序寻找最贵的书
create proc Book_GetMaxprice
as
 declare cur_book cursor for select title,price from Book
 open cur_book
 declare @title varchar(50)
 declare @price numeric(9,3)
 declare @title_temp varchar(50)
 declare @price_temp numeric(9,3)
 fetch cur_book into @title,@price
 if @@fetch_status<>0
  begin
	print ‘没有图书记录‘
	close cur_book
	deallocate cur_book
	return
  end
 fetch cur_book into @title_temp,@price_temp
 if @@fetch_status<>0
  begin
	print ‘最贵的书是:‘[email protected]+‘ 价格:‘+convert(varchar(20),@price)
	close cur_book
	deallocate cur_book
	return
  end
 while @@fetch_status=0
 begin
	if @price<@price_temp
	  begin
		set @[email protected]_temp
		set @[email protected]_temp
	  end
	fetch cur_book into @title_temp,@price_temp
 end
 close cur_book
 deallocate cur_book
 print ‘最贵的书是:‘[email protected]+‘ 价格:‘+convert(varchar(20),@price)

drop proc Book_GetMaxprice
exec Book_GetMaxprice

select * from users
insert into users values(10,‘2;5;9‘)
delete from users where id=10
select * from users where username like ‘%‘+cast(id as varchar(12))+‘%‘

create trigger myTrigger
select * from sys.triggers
select * from 

create trigger mytrigger
on student
for insert
as
insert into student(sname) values(‘mrhu‘)
drop trigger mytrigger
sp_helptext mytrigger			

alter database test set recursive_triggers off												

create table emp_mgr
(
	Emp int primary key
)
select * from student
insert into student(sname) values(‘admin‘)

sp_helptrigger student --查看与表相关的触发器
select * from users

begin transaction
delete from users where id=12
if @@error <>0
	rollback tran
insert into users values(10,‘test‘)
if @@error<>0
	begin
		print ‘执行错误!‘
		rollback tran
	end
else
commit tran

  

时间: 2024-10-12 15:23:26

sqlserver常用基本预语法的相关文章

SQLServer 常用的基本语法

选择: select * from table1 where 范围 插入: insert into table1(field1,field2) values(value1,value2) 删除: delete from table1 where 范围 更新: update table1 set field1=value1 where 范围 查找: select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序: se

SqlServer 常用分页方法总结

SqlServer 常用分页方法总结 下面示例总结了,SqlServer数据库 常用分页方法,仅供学习参考 A. 使用 RowNumber 和 Between And 组合分页: /********** 使用 RowNumber 和 Between And 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging @pageIndex int, --页索引 @pageSize int, --页大小 @SearchKey Nvarchar(10)

SQLserver 转换Mysql 一些语法使用的区别

1.存储过程的语法各式eg:DELIMITER $$ CREATE PROCEDURE test_p_add9( p_name VARCHAR(100), p_test VARCHAR(100), p_age INT, OUT o_newid INT) BEGIN INSERT INTO table_test (f_name,f_test,f_age,f_date) VALUES (p_name,p_test,p_age,NOW()); SET o_newid=LAST_INSERT_ID();

SQL-SERVER 常用数据类型

SQL-SERVER 常用数据类型 作者声明: 第一次写博客,难免有些不足的地方,再就是本人初涉软件开发这一行业,是个不折不扣的小白,文章中肯定也会出现一些错误的地方,希望发现错误的朋友们可以及时的指出来,不足的地方还请各路大神们多多指教,以便本人参考和学习,多谢. 整数数据类型: Tinyint Smallint Int Bigint Bit 浮点数据类型: Real float 数字数据类型: decimal numeric 货币数据类型: Money smallmoney 日期时间数据类型

grep,awk和sed的常用命令和语法

Grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:“m y s t r i n g”.这样做有两个原因,一是以防被误解为 s h e l l命令,二是可以用来查找多个单词组成的字符串,例如:“jet plane”,如果不用双引号将其括起来,那么单词 p l a n e将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息.在调用变量时,也应该使用双引号,诸如: g r e p“$ M Y VA R”文件名,如果不这样,

SQLSERVER常用系统表

1.查看表和视图SELECT * FROM sys.objects WHERE object_id = object_id('表名或视图名')在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法 如下: if object_id('tb_table') is not null print 'exist' else print'not exist' 如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要

sqlserver常用数据类型(精炼版)

一:系统数据类型 2.浮点数据类型 3.字符数据类型 4.日期和时间数据类型 5.文本和图形数据类型 6.货币数据类型 7.位数据类型 8.二进制数据类型 9.其他数据类型 二:自定义数据类型   数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源.  Sql Server 还能自动限制每个数据类型的取值范围,例如定义了

破解SQLServer for Linux预览版的3.5GB内存限制 (RHEL篇) 转

https://www.ancii.com/database/30842.html 微软发布了SQLServer for Linux,但是安装竟然需要3.5GB内存,这让大部分云主机用户都没办法尝试这个新东西 这篇我将讲解如何破解这个内存限制 要看关键的可以直接跳到第6步,只需要替换4个字节就可以破解这个限制 首先按照微软的给出的步骤安装和配置 https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-red-hat 到执

关系数据库常用SQL语句语法大全

创建表 语法 CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条件]]…); 列级完整性约束条件有NULL[可为空].NOT NULL[不为空].UNIQUE[唯一],可以组合使用,但是不能重复和对立关系同时存在. 示例 -- 创建学生表 CREATE TABLE Student ( Id INT NOT NULL UNIQUE PRIMARY KEY, Name VAR