1. 程式人生 > >oracle入門筆記

oracle入門筆記

rename 多行註釋 ews 修改字段 關系 導出數據 har 修改表 condition

進入oracle客戶端:運行---->sqlplus 或者使用oracle自帶的SQL plus軟件.

登陸oracle客戶端: conn 用戶名/密碼;

顯示當前用戶: show user;

斷開當前連接: disc;

.select * from user_role_privs; 查看當前用戶的角色

select name from v$database; 查看數據庫

Oracle中常用的數據類型:

NUMBER[(precision [, scale])] NUMBER(p,s)

範圍: 1 <= p <=38, -84 <= s <= 127

保存數據範圍:-1.0e-130 <= number value < 1.0e+126

保存在機器內部的範圍: 1 ~ 22 bytes

有效位:從左邊第一個不為0的數算起的位數。

s > 0

精確到小數點右邊s位,並四舍五入。然後檢驗有效位是否 <= p。

s < 0

精確到小數點左邊s位,並四舍五入。然後檢驗有效位是否 <= p + |s|。

s = 0 等價於NUMBER(p)

此時NUMBER表示整數。

字符串:char,定長,實際內容不足會自動填充.最多2000個字符 查詢,存儲效率高

varchar2 不定長,所占內存根據內容決定,最多4000個字符

表操作:

查詢當前用戶創建的表:select table_name from user_tables;

查詢當前用戶創建的視圖:select view_name from user_views;

查詢當前用戶創建的視圖和表:select * from tab ;

查看表結構:desc 表名; 只能看到字段名或者字段名和類型.

添加數據:insert into 表名 values(); 或者insert into 表名(字段名) values(值);

註意:values的s不能省略.不能使用values(值1),(值2)這種方式.

修改:update 表名 set 字段1=值 [,字段2=值..] where 條件;

查詢:select 查詢列/* from 表名 where 條件;

刪除:delete from 表名 where 條件;

說明:刪除和修改,如果沒有條件,操作的是所有的數據.

創建表及約束:create table t1(id int primary key,name varchar(20) unique,age int check(age>18 and age<100),sex char(2) default ‘男‘,address varchar(40) not null);

註意:oracle中"並且"不能使用&&,可以換成and. User是oracle的關鍵字,表名不能用user.

在oracle中唯一約束,主鍵約束,外鍵約束,檢查性約束(強制執行),非空約束,默認約束的效果和mysql相比,效果不變.

|------刪除約束:

alter table 表名 drop constraint 約束名稱; 可以根據外鍵匿名刪除任何約束

alter table 表名 drop primary key ; #刪除主鍵約束

alter table 表名 drop primary key cascade; #在兩張表存在主從關系,帶上 cascade,自動刪除外鍵關系

alter table 表名 drop unique (字段名); 刪除唯一約束

alter table 表名 modify 字段名 字段類型 null; # 刪除非空約束,必須明顯指出null

alter table 表名 modify 字段名 字段類型 default null; #刪除默認約束,必須明顯指出默認值為null

註意:刪除外鍵不能使用mysql的"alter table 表名 drop foreign key 外鍵匿名;"

|------添加約束:

添加主鍵約束:alter table 表名modify id int primary key; 通過修改字段類型添加主鍵約束

Alter table 表名 add [constraint 約束匿名] primary key (字段名); 添加主鍵約束

添加唯一約束:alter table表名 modify name varchar(20) unique; 修改字段類型,添加唯一約束

alter table 表名 add [constraint 約束匿名] unique (字段名);unique後不能有key.

添加外鍵約束: alter table 表名modify id int [constraint t1_t2] references t2(num); 通過修改字段類型添加外鍵約束

alter table 表名 add [constraint 外鍵匿名] foreign key (外鍵字段) references 被引用的表的表名(被引用的子段的字段名);

添加非空約束: alter table 表名modify 字段名 字段類型 not null;

註意:通過修改字段類型添加非空約束,如果刪除非空約束,可以將"not null"換為"null". 若省去非空說明,則保持原來的約束.

添加檢查性約束: alter table 表名modify 字段名 字段類型check(條件); 通過修改字段類型添加檢查性約束.

alter table 表名 add [constraint 約束匿名] check(條件);

總結:五中約束條件都可以通過修改字段類型的方式,進行添加.

表結構操作:

alter table 舊表名 rename to 新表名; 或者 rename 表名 to 新名 /*修改表名*/

