欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【SqlServer】SqlServer基本语法

程序员文章站 2024-02-22 23:32:46
...

数据库操作

创建数据库

create database School

使用数据库

use School

删除数据库

drop database School

如果存在,则删除数据库

if(exists(select * from master.dbo.sysdatabases where dbid = DB_ID('test')))
begin
    use master
  alter database School
  SET single_user
  with rollback immediate 
  drop database School
end

用户模式
MULTI_USER 多用户模式,任何用户都可以连接
SINGLE_USER 单用户模式,数据库一次只能有一个连接,当维护数据库时启动
RESTRICTED_USER 限制模式,

回滚 ROLLBACK,即是在执行操作过程中,如果出现错误,则所有的操作都取消,
比如在添加数据操作时,共要插入10条数据,当在第3条数据时插入出错,这是就需要使用回滚,即出错时全部操作都取消插入

 


表操作


创建表

create table Student(--学生表
    ID int identity(1000,1) primary key,--ID
    Name nvarchar(64) default 'Name',--姓名
    Grade int, --年级
    Class int, --班级
    Score int) --成绩

identity(1000,1) 表示是否标识,即是否自增,1000标识自增的初值,1表示增量
primary key 表示主键

删除表

drop table Student

增加列

alter table Student add Description int

插入数据
一次插入一条数据

insert into Student(Name,Grade,Class,Score) values('Jack',1,3,90)

一次插入多条数据

insert into Student(Name,Grade,Class,Score) values
('Tom',2,2,80),
('Jane',3,2,85),
('Mary',2,1,95),
('Allen',2,2,70)

删除全部数据

delete from Student

删除年级为1的学生

delete from Student where Grade = 1

更新表

update Student set Grade = 3 where Name ='Tom'

查询语句

select * from Student

查询不重复的记录,比如查询各个年级

select distinct Grade from Student

查询数据总数

select Count(*) from Student

模糊查询

select * from Student where Name like '%J%'

% 标识0个或多个字符

指定查询范围

select * from Student where Score >= 80 and Score <= 90

select * from Student where Score between 80 and 90

排序 升序

select * from Student order by Grade,Class desc

排序 降序 (排序的每个字段都需要加desc)

select * from Student order by Grade desc,Class desc

求和

select sum(Score) from Student

求平均值

select avg(Score) from Student

求最大值

select max(Score) from Student

求最小值

select min(Score) from Student

查询最后一个插入的Identity值,比如字段ID设置为自增后插入数据,在插入语句中ID是不用指明的,想获取ID需再次查询

select scope_Identity() 

查询插入数据Rose的ID

insert into Student(Name,Grade,Class,Score) values('Rose',3,1,90)
select scope_Identity()

成绩表

create table Score
(ID int identity(1,1),
StudentID int,
Chinese float,
Math float 
primary key(ID,StudentID)
)

删除表

drop table Score

设置外键,将StudentID设置为Student的外键

alter table Score add constraint FK_StudentID foreign key (StudentID) references Student(ID)


条件语句
if else

declare @b bit
set @b = 1
if(@b = 1)
begin 
    print '1'
end
else
begin
    print '0'
end

输出“1”

when then

declare @stateID int
declare @state nvarchar(10)
set @stateID = 404
set @state =case
when @stateID=200 then '成功'
when @stateID=404 then '未找到'
when @stateID=503 then '服务不可用'
end
print @state

输出“未找到”

循环语句

declare @i int
declare @sum int

set @i = 0
set @sum = 0

while @i<10 
begin 
    set @sum += @i
    set @i +=1
end

print @sum

输出“45”