SQLServer高级培训课件_第1页
SQLServer高级培训课件_第2页
SQLServer高级培训课件_第3页
SQLServer高级培训课件_第4页
SQLServer高级培训课件_第5页
已阅读5页,还剩166页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQLServer高级培训SQLServer高级培训 数据库对象 表、视图、存储过程、触发器、默认值、规则、 索引、用户。 SQL Server数据库的版本个人版标准版开发版企业版 Transact-SQL语言主要的4个组成部份数据定义语言DDL数据操作语言DML数据控制语言DCL共它语言元素SQLServer高级培训 数据定义语言DDL用来创建数据库、数据库对象和定义列。包括:CREATE,ALTER,DROP。 数据操纵语言DML用来操纵数据库的命令。包括:SELECT,INSERT,UPDATE,DELET。 数据控制语言DCL用来控制数据库组件的存取许可、存取权限等的命令包括:GRAN

2、T,DENY,REVOKE。SQLServer高级培训 启动 SQL Server服务Net start mssqlserver 暂停 SQL Server服务Net pause mssqlserver 停止 SQL Server服务Net stop mssqlserverSQLServer高级培训SQL Server 2000的各种服务和功能说明服务器名称Coordinator(MSDTCSQLServer高级培训1、通过控制台目录2、使用Transact-sql sp_addserver server= server ,local= local ,duplicate_ok= duplica

3、te_okEgsp_addserver localSQLServer高级培训 在SQL Server 2000中,允许SQL Server用户访问基于SQL Server的服务器以外的数据。通过配置链接服务器可以实现访问其他服务器上的OLE DB数据源。链接服务器是对OLE DB数据源的抽象,是OLE DB提供程序和连接属性的来源。 在链接服务器的边接过程中,为了使该连接有效,需要在链接服务器之间创建登录映射。 链接服务器登录映射可以通过系统存储过程sp_addlinkedsrvlogin添加,相应地,链接服务器登录映射可以通过系统存储过程sp_droplinkedsrvlogin删除。SQL

4、Server高级培训添加键接服务器Sp_addlinkedserver server= server,srvproduct= product_name,provider=provider_name,datasrc=data_source,location=location,provstr=provider_string,catalog=catalogEg:exec sp_addlinkedserver server=exam2,provider=Microsoft.Jet.OLEDB.4.0,srvproduct=,datasrc=d:db2.mdbsp_addlinkedserver 链接服

5、务器名, 产品名, Microsoft.Jet.OLEDB.4.0, Access数据库路径及文件名sp_addlinkedserver Anna, Access 2000, Microsoft.Jet.OLEDB.4.0, D:db2.mdbSQLServer高级培训SQLServer高级培训创建链接服务器登录通过系统存储过程sp_addlinkedsrvlogin可以创建或更新本地SQL Server实例上的登录与链接服务器上远程登录之间的映射。其语法为:Sp_addlinkedsrvlogin rmtsrvname=rmtsrvname,useself= useself,location

6、=location,rmtuser=rmtuser,rmtpassword=rmtpassword其中,参数:(1)rmtsrvname= rmtsrvname:是应用登录映射的链接服务器名称(2)useself=useself:决定用于连接到远程服务器的登录名称,默认设置为ture.true值指定SQL Server验证的登录使用其自己的凭据以连接到rmtsrvname,而忽略rmtuser和rmtpassword参数(3)locallogin=locallogin:是本地服务器上的登录,默认设置为Null.如果为null,则指定应用于所有连接到rmtsrvname的本地登录若不为null则

7、locallogin可以是SQL Server登录或windows NT用户(4)rmtuser=rmtuser:当useself为false时,用来连接rmtsrvname的用户名,默认设置为null.SQLServer高级培训创建一个映射,使得所有到本地服务器的登录都使用其各自的用户凭据连接到链接服务器examExec sp_addlinkedsrvlogin exam或Exec sp_addlinkedsrvlogin exam,true使用指定的用户和密码将所有本地登录连接到链接服务器Exec sp_addlinkedsrvlogin exam,false,null,user,pass

8、word创建一个映射,使得所有到本地服务器的登录都使用相同的登录user和密码password连接到链接服务器exam,不使用登录和密码Exec sp_addlinkedsrvlogin exam,falseSQLServer高级培训数据访问从SQL Server 2000中访问OLE DB数据源的方法有两种:通过特殊名称以及通过链接服务器进行数据访问。在通过特殊名称访问OLE DB数据源的方法中,可以通过函数openrowset和opendatasource来进行。其语法:Openrowset (provider_name,datasource;user_id;password|provid

9、er_string,catalog.schema.object|query)Eg:SELECT * FROM OPENROWSET(Microsoft.Jet.OLEDB.4.0, d:db2.mdb; admin;, bbs)SQLServer高级培训SQLServer高级培训定义和使用局部变量定义局部变量Declare variable_name datatype ,.nDeclare sex char(2)为局部变量赋值为局部变量赋值一般有两种,一种是使用select语句,另一种是使用Set语句Select variable_name=expressionfrom table_name,

10、n where clausedeclare bookname varchar(30) select bookname = vcprint booknameGOSQLServer高级培训定义和使用全局变量全局变量是SQL SERVER系统内部事先定义好的变量,不用用户参与定义,对用户而言是只读的。identity:返回最近一次插入的identity列的数值,返回值是numericprocid:返回当前存储过程的ID标识version:返回当前SQL Server服务器安装日期、版本以及处理器的类型language:返回当前使用的语言名servername:返回当前SQL SERVER服务器名称S

11、QLServer高级培训 使用日期和时间常量SQL 提供的日期/时间数据类型可以存储日期和时间的组给数据。SQL 规定日期、时间和时间间隔的常量值被指定为字符中常量。SQLServer高级培训 常见的数据类型整型(int,smallint,tinyint,bigint)浮点数据类型(real,float,decimal)二进制数据类型(binary,varbinary)逻辑数据类型字符型数据类型(char(n),nchar(n),varchar(n),nvarchar(n)SQLServer高级培训定义复合语句(beginend)declare A int,B int,C intset A=2

12、0set B=30begin set C=A set A=B set B=Cendprint Aprint BSQLServer高级培训使用if语句进行条件判断If命令行|程序块declare x intset x=-100if x0print x是一个负数SQLServer高级培训Create database database_nameon ,.n ,.nlog on,.ncollate collation_namefor load|for attachSQLServer高级培训create database student on(name=学生管理数据库,f:datastudent.md

13、f,size=1MB,MAXSIZE=50MB,)log on(name=学生管理日志,f:datastudent.ldf,size=1MB,MAXSIZE=50MB,)SQLServer高级培训alter database studentmodify file(name=学生管理数据库,maxsize=unlimited)SQLServer高级培训SQLServer高级培训Create table table_name( column_name data_type null|not null primary key|unique,)SQLServer高级培训use studentgocrea

14、te table stu_info(stu_id int not null,stu_name varchar(10),gender bit,major varchar(20),address varchar(100)SQLServer高级培训Eg: alter table stu_info add memo textSQLServer高级培训SQLServer高级培训Eg:alter table stu_info alter column stu_name varchar(12)SQLServer高级培训Eg:alter table stu drop column memoSQLServer高

15、级培训Eg:exec sp_rename stu_info,stuSQLServer高级培训SQLServer高级培训 显示SQL SERVER数据库中所有数据库详细信息Select * from sysdatabasesSQLServer高级培训 显示数据库中所有表的详细信息use stuselect * from sysobjects 显示数据库中系统表的详细信息use stuselect * from sysobjects where xtype=s 显示数据库中用户表的详细信息use stuselect * from sysobjects where xtype=uSQLServer高

16、级培训 显示表中的字段名称Select col_name(object_id(tbl_stu,3) 显示表中的字段长度Select col_length(tbl_stu,stu_id) 显示表中结构Sp_help tbl_stuSQLServer高级培训 单列查询Select field_name from table_name 多列查询Select field_name1,field_name2,. from table_name 查询所有列Select * from table_name 使用列名Select field_name as new_name from table_nameSQ

17、LServer高级培训 简单列计算 复杂列计算 执行算术组合运算 连接列值Select 图书名称,(单价 -进价)as 利润 from tb_xsb02Select sum(数量)as 总数量,sum(数量)%2 剩余 from tb_xsb02Select name 姓名,(math+english+chinese)总分,(math+english+chinese)/3 平均分 from tb_score02Select (名字+( )+姓氏) 姓名 from tb_abstu02SQLServer高级培训 检索单行值 不匹配检索Select * from tb_stu02 where 学号

18、=ID001Select * from tb_stu02 where 学号ID001SQLServer高级培训利用符号进行区间查询 利用Bewteen进行区间查询Select * from tb_abstu02 where 年龄 18 and 年龄 90 and 英语成绩 90利用OR运算符连接where子句Select 学生姓名,数学成绩,音乐成绩,英语成绩from tb_StuScore03where 数学成绩 90 or 英语成绩 90SQLServer高级培训Select 教师姓名,系别,年龄,性别from tb_TeacherInfo03where 系别 in(计算机系,英语系,生物

19、系)SQLServer高级培训Select 房间号,房间类型,价格,房态,配置from tb_kf03where (房态 NOT IN (入住)and (not(价格 between 80 and 150)SQLServer高级培训使用%匹配字符Like %mr%-包含字符mr的任何文本Like mr%-以字符mr开头的任何文本Like %mr-以字符mr结尾的任何文本select 考生课程,考生人数,有效时间 from tb_StuExam where 考生课程 like 计算机%SQLServer高级培训使用_匹配任意单个字符Select 学生编号,学生姓名,年龄,所在学院 from tb

20、_StuInfo03 where 学生编号 like 20070101_SQLServer高级培训使用匹配某一范围的字符a-m表示a到m的所有字符0-9表示0到9的所有数字Select 学生编号,学生姓名,性别,年龄,所学专业from tb_Student05where 年龄 like 2-2_SQLServer高级培训使用匹配非某一范围的字符Select 学生编号,学生姓名,性别,年龄,所学专业from tb_Student05where 年龄 like 2-2_语句Select * from stu where name like MC 功能?SQLServer高级培训升序排序Select

21、 * from tb_employee06 order by 奖金降序排序Select * from tb_employee06 order by 奖金 desc列出前n条记录Select top n * from tbl_stu 列出前n-m条记录(mn)Select top n+1 * from (select top m * from tbl_question) tbl_question order by id descSQLServer高级培训列出n%条记录Select top 10 percent * from tbl_stu随机列出n条记录Select top 5 * from t

22、bl_question order by newid()不显示重复值Select distinct stu_name from tbl_stuSQLServer高级培训按姓氏笔画排序select * from tb_stu06 order by 姓名 collate chinese_prc_stroke_cs_as_ks_ws按音序排序select * from tb_stu06 order by 姓名collate chinese_prc_cs_asSQLServer高级培训SQLServer高级培训Select 学生编号,学生名称,所在班级,学生成绩= case when 学生成绩 is

23、null then 暂无成绩! when 学生成绩 is not null then 有成绩!end from tb_StuXueSheng03SQLServer高级培训select rq,sum(case when shengfu=胜 then 1 else 0 end) 胜,sum(case when shengfu=负then 1 else 0 end) 负from matchgroup by rqSQLServer高级培训截取字符串Select stu_id,substring(stu_name,1,4),age from tbl_stuSelect stu_id,left(stu_n

24、ame,1),age from tbl_stuSelect stu_id,Right(stu_name,1),age from tbl_stu去除尾部空格Select 学号,rtrim (学号)as 去空格后,姓名,rtrim(姓名)as 去空格后,专业,rtrim(专业)as 去空格后from tb_stu04SQLServer高级培训使用”+”连接字符串select 书名,类别,(书名+ 的类别为 + 类别) as 说明from tb_book04SQLServer高级培训使用stuff函数插入字符串Stuff(character_expression,start,length,chara

25、cter_expression)Select 学号,姓名,stuff(学号,2,2,200800) as 新学号from tb_stu04获取字符在字符串中出现的次数Select len(apples is in the apple tree)- len(replace (apples is in the apple tree,p,)/len(p) as afrom tb_name04SQLServer高级培训替换字符串使用replace函数将字符串中某一字符替换成另一字符Eg:select replace(dsfsdfsfdsf*fd,d,*)as 替换后字符串大小写转换Uper(chara

26、cter_expression)Lower(character_expression)select upper(firstname)as up_firstname,lower(lastname )as low_lastnamefrom tb_name04SQLServer高级培训 在字符串查询中,可以将字符串格式化为需要的格式,以增加结果集的可读性。charindex函数Charindex函数用于返回字符串中指定表达式的起始位置语法:Charindex(expression1,expression2,start_location)Eg: select 电话号码 as 提取前, left (电话

27、号码,charindex(-,电话号码)-1)as 区号, substring(电话号码,charindex(-,电话号码)+1, len(电话号码)-charindex(-,电话号码)as 号码 from tb_tel04SQLServer高级培训用“”代替过长的字符串显示select str1 , case when len(str1)10 then left(str1,10)+. else str1 end as news_strfrom tb_tb04求07/08级各有多少学生?select sum(case when left(stu_id,2)=07 then 1 else 0 e

28、nd) 07级人数, sum(case when left(stu_id,2)=08 then 1 else 0 end) 08级人数from tbl_stuSQLServer高级培训SUM函数(汇总)SELECT SUM(数量) AS 总数量,SUM(单价) AS 总金额 FROM tb_xsb07AVG函数(平均)SELECT AVG(语文) AS 语文 ,AVG(代数) AS 代数 ,AVG(几何) AS 几何 ,AVG(英语) AS 英语 FROM tb_stuAchievement07MAX函数(最大值)SELECT MAX(销售额) AS 最高销售额 FROM tb_seller0

29、7MIN函数(最小值)SELECT MIN(销售额) AS 最低销售额 FROM tb_seller07SQLServer高级培训COUNT函数(总计记录条数)SELECT COUNT(*) AS 日销售数量 from tb_bookSell07 where 日期=2005-10-6SQLServer高级培训GROUP BY子句创建简单分组SELECT 商品类别 FROM tb_goods07 GROUP BY 商品类别GROUP BY子句创建多列组合列SELECT 书名,出版社 FROM tb_bookSell07 GROUP BY 书名,出版社GROUP BY对统计结果进行排序SELECT

30、 学生编号,学生姓名,sum(高数+外语+计算机文化基础+马经+数据库管理+数据结构+软件工程) AS 总成绩 FROM tb_StuMark07 GROUP BY 学生编号 ,学生姓名ORDER BY 总成绩 DESCSQLServer高级培训Having子句SELECT 书名,出版社,SUM(金额) AS 总计金额FROM tb_BookSell07GROUP BY 书名,出版社HAVING SUM(金额)500Having子句与WHERE子句的联合使用Select class_name,count(*) as 人数from tbl_stu,tbl_classwhere tbl_stu.c

31、lass_id=tbl_class.class_idgroup by class_nameSQLServer高级培训在分组查询中使用CUBE运算符cube运算符的主要作用是自动对Group By子句中列出的字段进行分组汇总运算。Select 班级,性别,avg(语文) 语文平均成绩,avg(代数) 代数平均成绩,avg(几何) 几何平均成绩,avg(英语)英语平均成绩 from tb_stuAchievement07group by 班级,性别with cubeSQLServer高级培训在分组查询中使用ROLLUPselect 班级,性别,avg(语文) 语文平均成绩,avg(代数) 代数平均

32、成绩,avg(几何) 几何平均成绩,avg(英语)英语平均成绩 from tb_stuAchievement07group by 班级,性别with rollupSQLServer高级培训使用COMPUTE子句在同一结果集中显示明细和汇总computeAVG|COUNT|MAX|MIN|STDEV|STDEVP |VAR|VARP|SUM (expression),.nBy expression,nselect * from tb_pay07order by 所属部门compute avg(工资)SELECT *FROM tb_pay07 ORDER BY 所属部门COMPUTE SUM(工资

33、) BY 所属部门SQLServer高级培训简单子查询SELECT 姓名,工资,所属部门,(SELECT AVG(工资) FROM tb_apay08) AS 平均工资, (工资-( SELECT AVG(工资) FROM tb_apay08) AS 与平均工资的差额FROM tb_apay08为子查询命名SELECT * FROM (SELECT 挂账单位,SUM(欠款金额) AS 金额 FROM tb_agzmx08 GROUP BY 挂账单位)tb1ORDER BY 金额 ASCSQLServer高级培训在子查询中使用聚合函数SELECT 姓名,工资,所属部门FROM tb_apay08

34、WHERE 工资 ( SELECT AVG(工资) FROM tb_apay08 )使用子查询更新数据UPDATE tb_aMesell08 SET 药品名称=润洁WHERE 药品名称 IN (SELECT 药品名称 FROM tb_aMesell08 WHERE 药品编号=YB004)SQLServer高级培训使用子查询删除数据DELETE tb_aMesell08WHERE 药品名称 IN ( SELECT 药品名称 FROM tb_aMesell08 WHERE 药品编号=YB001)SQLServer高级培训在嵌套中使用EXISTS谓词SELECT 学生姓名,所在学院,家庭住址FROM

35、 tb_aStuInfo08 IWHERE EXISTS ( SELECT 学生姓名 FROM tb_aStuMark08 M WHERE M.学生姓名=I.学生姓名 AND 外语 80)select 学生姓名,所在学院,家庭住址 from tb_aStuInfo08where 学生编号 in( select 学生编号 from tb_aStuMark08 where 外语80)在一些情况下,只要子查询返回一个真值和假值.只考虑是否满足谓词条件,数据内容本身并不重要.SQLServer高级培训使用between and 查询某一时间段内的数据select * from tb_student06

36、where 入校时间 between 01.09.01 and 01.09.05 使用关系运算符查询某一时间段内的数据select 姓名,入校时间 from tb_student06where 入校时间 01.09.01 and 入校时间 01.09.05 使用in运算符查询几个时间的数据SELECT 书名,出版日期 FROM tb_booksell06 where 出版日期 in(2005-1-12,2005-1-25)SQLServer高级培训查询某一月份的数据 要实现按月查询数据可以使用日期函数month(). 语法:month(date)select 书名,出版日期 from tb_b

37、ookSell06where month(出版日期)=1 order by 出版日期查询今天是周几select datename(dw,getdate() as 今天是周几Datename(interval,date)SQLServer高级培训datename()函数中的intervalyyyy:返回指定时间的年份Q:返回指定时间的季度M:返回指定时间的月份D:返回指定时间是本月的第几天DY:返回指定时间是本年的第几天W:返回指定日期是本周的周几Ww:返回指定日期是一年中的第几周select datename(yyyy,getdate() as 年份select datename(m,getd

38、ate() as 月份select datename(q,getdate()as 季度select datename(w,getdate() as 今天是周几select datename(ww,getdate() as 第几周select datename(d,getdate() as 本月的第几天select datename(dy,getdate() as 本年的第几天SQLServer高级培训查询两个日期之间的天数Datediff函数用于返回跨两个指定日期的日期与时间边界数其语法格式如下:Datediff(datepart,startdate,enddate)yyyy:返回年份差mm:

39、返回月份差D:返回日差select datediff(yyyy,2007-10-1,2008-10-1) as 年份差select datediff(mm,2007-10-1,2008-10-1) as 月份差select datediff(d,2007-10-1,2007-12-1) as 日差SQLServer高级培训查询3个月后的日期Dateadd函数用于在向指定日期加上一段时间的基础上,返回新的datetime值.语法格式如下:Dateadd(datepart,number,date)select dateadd(mm,3,getdate() as DAY NUMBER获取某月的第一天

40、select dateADD(mm,datediff(mm,0,2007-12-20),0)as DAY_NUMBERSQLServer高级培训 复制表结构Select * into destion_table from source_table where 11 批量插入数据Insert into table1 (field1,field2,field3 ) select field1,field2,field3from table2SQLServer高级培训 笛卡尔乘积查询笛卡尔乘积查询实际上就是两表之间的交叉联接实现查询的方式。SELECT tb_userInfo09.*,tb_prof

41、ession09.* FROM tb_userInfo09 CROSS JOIN tb_profession09 在多表联接中设置联接条件SELECT 学生姓名,学生性别,学生年龄,课程名称,老师姓名 FROM tb_student09,tb_course09,tb_teacher09WHERE tb_student09.自动编号=tb_course09.编号 and tb_course09.自动编号=tb_teacher09.编号SQLServer高级培训 使用表别名SELECT 学生姓名,学生性别,学生年龄,课程名称,老师姓名 FROM tb_student09 AS a,tb_cours

42、e09 AS b,tb_teacher09 AS cWHERE a.自动编号=b.编号 and b.自动编号=c.编号 在多表联接中返回某个表的所有列名SELECT tb_student09.*,课程名称FROM tb_student09,tb_course09WHERE tb_student09.自动编号=tb_course09.编号SQLServer高级培训 等值联接等值联接是指在联接条件中使用等号运算符比较被联接列的值,在查询结果中列出本联接表中的所有列,包括其中的重复列.语法:Select fieldlistFrom table1INNER JOIN table2On table1.c

43、olumn=table2.columnSELECT tb_course09.课程名称,tb_teacher09.老师姓名FROM tb_course09 INNER JOIN tb_teacher09 ON tb_course09.自动编号=tb_teacher09.编号SQLServer高级培训 不等联接不等联接是指在联接条件中使用等于运算符以外的其它比较运算符比较被联接的值SELECT tb_course09.自动编号,tb_course09.课程名称,tb_teacher09.编号,tb_teacher09.老师姓名FROM tb_course09 INNER JOIN tb_teach

44、er09 ON tb_course09.自动编号tb_teacher09.编号SQLServer高级培训 自然联接自然连接是一种特殊的联接,它只在两个表有相同名称的列且列的含义相似时才能使用,并将在同名列上进行相等联接自然联接是指在联接条件中使用等号运算符比较被联接列的值,但它使用选择列表指出查询结果集合中所包括的列,并删除联接表中重复列SELECT a.*,b.实发合计 FROM tb_mMRem09 AS a INNER JOIN tb_nMRpay09 AS b on a.人员编号=b.人员编号WHERE b.工资月份=3Select a.*,b.实发合计 from tb_mMRem09

45、 a, tb_nMRpay09 b where a.人员编号=b.人员编号 and b.工资月份=3SQLServer高级培训 左外联接(left outer join)SELECT a.部门编号,a.部门名称,a.负责人, b.人员编号,b.人员姓名,b.部门名称, b.学历,b.技术职称FROM tb_nMRde09 a LEFT OUTER JOIN tb_mMRem09 b ON a.部门名称=b.部门名称SQLServer高级培训 右外联接(right outer join)SELECT *FROM tb_nMRde09 a RIGHT OUTER JOIN tb_nMRpay09

46、b ON a.部门名称=b.部门名称WHERE b.工资月份=10SQLServer高级培训 完全联接(full join)SELECT *FROM tb_student09 a FULL JOIN tb_course09 b ON a.自动编号=b.编号 SQLServer高级培训SELECT a.员工姓名,a.基本工资,b.员工姓名,b.基本工资FROM tb_pay09 a INNER JOIN tb_pay09 b ON a.基本工资b.基本工SQLServer高级培训SELECT 员工姓名, SUM( CASE 所在部门 WHEN 食品部 THEN 销售业绩 ELSE NULL EN

47、D) AS 食品部业绩, SUM( CASE 所在部门 WHEN 家电部 THEN 销售业绩 ELSE NULL END) AS 家电部业绩FROM tb_sell09 GROUP BY 员工姓名SQLServer高级培训 使用UNION运算符组合两个表的数据SELECT 学生编号 AS 编号 , 学生姓名 AS 姓名FROM tb_StuMark07 WHERE 高数85UNIONSELECT 编号 ,姓名 FROM tb_stuScore09 WHERE 高数85 使用UNION ALL保留重复行SELECT * FROM tb_nemployee09 UNION ALL SELECT *

48、 FROM tb_nemployee09SQLServer高级培训INSERT INTO VALUES(column value,.,lastcolumn value)SQLServer高级培训插入单行数据INSERT INTO tb_em11 VALUES (WY003,王三,女,1981-01-03,本科,长春理工大学,长春市春城大街)特定字段数据插入INSERT INTO tb_em11 (员工编号,员工姓名,员工家庭住址) VALUES (WY004,王三,长春市自由大街)NULL值的插入INSERT INTO tb_em11 VALUES (NULL,NULL,NULL,1981-0

49、1-04,本科,东北师范大学,NULL)SQLServer高级培训插入日期数据INSERT INTO tb_goods11 VALUES (LZW003,明日数码相机,数码设备,500万像素,50,Getdate()使用UNION ALL语句批量插入数据INSERT tb_employee11 SELECT WY005,王五,男,1981-04-05,专科,长春工程学院,长春市大经路UNION ALL SELECT WY006,王六,女,1982-04-05,专科,长春中医学院,长春市大马路UNION ALL SELECT WY007,王七,男,1985-04-05,专科,长春工程学院,长春市

50、解放大路SQLServer高级培训使用INSERT SELECT语句批量插入数据INSERT INTO tb_employee11SELECT * FROM tb_em11创建数据表之后插入数据CREATE TABLE tb_sell11(编号 CHAR(20),产品名称 CHAR(50),销售单价 MONEY)GOINSERT INTO tb_sell11 VALUES (XS001,办公用品,60)SQLServer高级培训SQLServer高级培训UPDATE语句更新列值UPDATE tb_Student12SET 学号=LEFT(学号,2)+1+RIGHT(学号,4) WHERE 专业

51、名=计算机利用子查询更新多行的值UPDATE tb_Grade12SET 成绩=成绩+10WHERE学号 IN (SELECT 学号 FROM tb_Student12 WHERE 专业名=计算机)AND 课程号=01SQLServer高级培训使用CASE表达式更新列值 update tb_case12 set 消费水平 = case when 商品价格2000 then 昂贵 when (商品价格=800) and (商品价格 1000SQLServer高级培训通过视图添加数据use db_sqlgoinsert into v_ware(商品名称,售价) values (笔记本,9856)通

52、过视图修改数据use db_sqlgoupdate v_ware set 售价 = 8644 where 编号= 6通过视图删除数据use db_sqldelete v_ware2 where 商品名称 = 笔记本SQLServer高级培训删除视图use db_sqldrop view v_wareSQLServer高级培训基本知识点存储过程是预编译SQL语句的集合,这些语句存储在一个名称下并作为一个单元来处理.存储过程代替了传统的逐条执行SQL语句的方式一个存储过程中可以包含查询、插入、删除、更新等操作的一系列SQL语句,当这个存储过程被调用执行时,这些操作也会同时执行。SQLServer高

53、级培训使用create procedure语句创建存储过程Create procedure proc_person15As Select 人员姓名,英文姓名,家庭住址From tb_person15goSQLServer高级培训创建带参数的存储过程create procedure proc2personid int,personname varchar(20)asselect * from tb_person15where 人员编号=personid and人员姓名=personnamego proc2 3100423,尚思go SQLServer高级培训CREATE PROCEDURE in

54、sertQuestion (user_name varchar(50),project_name varchar(50),qtype_id tinyint,prior_level tinyint,error_step varchar(100),machine varchar(50),title varchar(50),description text, varchar(60),due_time varchar(10)asinsert into tbl_question (user_name,project_name,qtype_id,prior_level,error_step,machine

55、,title,description,) values (user_name,project_name,qtype_id,prior_level,error_step,machine,title,description,)declare id intset id=identityinsert into tbl_status (question_id,submit_user,status) values(id,user_name,提交)GOSQLServer高级培训删除存储过程use db_SqlGO-判断存储过程pro_prc15是否存在,如果存在将它删掉if exists(select na

56、me from sysobjects where name=pro_prc15and type=p)drop proc pro_prc15 -删除存储过程goSQLServer高级培训重新命名存储过程if exists(select name from sysobjects where name=pro_person15 and type=p)drop proc pro_per15 gouse db_SQLgocreate procedure pro_Ren15asselect * from tb_Ren15 where 家庭住址=吉林省goexec sp_rename pro_Ren15,p

57、ro_pRen15goSQLServer高级培训SQLServer高级培训Eg:create function valid_id(stu_id char(7)returns bitas begin declare returnvalue bit declare count int set count=(select count(*) from tbl_stu where stu_id=stu_id) if count0 set returnvalue=1 else set returnvalue=0 return returnvalueend SQLServer高级培训Eg:create fu

58、nction dept_name(name varchar(10)returns varchar(15)as begin declare dept_name varchar(15) set dept_name=(select 所属部门 from tb_apay08 where 姓名=name) return dept_nameend SQLServer高级培训Eg:create function show_price(goods_name varchar(20)returns floatas begin declare price float set price=(select 进价 from

59、 tb_ware14 where 商品名称=goods_name) return priceendSQLServer高级培训Eg:create function goods_time(id int)returns datetimeas begin declare goods_time datetime set goods_time=(select 进货日期 from tb_ware14 where 编号=id) return goods_timeendSQLServer高级培训创建单语句表值型函数语法创建单语句表值型函数语法create function create function 名称名

60、称(参数名称参数名称 参数类型参数类型=默认值默认值,n),n)returns tablereturns tablewith encryptionwith encryptionasasreturn return (selectselect语句)语句)SQLServer高级培训Eg:create function show_stu(tick char(2)returns tableasreturn (select * from tbl_stu where tick=tick)SQLServer高级培训多语句表值型函数是标量函数和单语句函数的结合体,该函数返回的是一个表,多语句表值型函数是标量函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论