alter table 表名 modify 字段名 數據類型 /*修改字段的數據類型*/

alter table 表名 rename column 舊列名 to 新列名 /*修改字段名*/

alter table 表名 modify 字段名 default 默認值; /*修改字段的默認值*/

alter table 表名 add 新字段名 數據類型 約束條件 /*添加字段,默認添加在最後一個字段後面.沒有after或者first.*/

alter table 表名 drop column 字段名 /*刪除字段*/

將外部的sql文件導入到oracle中: start D:\文件名.sql 相當於mysql中的source D:\文件名.sql

導出數據庫/表到外部:

等待解決的問題:

問題:mysql中的數據庫(test,mydb等),對應oracle中的哪些,如果查看?

Oracle 中的實例:orcl select name from v$database;

問題: 查詢某用戶創建的表?

Select table_name from user_tables; //顯示當前用戶所擁有的所有的表,只返回用戶對應方案中的所有表.

Select table_name from all_tables; //顯示當前用戶可以訪問的有的表,返回用戶對應方案的所有表.及其他方案中可以訪問的表.

Select table_name from dba_tables; //顯示所有方案擁有的數據表.要求用戶有dba角色或者select any tables系統權限.

問題:Oracle的註釋?

-- 註釋內容

/* 我是多行註釋*/

問題:oracle不能使用user,怎麽處理?

User是oracle的關鍵字,如果必須創建user表,建表和刪除表時,表名要加雙引號. Create table “user” ....

問題:oracle的主鍵怎麽添加自增長?

Oracle數據庫的表的列沒有自動增長的功能.可以通過編寫序列或者觸發器實現.

CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的長度來定, 如果定義的自動增長的序列號 NUMBER(6) , 最大值為999999.INSERT 語句插入這個字段值為: 序列號的名稱.NEXTVAL

問題: drop table if exists t1;的使用?

在oracle中不能使用if exists.

問題:查看某表的數據類型和約束條件?

查詢某表的約束信息

Select table_name,constraint_type,search_condition,constraint_name from user_constraints where table_name=‘表名‘;.

constraint_type:約束類型代號(主鍵,外鍵,唯一等) search_condition:約束信息內容 constraint_name:外鍵匿名

select column_name,data_type From all_tab_columns where table_name=upper(‘表名‘) AND owner=upper(‘用戶名‘);

查詢某列的字段類型:

select DATA_TYPE from User_Tab_Columns t where t.column_name=upper(‘age‘) and T.TABLE_NAME=upper(‘表名‘);

問題:如何查看創建表的語句--show create table 表名; 查看視圖的創建: show create view 視圖名;

附加: 自增長序列

create sequence autoIncrement

increment by 1 --每次增加1

start with 1 -- 從1開始

nomaxvalue -- 沒有最大值

nocycle -- 不循環

;

select autoIncrement.nextval from dual; 查詢序列中的下一個數

select autoincrement.CURRVAL from dual; 查詢序列中的當前數

講課案例:

表操作使用例子:

Drop table t1;

Drop table t2;

create table t2 (id int primary key,num int unique);

create table t1(id int constraint p_id primary key ,name varchar(20) constraint u_name

unique,age int check(age>18 and age<100),sex char(2) default ‘男‘,address varchar(40) not null);

查看表的約束條件:Select table_name,constraint_type,search_condition,constraint_name from user_constraints where table_name=‘T2‘;

oracle入門筆記