MSSQL和ORACLE 简单对比学习笔记

本文介绍了SQL中的实用技巧,如索引管理、日期查询、身份证信息提取等,并详细讲解了SQL Server与Oracle环境下存储过程与函数的创建和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引的技巧
如果个表中有索引,但需要大量更新的时候,索引会影响更新的效果。如果不确实数据量非常大的话,那么可以先删除索引,再做数据更新。最后重建索引。
SQL Server中的备份表语句:
Oracle中的备份表语句:
Sqlsever : SELECT*
INTO 新表名
FROMTABLE_SOURCE
Oracle :Crcate Table 新表名
AS
SELECT *
FROM TABLE_SOURCE
---------------------------------------------------------------------------------------------------------------------
对日期数据:
1. SQL Sever
SECECT Rundate
FROMStudent
Where 出生日期>’01/01/1977’
2. Access
SELECT *
FROMStudent
Where 出生日期> #01/01/1977#
3. Oracle
SELECT *
FROMStudent
Where 出生日期>’01-SAN-1977’
注:Oracle日期格式为 DD-MON-YY
SQLServerTOPOracleRomnum的使用
取出30%的顶部开始
SELECT TOP n Preceat30%
FROMStudent
Order by 出生日期
Oracle
Select *
FROMStudent
WhereRomnum<6;
这个是返回5个记录个数
截取身份证中的出生年月
SELECT SUBSTR(‘sid_’,7,6)
SQLSERVER中的IF···ELSE函数
SELECT tame 外教姓名,
性别=
CASE
WHEN sex=’m’ THEN ’
WHEN sex=’f’ THEN ’
ELSE ‘错误数据
END
FROM foreign_teacher
WHEREcountry=’USA’
ORPERBY sex;
或者:SELECT tame 外教姓名,
性别=
CASE sex
WHEN ’m’ THEN ’
WHEN ‘f’ THEN ‘
ELSE ‘错误数据
END
FROMforeign_teacher
WHEREcountry=’USA’
ORPER BY sex
Oracle
DECODE函数
DECEDE(表达式,值1,返回值,值2,···默认返回值)
SELECTfname外教姓名
DECODE(sex,’m’,’’,’f’,’’,’错误数据’)性别
FROMforeign_teacher
WHERE country=’USA’
DROER BY sex;
---------------------------------------------------------------------------------------------------------------------
存储过程和函数
一、
1.存储过程简介
2.SQL Server中创建和使用存储过程
3.SQL Server中创建和使用函数
4.NT系统存储过程的使用
5.Oracle中的存储过程和函数
二、
1.SQL Server中创建和使用存储过程
CREATE PROCEDURE pracesture_name;number
[{@parameter data_type
VARYING][=default][OUTPUT
][,···n
WITH
RECOMPILE|ENCRYPTION| RECOMPILE,ENCRYPTION}]
FORREPLICATION
AS
Sql_statement[···n
2.调用语句中EXEWTE的语法
EXEC
{[@return_status=
WITH RECOMPILE
3.创建一个简单的存储过程
CREATE PROC proc GetStudent
AS
SELECT*
FROMstudent
EXEC proc GetStudent
执行生成结果
4.创建带输入参数的存储过程
CREATE PROC proc GetAogMaxMin
@course_namechar (20)
AS
SELECT ACVT (考试成绩) AS 平均分,
MAX (考试成绩) AS 最高分,
MIX (考试成绩) AS 最低分,
FROMScoreAS s
INNER JOIN course AS c
ON S.课号=C.课号
WHERE C.课名=@course=name
EXEC proc GetAvgMaxMin ‘心理学
比较有用的一种参数提示方法
Create proc proc|
@course_namechar(20)=null
AS
If @course_name is null
print ‘请您提供课程名称
ELSE
Select avg (考试成绩)AS 平均分,
max (考试成绩) AS 最高分,
min (考试成绩) AS 最低分
FROM store AS s
Inner Join course AS c
ON S.课号=C.课号
WHERE C.课名=@course_name
EXEC prol时,系统会出现提示“请您提供课程名称”
带输出参数的存储过程
(REATE PROC proc)
@x int,
@y int Output
AS
DECLARE @i int,@t int
SELECT@i=1,@t=1
WHERE@i<=@x
BEGIN
SELECT @t=@t*@i
SELECT @i=@i+1
END
SELECT@y=@t
##以上为调用程序,算出变量X的阶层,将@t赋值给@y调用
DECLARE@fait int
EXEC proc25, @fact OUTPUT
SELECT@fact
结果是120,即输出为5及阶层的结果
判断是否存在存储过程并删除它
IF EXISTS (SELECT *
FROM sysobjects
WHERE name=’procl’)
DROP procl
存储过程的xtype为“p,sysobjects中都存记录
三、在SQL Server中创建和使用函数
1.标量函数
创建一个获得当前年龄的函数
根据生日来获取
CREATE FUNCTION funcGETAGE
(@birth_date datetime,@now_date datetime)
RETURNS int
AS
BEGIN
RETURN (DATEDIFF(year,@birth_date,@now_date))
END
使用这个函数
SELECT 姓名,dbo.funcGETAGE (出生年月,GETDATE)
AS年龄
FROM student
2.表值函数返回值为TABLE()
2.1内嵌函数
Create Funtion funcGETSTUDEPA
(@depa_name char(20))
RETURNS TABLE
AS
RETURN (SELECT *
FROM student
WHERE 所属院系=@depa_name)
使用
SECELT *
FROM funcGETSTUDEPA(‘计算机学院’)
取出表student中所属院系为“计算机学院”的
2.2多语句函数
如果RETURNS子句指定的TABLE类型带有字段及其数据类型的,则该函数是多语句表值函数。
创建函数
CREATE FUNCTION funcGetstuStore
(@stu_name char(20))
RETURNS @TEMP TABLE
(
姓名 char(20),
课名 char(20),
)
AS
BEGIN
INSERT INTO @TEMP
SECELT st.姓名,c.课名,s.平时成绩,s.考试成绩
FROM student AS st
Inner JOIN score AS s
ON st.学号=s.学号
INNER JOIN course AS c
ON c..课号=S.课号
WHERE st.姓名=@stu_name
RETURN
END
使用
SELECT *
FROM funcGetstuStore(姓名)
四、系统用到的存储过程
1.SP_RENAME 重命名
2.SP_DEPENDS 显示引用对象
3.SP_HELE 显示对象信息
4.SP_HELPTEXT 显示对象的源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值