sql简单语句

来源:互联网 发布:淘宝破损补寄怎么设置 编辑:程序博客网 时间:2024/06/11 20:53
insert into Employee(EmpCode, EmpName, EmpGender, EmpDateTime, EmpAge, EmpAddress, EmpPhone, DepId, EmpEmail, EmpIsMary) values('1111222222222222','laojiang','男','2014-3-10',32,'北京中国','123456',1,'zhang@126.com',0)


select * from Employee where EmpIsMary=0
--向表中所有的字段插入值,可以省略表后的字段名。(不提倡)
--如果只插入部分列,那么必须写字段名。
insert into Employee values('11113333222','laozhao','男','2014-3-10',32,'北京中国','123456',1,'zhang@126.com',0)


set IDENTITY_INSERT Employee on--可以向主键列插入值.
insert into Employee(EmpCode, EmpName, EmpGender, EmpDateTime, EmpAge, EmpAddress, EmpPhone, DepId, EmpEmail, EmpIsMary) values('11113333222','laozhao','男','2014-3-10',32,'北京中国','123456',1,'zhang@126.com',0)
set IDENTITY_INSERT Employee off


------------------------------------------------
insert into dbo.DepartMent(DepName) values(N'研发部')--防止插入中文出现乱码.
--------------------------------------更新---------------------------------------
update Employee set EmpName='laozhao222'--表中所有的记录都修改了.


update Employee set EmpName='laozhao222' where EmpId=2000


select * from Employee


--or或者 ,and ,not
update Employee set EmpName='laozhao222',EmpAge=30 where EmpId=2000 or EmpAge>30
--将所有"男"生的年龄减少10岁.
update Employee set EmpAge=EmpAge-10 where EmpGender='男'


update Employee set EmpAge-=10 where EmpGender='男'


update Employee set EmpAge=EmpAge+10 where EmpGender!='男'


update Employee set EmpAge=EmpAge-10 where EmpGender<>'男'--不等于
-----------------------------------数据删除------------------------
 delete from dbo.Employee --表中所有的数据都删除.表的结构保留.
 drop table Employee--删除表
 delete from Employee where EmpId=2001 
 
 --删除表中所有的数据,同时编号再回到起始位置.
 truncate table Employee--删除表中所有的数据.删除完成以后再次插入记录,编号从开始计算.
 
 ---------------------------
 --update TblScore set tEnglish=tEnglish+2,tMath=tMath+2
 
create table Employees
(
EmpId int identity(1,1),
EmpName varchar(50),
EmpGender char(2),
EmpAge int,
EmpEmail varchar(100),
EmpAddress varchar(500)
)




create table Department
(
DepId int identity(1,1) primary key,
DepName varchar(50) unique not null

)


create table Employees
(
EmpId int identity(1,1),
EmpName varchar(50),
EmpGender char(2),
EmpAge int,
EmpEmail varchar(100),
EmpAddress varchar(500)
)




create table Department
(
DepId int identity(1,1) primary key,
DepName varchar(50) unique not null
)
select * from dbo.Employees
--============手动增加约束==========
--手动删除一列(删除EmpAddress列)
alter table Employees drop column EmpAddress


--手动增加一列(增加一列EmpAddr varchar(1000))
alter table Employees add EmpAddr varchar(1000)


--手动修改一下EmpEmail的数据类型(varchar(200))
alter table Employees alter column EmpEmail varchar(200)


--为EmpId增加一个主键约束
alter table Employees add constraint PK_Employees_EmpId   primary key(EmpId)


--非空约束,为EmpName增加一个非空约束
alter table Employees alter column EmpName varchar(50) not null


--为EmpName增加一个唯一约束
alter table Employees add constraint QU_Employees_EmpName unique(EmpName)


--为性别增加一个默认约束,默认为'男'
alter table Employees add constraint DF_Employees_EmpGender default('男') for EmpGender


--为年龄增加一个检查约束:年龄必须在0-120岁之间,含岁与岁。
alter table Employees add constraint CK_Employees_EmpAge check(EmpAge>0 and EmpAge<120)


--创建一个部门表,然后为Employee表增加一个DepId列。
alter table Employees add DepId int


--增加外键约束
alter table Employees add constraint FK_Employees_DepId foreign key(DepId) references dbo.Department(DepId)


------------------------------------------


alter table Employees drop constraint QU_Employees_EmpName,DF_Employees_EmpGender,CK_Employees_EmpAge






--------------------基本查询-----------------------------
use Itcast2014
select * from dbo.TblStudent--*:表示所有的列.


select tSName,tSAddress from TblStudent--查询部分列.


select * from TblStudent where tSGender='女' and tSAge>20


select tSName as 姓名,tSAddress as 地址 from TblStudent--as:跟的是别名.


