建表之前判斷mysql 資料庫之建立表前的判斷處理

2021-10-20 01:21:43 字數 914 閱讀 5703

對於sybase/sql server就比較簡單,可以使用

if exists(select 1 from sysobjects where id=object_id("表的名稱") and type="u")

drop table "表的名稱"

go---然後建立即可。

但是對於oracle就沒有對應的語法。如果直接drop掉,則因為對應的對應沒有存在,會提示錯誤資訊,對於新手或者用服來說,發現錯誤的時候就會提出疑問。所以有如下簡單的辦法來處理。原理很簡單,使用user_objects資料字典和動態sql語句。

[@more@]

create or replace procedure proc_dropifexists(

p_i_tablename in varchar2 -----表名字

) is

v_count number(10);

begin

----判斷當前使用者下是否有對應的表

select count(*)

into v_count

from user_objects

where object_name = upper(p_i_tablename);

if v_count > 0 then

----如果存在則使用動態sql drop掉該錶

execute immediate 'drop table ' || p_i_tablename;

end if;

end proc_dropifexists;

----呼叫辦法demo

exec proc_dropifexists('a');

對於儲存過程和觸發器,sybase的處理辦法和針對表的處理辦法類似。oracle就簡單了,直接create or replace ,意即存在就刪除重建,不存在就建立,簡單明瞭。

mysql資料庫基礎建庫與建表

新建資料庫 create database name 有分號,name為資料庫名,不能重名,首字母不能為數字和 create database name charset utf8mb4 clooate utf8mb4 general ci 查詢和選擇資料庫 show databases use na...

資料庫(3) MySQL建庫 建表

show databases use database名稱 例如 use mysql 如果沒有進入某一庫,在對庫中的資料進行訪問時,會提示 no database selected 檢視當前已進入的資料庫 show tables 語法 drop database 庫名 例如 drop databas...

django資料庫之建表

首先了解幾個知識 什麼是一對多,多對多,一對一 什麼是關聯查詢 什麼是主表,什麼是從表 外來鍵放的位置 正向查詢,反向查詢 各種設計模式下,怎麼查詢 一對多 班級表和學生表 乙個班級可以有多個學生,乙個學生屬於那個班級 一對一 學生表和學生資訊表 每個學生對應各自的學生資訊 多對多 學生表和課程表 ...