MSSQL和ORACLE 简单对比学习笔记

索引的技巧
如果个表中有索引,但需要大量更新的时候,索引会影响更新的效果。如果不确实数据量非常大的话,那么可以先删除索引,再做数据更新。最后重建索引。
SQL Server中的备份表语句:
Oracle中的备份表语句:
Sqlsever : SELECT    *
INTO       新表名
FROM      TABLE_SOURCE
Oracle :  Crcate Table 新表名
         AS
         SELECT   *
         FROM     TABLE_SOURCE
---------------------------------------------------------------------------------------------------------------------
对日期数据:
1. SQL Sever
SECECT Rundate
FROM  Student
Where   出生日期>’01/01/1977’
2. Access
SELECT *
FROM  Student
Where   出生日期> #01/01/1977#
3. Oracle
SELECT *
FROM  Student
Where   出生日期>’01-SAN-1977’
注:Oracle日期格式为 DD-MON-YY
SQLServerTOPOracleRomnum的使用
取出30%的顶部开始
SELECT TOP n Preceat            30%
FROM  Student
Order by 出生日期
Oracle
Select   *
FROM  Student
Where  Romnum<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
      WHERE  country=’USA’
      ORPER  BY sex;
或者:SELECT tame 外教姓名,
性别=
                CASE sex
                   WHEN ’m’ THEN ’
                   WHEN ‘f’ THEN ‘
                   ELSE ‘错误数据
                END
FROM    foreign_teacher
WHERE  country=’USA’
ORPER   BY sex
Oracle
DECODE函数
  DECEDE(表达式,值1,返回值,值2,···默认返回值)
    SELECT  fname外教姓名
              DECODE(sex,’m’,’’,’f’,’’,’错误数据’)性别
    FROM    foreign_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  *
FROM    student
EXEC     proc GetStudent
执行生成结果
4.创建带输入参数的存储过程
CREATE PROC proc GetAogMaxMin
                  @course_name  char (20)
AS
SELECT ACVT (考试成绩) AS 平均分,
        MAX (考试成绩) AS 最高分,
        MIX (考试成绩) AS 最低分,
FROM  Score  AS s
        INNER JOIN course AS c
        ON S.课号=C.课号
WHERE C.课名=@course=name
EXEC proc GetAvgMaxMin ‘心理学
比较有用的一种参数提示方法
       Create proc proc|
                 @course_name  char(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 proc2  5, @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 显示对象的源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值