歡迎轉載,轉載請標明出處:https://blog.csdn.net/qq_44333320/article/details/105754992
表結構和數據類型
表和表結構
表是日常工作和生活使用的一種表示數據以及關係的形式。如圖爲學生表。
數據類型
- 字符類型(char、varchar2)
- 數值類型(number)
- 日期和時間類型(date)
- LOB類型
- ROWID類型
最常用的是VARCHAR2、NUMBER、DATE和CLOB。
表結構設計
簡而言之,表結構設計就是定義表結構以及設置表和列的屬性。
創建和操作表空間
數據表空間 (Tablespace)
存放數據總是需要空間, Oracle把一個數據庫按功能劃分若干空間來保存數據。當然數據存放在磁盤最終是以文件形式,所以一盤一個數據表空間包含一個以上的物理文件。
- 創建表空間
格式: create tablespace 表間名 datafile '數據文件名' size 表空間大小
create tablespace BKJ --創建名爲BKJ表空間
logging --默認產生日誌
datafile 'F:\oracle data\BKJ.dbf' --自定義路徑
size 50m --空間大小
autoextend on
next 50m maxsize 20480m --自動擴展至最大,每次擴展50M
extent management local; --創建本地化的可變表空間
- 創建用戶並授權
格式: create user 用戶名 identified by 密碼 default tablespace 表空間表;
create user zzxy identified by zzxy default tablespace BKJ;
- 賦予權限
grant connect,resource to zzxy; //表示把 connect,resource權限授予zzxy用戶
grant create tablespace to zzxy;//表示把create tablespace權限授予給zzxy
grant dba to zzxy;//表示把 dba權限授予給zzxy
1.grant connect,dba,resource,EXP_FULL_DATABASE,IMP_FULL_DATABASE to zzxy;
2.grant create session to 用戶名 //允許用戶連接;
grant select,insert,update on 表名 to 用戶名 //允許用戶對該表進行查詢,插入,修改
4.刪除用戶及數據庫
drop user zzxy cascade;或drop user zzxy ;
drop user xxx必須是這個用戶下面沒有任何對象;這樣纔可以使用這個命令,否則就會報錯;如果用戶下面有對象,就得用drop user xxx cascade來刪除這個用戶以及這個用戶下的所有對象。
- 幾個操作
select username from dba_users;//查詢用戶
select username,default_tablespace from dba_users order by username;//查詢用戶和用戶所在的表空間
SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;//查詢表所在的表空間
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;//刪除表空間
創建和操作表
創建表
格式:create table 表名(
列名 數據類型;
。。。。。。;
。。。。。。
);
基本的增刪改查
- 增
添加列:alter table 表名 add 列名 列的屬性; --單列操作
alter table 表名 add (列名1 列1的屬性,列名2 列2的屬性,...) --多列操作
添加表註釋:comment on table 表名 is '表註釋';
添加字段註釋:comment on column 表名.列名 is '列註釋';
添加約束:
添加主鍵約束:alter table 表名 primary key(列名);
添加唯一約束:alter table 表名 constraint 約束名 unique(列名);
//主鍵約束和唯一約束的區別:主鍵約束:唯一標識,不能爲空。唯一約束:唯一標識,只能有一個值爲空
非空約束:alter table 表名 modify(列名 constraints);
數據的增加:
--單行操作
insert into 表名 values(所有列的信息); --數據類型必須與表結構裏字段的屬性一致
insert into 表名 values(部分信息); --會按表的字段順序加入信息,後面沒設置的爲null(輸入數據必須小於或等於列數)
--多行操作
insert into 表1
select 數據1 from dual
union
select 數據2 from dual; --dual 是一張僞表只是爲了方便操作而存在,需要了解的請百度
- 刪
清空表,truncate和delete.都是刪除表中所有數據,保留表的結構,區別是TRUNCATE語句不能回滾. 但DELETE 語句刪除數據,可以回滾。
刪除列:alter table 表名 drop column 列名; --單列操作
alter table 表名 drop (列1,列2); --多列操作(多列不需要加column)
刪除表:DROP TABLE 表名;//drop數據和結構都會被刪除,事務被提交,索引被刪除,無法回滾
數據的刪除:
delete from 表名 --刪除所有數據
delete 列名 from 表名 where 條件 --刪除符合條件的某些數據
//刪除某一列數據(該列必須可以爲null):
1.update 表名 set 列名=null;
2.delete from 表名 where 列名 is not null ;
- 改
修改列:alter table 表名 rename column 原列名 to 列名;
修改數據類型:alter table 表名 modify 列名 新屬性; --單列操作
alter table 表名 modify (列名1 列1的新屬性,列名2 列2的新屬性);--多列操作
插入數據:insert into(列名,……)values(數據,……);
//注意!!! oracle中不能直接寫入日期函數
插入時間:to_date('2020-4-25 21:34:54','YYYY-MM-DD HH24:MI:SS')
插入當前時間:sysdate
update 表名 set 列名=數據 where 條件; --修改滿足條件的數據
update 表名 set 列名=數據; --將該列全部修改
- 查
select * from 表名; --查看錶的全部信息
select 列1,列2 from 表名; --查看錶的列1,列2信息
敲敲知識點之總結:
create table:創建表
alter table:修改表結構
drop table:刪除表
rename to:重命名錶
truncate table:刪除表中的所有數據,並釋放存儲空間