Alan的SQL语句学习笔记

1.数据库的创建,删除,重命名,添加文件

/*删除数据库*/
drop database liuyifei
 
/*创建数据库*/
create database Girlfirend
on primary
(
   name='story',
   filename='D:\story.mdf',
   size=8mb,
   maxsize=unlimited
)
log on
(
  name='lovely',
  filename='D:\lovely.ldf',
  size=200mb,
  maxsize=unlimited
)
go
/
 
/*更改数据库的名字*/
alter database Girlfirend
modify name=liuyifei
 
/*对一个数据库添加文件*/
alter database liuyifei
add file 
(
  name=xixi,
  filename='D:\xixi.ndf'
)

2。数据表的创建,删除,截断,字段相关操作

/*创建数据表*/
create table trait 
(
  age int not null,
  nickname  varchar(20) ,
  superpower varchar(30),
  glamour varchar(10),
)

/*创建表的主键*/
create table movie
(
  age int primary key,
  nickname  varchar(20) ,
  superpower varchar(30),
)
/*注意主键是用来限制列的唯一性的,
一个表只能有一个主键,
但是一个主键可以有多个列组成*/ 


/*添加字段*/
alter table movie
add premiere varchar(50)

/*修改字段长度*/
alter table movie
alter column premiere varchar(30)

/*删除字段*/
alter table movie
drop column premiere


/*删除表*/
drop table movie

/*截断表——只删除表的数据,不删除表的本身*/
truncate table movie

/*重命名表*/
sp_rename movie,film

3.数据库主键,约束,索引,表的更新,插入和删除

/*按住ctrl可以设置多个主键(联合主键)*/

/*设置主键约束,图形创建时要设定默认值,否则保存不了*/
alter table trait
add
constraint pk_trait primary key
(
   age
)

/*设置外键约束,设置外键约束时,references后的必须是一个主键*/
alter table film
add
constraint fk_film foreign key (stuno)
references trait(age)

/*设置检查约束*/
alter table film
add
constraint ck_credit
check(credit like '1%')

/*经常控制事务的语句*/
begin transaction--本地事务的开始
begin distribute transaction--分布式事务的开始
commit transaction --事务的提交
rollback transaction--事务回滚,可以回到起点,也可以回到保存点 
rollback--回滚,跳回到某个点
commit--提交
save transaction--设置保存点
set implicit_transactions on--隐式事务
read uncommitted--未提交读取,减少并发控制的开销
read committed--提交读取,
repeatable read --重复读取
serializable --隔离级别最高,建议少用,影响系统用性能

/*显示事务*/
begin transaction film
insert into film(age,credit,superpower)values(7,8,'flash3')
update film set superpower='lovely3'where age=7
commit transaction
--一直查询超时执行错误,这个问题还没有解决

/*隐式事务*/
set implicit_transactions on
insert into liuyifei.dbo.film(age,credit,superpower)values(9,9,'SQL')
commit
set implicit_transactions off

/*查看活跃事务*/
begin transaction
delete from film
with(tablockx)--使用锁
where age=9
dbcc opentran(liuyifei) --使用dbcc opentan 查看最早的活动事务

/*索引的创建*/
create unique index inx_film
on film(age)

delete from film--删除表中数据

/*强制索引查询,一般查询某一列的数据才使用索引*/
select * from film
with(index(inx_film))
where age=1--加了where就叫做强制

/*查询索引*/
sp_helpindex film

/*索引禁用与重启*/
alter index inx_film
on film
diable--禁用索引,将disable换成rebuild

/*索引重命名*/
sp_rename  'film.inx.film','ix.film','INDEX'--报错了,这个地方还没有成功....

sp_helpindex film

4. 查询

/*查询语句*/

--查询全部数据
select * from stu_info

--查询局部数据
select name,sex,major from stu_info

--查询局部分非重复数据 
select distinct sex from stu_info

--设置别名
select name as 'nickname' from stu_info

--选择表中特定数据插入新表(表)
select major into fake from stu_info 
select * from fake

--连接字段
select birthday+mark as '毫无意义的数字' from stu_info 

--按范围查询
select name,mark from stu_info 
where mark between 8 and 10 

select name,sdept from stu_info

select name from stu_info
where name like('田%')

select name mark from stu_info
where mark>0

--按排序查询(desc降序,asc升序,默认升序排列)
select * from stu_info
order by mark desc,stu_ID --排序可以多个,类似C++定义排序

select name,sdept from stu_info
order by 2 desc--按相应位置字段的长度排序  

select top 50 percent name,sdept from stu_info--查询前百分之50的数据
order by 2 desc--按相应位置字段的长度排序

select * from stu_info 
where mark>7
order by stu_ID  --多层嵌套时,order必须在where的后面 

select * from stu_info
where name like '[田敏]%'--中括号代表范围,选取的是姓田的或者姓敏的

 select * from stu_info 
 --函数查询
select sum(mark) from stu_info --求和
select avg(mark) from stu_info --求平均值
select max(mark),min(mark) from stu_info --求最值
select count(name) from stu_info --求元组的数量
select CONVERT(char,GETDATE(),101); --转换函数

--分组查询
select major from stu_info group by major --去除了重复值

select major ,count(*) as '男生人数' 
from stu_info 
where sex='男' 
group by MAJOR  
order by count(*) --嵌套,order by永远在其他语句的后面

select major,count(*) as '人数'
from stu_info 
group by major
having MAJOR in ('计算机科学与技术','会计学')
order by COUNT(*) desc

--having语句用于筛选组,where语句用于筛选记录
--having语句中可以使用聚合函数,where不能
--having语句中的字段必须是被group by 包含,where任意

 --连接查询
 select * from stu_info,stu_grade --无条件连接

 select * from stu_info,stu_grade 
 where  stu_info.stu_ID=stu_grade.STU_ID--等值连接     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值