select  [姓  名]=tSName ,tSAddress as 地址 from TblStudent--遇到一些非法的名称可以用[],或者一些关键字。select [count]


select 1+1


select getdate()--显示系统时间.
-------------------------TOP-------------------------------------


select top 5 * from TblStudent where tSGender='女' and tSAge>20--取前5条记录


select top (1*5) * from TblStudent where tSGender='女' and tSAge>20


select top 50 percent * from TblStudent--50% 如果计算出是17.5,那么取18. 


--top与order by 连用有意义.


--order by 对数据进行排序,asc表示升序排序,默认也是升序. desc:表示降序
select top 5 * from TblStudent where tSGender='女' and tSAge>20 order by tSAge asc


select top 5 * from TblStudent where tSGender='女' and tSAge>20 order by tSAge desc


--先按照年龄降序排序,如果年龄相同再按照学号升序排序。
select top 5 * from TblStudent where tSGender='女' and tSAge>20 order by tSAge desc, tSId asc
--------------------------Distinct -------------------------
select * from dbo.TblStudent


select Distinct tsname,tsgender from TblStudent--对真个查询结果集去重复。


select Distinct * from dbo.TblStudent--不会去重复,因为编号列不重复。


-------------------------聚合函数----------------
select * from TblScore


select 数学成绩最高分=max(tMath) from TblScore --获取最大值.


select 数学成绩最低分=min(tMath) from TblScore


select 数学成绩总和=sum(tMath) from TblScore


select 数学平均分=avg(tMath) from TblScore--注意,由于tMath类型是小数,所以计算出的平均值带有小数。如果该字段类型是整数。 求出的数学总分是663,那么“整数/整数”,结果还是整数.可以乘以1.0.


select count(*) from TblScore--总的记录数.对行进行聚合操作.


select count(tEnglish) from TblScore--聚合函数不会对空值(NULL)进行计算。


select 英语平均分=avg(tEnglish) from TblScore--也不会对空值进行运算.


select 英语平均分=sum(tEnglish)/count(*) from TblScore


--求出每个人的平均成绩。
select tEnglish+10 from TblScore


update TblScore set tEnglish=0 where tEnglish is null--注意不能用'='或'<>'


select tsId, 平均成绩=(tEnglish+tMath)/2 from TblScore


-------------------------------条件查询--------------------------------
select * from dbo.TblScore where tSid=3 or tSid=5 or tSid=7


select * from dbo.TblScore where tSid in(3,5,7)--在指定的范围内查询.


select * from dbo.TblScore where tSid=3 or tSid=5 or tSid=4


select * from dbo.TblScore where tSid in(3,4,5)--如果查询的范围是连续的,最后不要用in.


select * from dbo.TblScore where tSid>=3 and tSid<=5 --可以更好的利用索引。提高的查询的效率.


select * from dbo.TblScore where  tSid between 3 and 8 


--------------------------模糊查询.-----------------------------


select * from dbo.TblStudent




select * from dbo.TblStudent where tSName like '张%'-- %:是一个通配符,表示单个(0个)或任意的多个字符。使用索引.
 
 select * from dbo.TblStudent where tSName like '张%妹'
 
  select * from dbo.TblStudent where tSName like '张_妹'--:_表示任意的单个字符.
 
 --[]与正则表达式的含义是一样的,表示在指定范围内的任意一个字符.


select * from dbo.TblStudent where tSName like '张[0-9a-z]妹'


select * from dbo.TblStudent where tSName like '张[^0-9a-z]妹'


 select * from dbo.TblStudent where tSName like '%[_]%'--注意.
 
 select * from dbo.TblStudent where tSName like '%[_]'
 
 select * from dbo.TblStudent where tSName not like '张%'
 
 select * from dbo.TblStudent where tSName like '张_'
 
 ---Asp.Net高级编程
 select * from books  where title like '%Asp.Net高级编程%'--1.性能太差。无法使用索引。2.无法对搜索的内容进行分词,搜索的精度太低了。--项目.Lunce.Net+盘古分词.
 ---------------------------------排序-----------------------------------
 --获取成绩最高的5个人.
 
 
 select top 5 tSId,tMath from dbo.TblScore order by tMath desc
 
 --获取平均成绩最高的5个人.
 select top 5 tSId as 学号,平均成绩=(tMath+tEnglish)/2 from TblScore order by 平均成绩 desc
 
  select top 5 tSId as 学号,平均成绩=(tMath+tEnglish)/2 from TblScore   order by (tMath+tEnglish)/2 desc  
  
  --SQL执行顺序
  select top 5 tSId as 学号,平均成绩=(tMath+tEnglish)/2 from TblScore order by 平均成绩 desc
  
  ---先执行 from TblScore
  --在执行  where
  ---  select 
  ---  order by 最后执行。优先级最低.

0 0
原创粉丝点击