当前位置:  数据库>sqlserver

SQL Server 数据库基本操作语句总结

    来源: 互联网  发布时间:2014-10-11

    本文导语:  代码如下:--sql基本操作 --创建数据库 create database Studets --创建表 create table student ( sno char(5), sname char(20), ssex char(2), sage smallint, sdept char(15) ) create table course ( cno char(3), cname char(30), cpno char(3), ccredit smallint ) create table sc ( sno char(...

代码如下:

--sql基本操作

--创建数据库

create database Studets

--创建表

create table student ( sno char(5), sname char(20), ssex char(2), sage smallint, sdept char(15) )

create table course ( cno char(3), cname char(30), cpno char(3), ccredit smallint )

create table sc ( sno char(5), cno char(3), grade int )

--查看表信息

select * from student select sno as 学号 from student select * from course select * from sc

--修改表

--插入列

alter table student add  scome  datetime

--修改列的字段类型 alter table student alter column scome  char(50)

--删除 --删除列

alter table student drop column scome

--删除表 drop table student drop table course drop table sc

--完整性约束实现

--sno 非空唯一,ssex检查约束, sage默认大小

create table student ( sno char(5) not null unique, sname char(20), sex char(2), sage smallint default 20, sdept char(15), constraint sex check(sex in('男','女')), )

--删除表的约束 alter table student drop  constraint ssex

--添加字段约束 alter table student add constraint ssex check(sex in('男','女'))

--添加主键约束 alter table student add constraint PK_SNO primary key(sno) create table course ( cno char(3) not null unique, cname char(30), cpno char(3), ccredit smallint )

--关联表主键已经存在,可以如下操作添加主键和外键约束

alter table course add constraint PK_CNO primary key(cno), constraint FK_CPNO foreign key(cpno) REFERENCES sc(cno)

create table sc

(

sno char(5) foreign key references student(sno),

cno char(3) foreign key references course(cno),

grade int,

constraint PK_SC primary key(sno,cno)

)

ALTER TABLE [dbo].[sc] DROP CONSTRAINT [FK__sc__sno__0F975522]

ALTER TABLE [dbo].[sc] DROP CONSTRAINT [PK_SC]

ALTER TABLE [dbo].[sc] DROP CONSTRAINT [PK_SC]

--创建sc后,通过如下修改主外键

alter table sc add constraint PK_SC primary key(sno,cno),

constraint FK_SNO foreign key(sno) references student(sno),

constraint FK_CNO foreign key(cno) references course(cno)

--创建索引。

分为聚簇索引(clustered物理顺序)和非聚簇索引(nonclustered逻辑顺序,可多个)

代码如下:

--not null约束字段时候。会创建一个系统内置的约束键值,并且这种非空判断,通过索引查询实现 --的,索引默认创建一个系统索引

create unique index STUsno

on student(sno)

create unique index COUcno

on course(cno)

create unique index SCno

on sc(sno asc,cno desc)

drop index SCno on sc

--显示表的数据和索引的碎块信息 DBCC SHOWCONTIG

--插入数据 select * from student

alter table student alter column sno char(10)

insert into student values('10021','张三','男',20,'计科系')

insert into student values('10022','王朝','女',18,'软件')

insert into student values('10023','朱元璋','男',20,'管理')

insert into student values('10024','刘彻','男',18,'军事')

insert into student values('10025','刘表','男',20,'商学系')

insert into student values('10026','白居易','男',19,'文法')

insert into student values('10027','李清照','女',24,'文法')

select * from course insert into course  values('001','数据库','005',4)

insert into course  values('002','高等数学','',2)

insert into course  values('003','信息系统','001',4)

insert into course  values('004','操作系统','006',2)

insert into course  values('005','数据结构','007',3)

insert into course  values('006','数据处理','',2)

insert into course  values('007','C语言','006',5)

select * from sc insert into sc values('10021','002',100)

insert into sc values('10021','001',88)

insert into sc values('10021','006',100)

insert into sc values('10021','007',68)

insert into sc values('10022','002',100)

insert into sc values('10023','005',30)

insert into sc values('10024','002',100)

insert into sc values('10024','006',56)

select * from student --查询操作

--查询 select * from student select * from course select * from sc

--去掉重复行 select distinct sno from sc

--格式化查询

select sname as '姓名',2013-sage as '出生日期' from student

select sname,'出生日期',2013-sage   from student

select 姓名=sname,出生日期=2013-sage  from student

--条件查询

select * from course where ccredit>3

select * from course where ccredit between 2 and 5

select * from course where ccredit> 2 and ccredit100 -

-连接查询、

--等值连接

select distinct student.*,sc.* from student,sc where student.sno=sc.sno

--自身连接

select distinct A.*,B.* from student A,sc B where A.sno=B.sno

select B.sname as '同一个系' from student A,student B where A.sname='白居易' and A.sdept=B.sdept

--外连接

select A.*,B.* from student  A left join sc B on A.sno=B.sno

select A.*,B.* from student  A right join sc B on A.sno=B.sno

select A.*,B.* from student  A FULL join sc B on A.sno=B.sno

--复合条件连接

select * from sc select * from course

select distinct  A.*,B.* from student A,sc B where A.sno=B.sno and B.grade>99 and B.cno='002'

select distinct  A.*,B.*,C.* from student A,sc B,course C where A.sno=B.sno and B.cno=C.cno and B.grade>99 and B.cno='002'

--字符串连接查询

select sname+sno from student

select distinct sname from student ,sc where student.sno=sc.sno

select  sname from student ,sc where student.sno=sc.sno and student.sno not in (select sno from sc where grade(select AVG(sage) from student)

--是否存在的查询

select * from student where exists(select * from sc where sno=student.sno)

select * from student where not exists(select * from sc where sno=student.sno)

--sql创建用户 sys.sp_addlogin bnc,bnc,Studets sp_adduser bnc,bnc

--权限分配和收回

grant select on student to bnc

select * from student

revoke select on student from bnc

--视图的创建

create view VIEW_STUGrade(学号,姓名,课程,成绩)

as

select student.sno,student.sname,course.cname,sc.grade from student,course,sc

where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件'

--查看视图

select * from VIEW_STUGrade

--视图修改

alter view VIEW_STUGrade(学号,姓名,课程,成绩)

as

select student.sno,student.sname,course.cname,sc.grade from student,course,sc

where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件'

with check option

--更新失败后不影响视图查看

--视图更新

update VIEW_STUGrade set 姓名='王超' where 学号='10022' select * from student where  sno='10022'

/* 1,可更新视图:   a,单个基本表导出的 2,不可更新视图   a 两个以上基本表导出的   b 视图字段来自表达式或者函数   c 嵌套查询的表   d 分组子句使用distinct */

--删除视图 drop view VIEW_STUGrade

 --高级sql编程

--数据类型1,int 2,smallint 3,tinyint (0--255) 4,bigint 5char固定长度@b

print '最小值是:'+@a

else

print '最大值是:'+@b

--waitfor间隔一段时间执行

waitfor delay '00:00:04' print '推迟4秒执行'

waitfor time '17:45:50' print '等待这一时刻执行'

--创建函数

CREATE FUNCTION GetTime (    @date1 datetime,   @date2 datetime )

RETURNS TABLE

AS RETURN ( 

select datediff(dd,@date1,@date2) 日差,datediff(mm,@date1,@date2) 月差,  datediff(yy,@date1,@date2) 年差

)

--创建存储过程,

--查看

GO create proc [dbo].[sel] (

@sno char(10)

)

as

select * from student where sno=@sno

exec sel @sno='10021'

--查看

GO create proc sel2

as

select * from student

exec sel2

--修改

GO create proc updat @sno char(10), @sex char(2)

as

update student set sex=@sex where sno=@sno

select * from student  exec updat @sno='10021', @sex='女'

--删除

GO create proc dele @sno char(10)

as

delete student where sno=@sno

select * from student

exec dele @sno='10029'

--插入

GO create proc inser @sno char(10), @sname char(20), @sex char(2), @sage smallint, @sdept char(15)

as

insert into student values(@sno,@sname,@sex,@sage,@sdept)

exec inser @sno='10029', @sname='tom', @sex='男', @sage=100, @sdept='sc' select * from student

--查询操作

--查询

select * from student select * from course select * from sc

--去掉重复行 select distinct sno from sc

--格式化查询

select sname as '姓名',2013-sage as '出生日期' from student

select sname,'出生日期',2013-sage   from student

select 姓名=sname,出生日期=2013-sage  from student

--条件查询

select * from course where ccredit>3

select * from course where ccredit between 2 and 5

select * from course where ccredit> 2 and ccredit100

--连接查询、 --等值连接

select distinct student.*,sc.* from student,sc where student.sno=sc.sno

--自身连接

select distinct A.*,B.* from student A,sc B where A.sno=B.sno select B.sname as '同一个系' from student A,student B where A.sname='白居易' and A.sdept=B.sdept

--外连接

select A.*,B.* from student  A left join sc B on A.sno=B.sno select A.*,B.* from student  A right join sc B on A.sno=B.sno

select A.*,B.* from student  A FULL join sc B on A.sno=B.sno

-复合条件连接

select distinct  A.*,B.* from student A,sc B where A.sno=B.sno and B.grade>99 and B.cno='002'

select distinct  A.*,B.*,C.* from student A,sc B,course C where A.sno=B.sno and B.cno=C.cno and B.grade>99 and B.cno='002'

--字符串连接查询

select sname+sno from student

select distinct sname from student ,sc where student.sno=sc.sno

select  sname from student ,sc where student.sno=sc.sno and student.sno not in (select sno from sc where grade(select AVG(sage) from student)

--是否存在的查询

select * from student where exists(select * from sc where sno=student.sno)

select * from student where not exists(select * from sc where sno=student.sno)

--sql创建用户

sys.sp_addlogin bnc,bnc,Studets sp_adduser bnc,bnc

--权限分配和收回

grant select on student to bnc

select * from student

revoke select on student from bnc

--视图的创建

create view VIEW_STUGrade(学号,姓名,课程,成绩)

as

select student.sno,student.sname,course.cname,sc.grade from student,course,sc

where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件'

--查看视图

select * from VIEW_STUGrade

--视图修改

alter view VIEW_STUGrade(学号,姓名,课程,成绩) as select student.sno,student.sname,course.cname,sc.grade from student,course,sc

where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件'

with check option

--更新失败后不影响视图查看 --视图更新

update VIEW_STUGrade set 姓名='王超' where 学号='10022' select * from student where  sno='10022'

/* 1,可更新视图:   a,单个基本表导出的 2,不可更新视图   a 两个以上基本表导出的   b 视图字段来自表达式或者函数   c 嵌套查询的表   d 分组子句使用distinct */

--删除视图 drop view VIEW_STUGrade

--触发器

use Studets

GO create trigger insert_Tri

ON student  after

insert as print '有新数据插入!'

 

GO create trigger update_Tri

on student after

update as print '有数据更新!'

 

GO create trigger delete_Tri

on student after

delete as print '有数据删除!'

 

--修改触发器

GO alter trigger delete_Tri

on student after delete

as

if '王帅' in (select sname from deleted)

print '该信息不许删除!'

rollback transaction

--执行存储过程查看触发器使用情况

exec sel @sno='10021'

exec inser @sno='10029', @sname='王帅', @sex='男', @sage=25, @sdept='国贸'

exec updat @sno='10029', @sex='女'

exec dele @sno='10029'

--查看,修改,删除触发器

/*   sp_*+触发器名称

  sp_helptext:触发器正文信息   sp_help:查看一般信息,触发器名称,属性,创建时间,类型   sp_depends:引用或指定表的所有触发器   sp_helptrigger:指定信息 */  sp_help delete_Tri 

sp_helptext delete_Tri

 sp_depends delete_Tri 

sp_helptrigger student   

--删除触发器 

drop trigger delete_Tri 


    
 
 

您可能感兴趣的文章:

  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • Mysql增加主键或者更改表的列为主键的sql语句
  • sql语句实例 取得日志条目的sql语句
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • SQL Server统计SQL语句执行时间的脚本
  • sql语句实例 统计页面链接的sql语句
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • 一条SQL语句搞定Sql2000 分页
  • C#中验证sql语句是否正确(不执行语句)
  • SQL Server数据库的修复SQL语句
  • SQL 语句拦截 P6SPY
  • C#使用带like的sql语句时防sql注入的方法
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 在SQL Server的try...catch语句中获取错误消息代码的的语句
  • sql2005创建远程登录帐户的sql语句分享
  • SQL SERVER 查询正在实行的SQL语句
  • SQL语句中含有乘号报错的处理办法
  • sql无效字符引起的执行sql语句报错的解决方法
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • SQL Server中选出指定范围行的SQL语句代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍
  • JAVA JODBC中怎样连续操作两个(或以上)的SQL语句
  • SQLServer导出sql文件/表架构和数据操作步骤
  • sql2005 create file遇到操作系统错误5拒绝访问 错误1802
  • win2000 professional 操作系统上怎么用sql server 2000?(好像不支持)
  • 请问.C与.PC有什么不同,我的.C里面增加了SQL操作,如何编译?
  • 这样的操作SQL该怎么写?
  • sql数据库修改sa密码操作教程
  • sql语句之数据操作介绍
  • 比较详细的完美解决安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。 原创
  • 一些关于c#与Sql的时间的操作
  • Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识
  • linux操作系统安装sql developer步骤
  • sql字段操作的一些例子
  • SQL Server的事务操作隔离模式介绍
  • 请问各位朋友:在JAVA的数据库应用管理系统中,如何不在操作系统忠建立数据源便能连接数据库(如ACCESS、MS SQL 等等
  • sqlserver iis7站长之家
  • 用jdbc对access数据库进行操作时出现异常:java.sql.SQLException: [Microsoft][ODBC 驱动程序 管理器] 非法的游标状态
  • sql server 日期操作的一些例子
  • 请问各位朋友:在JAVA的数据库应用管理系统中,如何不在操作系统忠建立数据源便能连接数据库(如ACCESS、MS SQL 等等)?
  • sql server本地查询更新操作远程数据库的代码
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3