sql基础复习


--1、while循环
declare @sum int
declare @i int
set @i=1
set @sum=0
while(@i<101)
begin
set @sum [email protected]+@i
set @[email protected]+1
if(@i>90)
print @i
end
print @sum

--2、goto语句
declare @num int
set @num=100
flag:
print @num
select @[email protected]+1
while(@num<106)goto flag
print ‘------------------‘
print @num

--3、表变量

declare @mytable table(nam nvarchar(50),num nvarchar(50))

insert into @mytable select ClassName,ClassNum from dbo.tb_Class

select * from @mytable

--4、局部临时表,全局临时表

--局部临时表
create table #temp_tb(
id int,
pwd nvarchar(50)
)

--全局临时表
create table ##temp_tb(
id int,
pwd nvarchar(50)
)

--5、批量导入数据并创建临时表
select ClassName,ClassNum into #temp from dbo.tb_Class
select * from #temp

--6、区间查询 between and (not between and)

select * from tb_class where classnum between 1200 and 1500

select * from tb_class where classnum not between 1200 and 1500

--7、in变量,is null is not null,去重复distinct

--8、随机查询、子查询

select top 1 * from tb_class order by newid()

--9、行号

select ‘行号‘=identity(int,1,1),classname,classnum into #temp from tb_class
select * from #temp

--模糊查询 like not like "% _ []"通配符

select * from tb_class where className like ‘高%[^三]‘

select * from tb_class where des like ‘[a-z]%‘

select * from tb_class where ClassNum like ‘[^1]%‘

select * from tb_class where des like ‘%100/%%‘ escape ‘/‘

select * from tb_class where des+ClassName like ‘%[二在]%‘

--case 语句、类型转换 cast显示转换
select *,班级=
case
when ClassNum>1500 then ‘大班‘
when ClassNum=1500 then ‘中班‘
when ClassNum<1500 then cast(ClassNum as nvarchar(20))
end
from tb_class

--类型转换 1,cast 2,Convert
select convert(nvarchar(20),getdate(),111)as 时间格式

--去除空格 rtrim ltrim

select ltrim(‘ 中国 人 ‘)as title

--截取字符串substring

select substring(‘中华人民共和国‘,3,2) as title

--字符插入sutff

select stuff(‘中华共和国‘,3,0,‘人民‘) as title

--计算字符长度 len
select len(‘中华人民共和国‘)

--字符串大小写lower upper
--字符串替换replace
select replace(‘中*华*人*民*共*和*国‘,‘*‘,‘-‘)

--获取字符所在位置

select substring(‘010-99998888‘,0,charindex(‘-‘,‘010-99998888‘))

--日期函数
select year(getdate())
select month(getdate())
select day(getdate())
select datepart(year,getdate())
select datepart(hh,getdate())

select datename(dw,getdate()) as 今天星期几

select datename(ww,getdate()) as 本周是一年的第几周

select datename(yy,getdate()) as 年份

select datename(dy,getdate()) as 今天是一年中的第几天

select datediff(d,‘2012-11-27‘,‘2012-11-30‘) as 相差天数
select datediff(hh,‘2012-11-27‘,‘2012-11-30‘) as 相差小时

select getdate(),dateadd(d,3,getdate()) as 增加三天
select getdate(),dateadd(hh,3,dateadd(d,3,getdate())) as 增加三天在增加三小时

--排序order by 笔画排序:Chinese_prc_stroke_cs_as_ks_ws,音序排序:chinese_prc_cs_as

select * from tb_class order by des collate Chinese_prc_stroke_cs_as_ks_ws

select * from tb_class order by des collate Chinese_prc_cs_as

--动态排序

declare @myorder int
set @myorder=2
select * from tb_class order by case @myorder
when 1 then classnum
when 2 then id
end
desc

--聚合函数,where(作用单行) 和 having(作用多行)区别

select count(distinct classname) from tb_class

--游标 sql语句面向一个集合操作,游标面向逐条记录的操作
declare cur_s cursor
for select * from tb_class
for read only --只读游标
for update of classname--更新游标

declare @cur_ss cursor--游标变量

open cur_s

fetch next from cur_s

while @@FETCH_STATUS=0
begin
fetch next from cur_s
end

close cur_s
--释放游标
deallocate cur_s

--存储过程是一组为了完成特定功能的SQL语句集合,创建Create、修改Alter、删除Drop
create procedure GetClassInfo
(
@id int,
@ClassName nvarchar(50),
@Sum int output--存储过程返回值一种情况
)
as
begin
select @Sum=sum(ClassNum)from tb_Class where id>@id and ClassName=@ClassName
declare @AllSum int
select @AllSum=sum(ClassNum)from tb_Class
return @AllSum--存储过程返回值另一种情况
end
go
declare @sum int
declare @AllSum int
EXEC @AllSum=GetClassInfo 1,‘高三‘,@sum output
select @sum as 总数,@AllSum as 全部总数

--重命名存储过程
exec sp_rename ‘GetClassInfo‘,‘ReNameGetInfo‘
--监视存储过程
exec sp_monitor
--返回参数含义
-- *last_run: 上次运行时间
--
-- *current_run:本次运行的时间
--
-- *seconds: 自动执行存储过程后所经过的时间
--
-- *cpu_busy:计算机CPU处理该存储过程所使用的时间
--
-- *io_busy:在输入和输出操作上花费的时间
--
-- *idle:SQL Server已经空闲的时间
--
-- *packets_received:SQL Server读取的输入数据包数
--
-- *packets_sent:SQL Server写入的输出数据包数
--
-- *packets_error:SQL Server在写入和读取数据包时遇到的错误数
--
-- *total_read: SQL Server读取的次数
--
-- *total_write: SQLServer写入的次数
--
-- *total_errors: SQL Server在写入和读取时遇到的错误数
--
-- *connections:登录或尝试登录SQL Server的次数

