首頁 > 資料庫 > mysql教程 > sql和oracle的語法上有什麼差別

sql和oracle的語法上有什麼差別

清浅
發布: 2020-09-14 15:21:15
原創
11947 人瀏覽過

sql和oracle語法上的差別有:1、資料型別不同;2、取得目前系統時間的函數不同;3、建立使用者的方式不同;4、連結變數和字串的方式不一樣;5、條件語句「if…else…」的語法不同等等。

sql和oracle的語法上有什麼差別

sql和oracle的語法差異有資料型別不同,取得目前系統時間的函數不同,在oracle沒有預設約束,連接變數和字串的方式不一樣,case語句不一樣等

資料型別不同

sql server的資料型別:int ,smallint ,char,varchar,nchar,nvarchar, ntext,datetime,smalldatetime,money,decima,float,bit

oracle 的資料類型:number(p,s),char,varchar2,Date,LOB

#取得目前系統時間的函數不同

sql server:getdate()

oracle:sysdate

例如:設定日期格式的函數

to_char(sysdate,'yyy-mm-dd');
登入後複製

在oracle中沒有預設約束的說法

sql server 中加入預設約束:

alter table talbe_name add DF_table_name default('男') for sex;
登入後複製

oracle 中加入預設值:

alter table table_name modify(sex default('男'));
登入後複製

連接變數和字串的方式不一樣

sql server 連接:使用「」連接,例如:

print 'aaaa'+@name;
登入後複製

oracle  中連接:使用「|| 「連接,例如:

dbms_output.put_line('aaa'||name);//name为变量
登入後複製

oracle沒有identity自動增長列,而是使用序列實現增長

sql server 自動增長:在表的主鍵列中可直接使用identity(1,1 )實現成長

oracle 使用序列自動成長:

create sequence se_id 
start with 1
increment by 1
登入後複製

使用序列實作自動成長:se_id.nextval

##條件語句if…else…的語法不同

sql server中:

  if 条件
            begin
              …………
            end
            else
            begin
              …………
            end
登入後複製

oracle中:

  if 条件1 then
               …………;
            elsif 条件2 then
               …………;
            else
              …………;
            end if;
登入後複製

case語句的語法不同

sql server中:

select ....case.....(else)....end....语句
            select stuno '学号',case
            when grade>=90 and grade<=100 then &#39;★★★★&#39;
            when grade>=80 and grade<90 then &#39;★★★&#39;
         when grade>=70 and grade<80 then &#39;★★&#39;
         when grade>=60 and grade<70  then &#39;★&#39;
            else &#39;差&#39;
            end as &#39;等级&#39; from score
            go
登入後複製

oracle中:

  declare
        nums number:=&nos;--&nos表示提示传入值
            begin
              case nums
                when 100 then
                  dbms_output.put_line(&#39;满分也,不错&#39;);
                when 90 then
                  dbms_output.put_line(&#39;90分页很不错了&#39;);
                end case;
            end;
登入後複製

建立使用者的方式不同
##sql server中

建立登陸帳號:sa-----123456

create Login 登陆名称 with password=&#39;登陆密码&#39;
登入後複製

修改登陸帳號:

alter Login 登陆名称 with name=&#39;新登录名称&#39; and password=&#39;新登录密码&#39;
登入後複製

停用/啟用登陸帳號

alter Login 登录名称 disable(禁用)/enable(启用)
登入後複製

刪除登陸帳號

drop Login 登录名称
登入後複製

建立使用者:

create user 用户名 for/from Login 登陆名称
登入後複製

修改使用者名稱

alter user 用户名 with name=&#39;新用户名&#39;
登入後複製

#刪除使用者名稱

drop user 用户名
登入後複製

授權限

grant select/update/delete/insert on 表名 to 用户名
登入後複製

oracle中:


建立使用者語法

create user 用户名
identified by 密码
default tablespace users
temporary tablespace temp
quota 10M on users
登入後複製

修改密碼

alter user 用户名 identified by 新密码
登入後複製

授予權限

grant create session to 用户名
登入後複製

刪除用戶

drop user 用户名 cascade;
登入後複製

以上是sql和oracle的語法上有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板