--自动执行存储过程
--sp_procoption [@procName=] ‘procedure‘, [@optionName=] ‘option‘, [@optionValue=] ‘value‘
-- [@procName=] ‘procedure‘: 即自动执行的存储过程
--
-- [@optionName=] ‘option‘:其值是startup,即自动执行存储过程
--
-- [@optionValue=] ‘value‘:表示自动执行是开(true)或是关(false)
exec sp_procoption @procName=‘masterproc‘, @optionName=‘startup‘, @optionValue=‘true‘

--自定义函数
--标量函数
create function myfunAdd(@a int,@b int)
returns int
as
begin
declare @c int
set @[email protected]+@b
return @c
end
go
declare @a1 int,
@b1 int,
@c1 int
set @a1=8
set @b1=7
set @c1=School.dbo.myfunAdd(@a1,@b1)
print @c1

--表值函数
create function GetTable()
returns table
as
return (select * from tb_class)

select * from School.dbo.GetTable()

--触发器,特殊的存储过程,嵌套触发器、递归触发器

create trigger mytrigger
on tb_Class
for update,delete,insert--三种触发器
as
update tb_student set age=age+1 where id =1

update tb_Class set des=‘???‘ where id =1
delete from tb_Class where id=6

--事务
begin try
begin transaction
insert into tb_class values(‘特色班‘,100,‘描述‘)
insert into tb_student([name],sex,age,classid) values(‘小刘‘,1,22,5)
commit transaction
end try
begin catch
rollback
end catch

--保存事务
begin transaction
insert into tb_class values(‘特色二班‘,100,‘描述‘)
insert into tb_student([name],sex,age,classid) values(‘小二‘,1,22,5)
save transaction save1
insert into tb_class values(‘特色三班‘,100,‘描述‘)
insert into tb_student([name],sex,age,classid) values(‘小叁‘,1,22,5)
rollback transaction save1
commit transaction

--事务并发控制
begin tran
select * from dbo.tb_Class with(holdlock)
waitfor delay ‘00:00:10‘
commit tran

update tb_Class set ClassNum=200 where id=12
select * from tb_Class

--视图

--创建约束,主键约束、外键约束、唯一约束、check约束、default约束

--创建表设置字段
create table ss
(
id int identity(1,1) not null constraint pk_id primary key

)

--修改表设置字段
alter table dbo.tb_Class
add constraint pk_id primary key(id)
-- drop constraint pk_id --删除主键
--add constraint un_ss unique(id)--唯一约束
add constraint ch_sex check (like ‘[0-1]‘)
add constraint de_sex default 1 for sex

alter table dbo.tb_student
add constraint fk_classid
foreign key(classid)
references tb_Class (id)

sql基础复习

时间: 2024-10-11 01:27:28

sql基础复习的相关文章

数据库复习2——SQL基础

数据库复习 CH4 SQL SQL(Structured Query Language,结构化查询语言)是通用的关系数据库系统操作语言,下面从几个方面来复习SQL基础 4.1 DDL SQL语句可根据其操作性质分成三类: DDL(Data Definition Language) DCL(Data Constraint Language) DML(Data Manipulation Language) DCL完成完整性和安全性的约束,也可以看作从属于DDL,下面介绍DCL除外的DDL部分SQL语

sql基础之DDL(Data Definition Languages)

好久没写SQL语句了,复习一下. DDL数据定义语言,DDL定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.常用的DDL语句包括create.drop.alter等等. 登录数据:mysql -uroot -p sql 命令一般以英文分号或者\g结束,注意这个\不是/. 1.查看数据库 show databases;注意这个后面的s. 2.创建数据库create database wangking;注意这里没有s. 3.选择数据库use siyecao;列出数据库中的表show ta

C#语言和数据库技术基础复习

整理了下C#语言和数据库技术基础,作为复习资料 第一章 一.c#和JAVA对比:1.c#用命名空间(namespace)java用包(package) 2.引入命名空间或包的关键字C#用using,JAVA用import 3.程序入口:C#的Main()有四种形式static void Main(string[] args) static int Main(string[] args) static void Main() static int Main() JAVA的MAIN()有一种形式 4

MySQL学习笔记_8_SQL语言基础复习

 SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 3)以"/*"开始,以"*/"结束的所有内容都是注释,可用于注释多行 二.数据库操作 1.创建数据库 create database db_name; db_name命名规则: 1)名称可由任意字母,数字,"_"或"$"组

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

(转载)SQL基础--&gt; 约束(CONSTRAINT)

感谢Leshami的分享,原文地址:http://blog.csdn.net/leshami/article/details/5711367 --============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完整性 实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键 域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合 参照完整性:不能引

SQL 基础之字符串和操作符使用(三)

SQL 基础之字符串使用 : 字符串可以是 SELECT 列表中的一个字符.数字.日期 但日期和字符只能在单引号中出现.每当返回一行时,字符串被输出一次 1.接上文使用过程中如果想把两个列串在一起,并加入一些自定义的显示,如下下图: select first_name || '  is a ' || job_id as "Emp Details" from employees; 2.显示first_name 的人的工资 是多少钱怎么显示: select first_name || '

Oracle实践--PL/SQL基础之同义词和序列

PL/SQL基础入门之同义词和序列             PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. 同义词: /*     同义词:现有对象的一个别名:    

Oracle实践--PL/SQL基础之表分区

PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. ---------------------------------------------