oracle_基礎知識整理

          用戶

          一:系統用戶:
          1:sys,system,sys的權限大于system
          2:sysman
          3:scott,默認密碼:tiger
          使用自帶sql/plus登陸,格式:[username/psaaword] @服務名 as 角色[sysdba/sysoper]

          二:用戶的切換
          當在sql/plus中登錄之后,使用connect 用戶名/密碼 來切換用戶

          三:查看當前用戶
          show user,命令語句可以不添加分號,之后會顯示當前已登錄的用戶信息,除了這種方式,還可以使用數據庫自帶的數據字典來查看信息
          *數據字典就是數據庫自帶的表,可以直接查看結構和數據
          dba_users和user_users,查看系統用戶

          scott用戶
          默認情況下是被鎖定的,啟用用戶
          alter user 用戶名 account unlock


          表空間
          表空間就是數據庫存放數據的邏輯區域

          類型:
          永久表空間:一般存放表,視圖等持久內容
          臨時表空間:存放數據庫執行過程中的臨時操作
          UNDO表空間:存放歷史數據,一般存放事物提交之前的歷史數據

          數據字典
          dba_tablespaces或者user_tablespaces
          前者對應系統管理員級別用戶的表空間,后者對應一般用戶的表空間,查看用戶的默認表空間
          需要在dba_users或者user_users表中查看

          修改表空間
          alter user 用戶名 default/temporary tablespaces 新的表空間名

          創建表空間
          永久表空間 create [TEMPORARY] tablespace 表空間名 datafile ‘文件名’ size XX
          默認創建永久表空間,添加[TEMPORARY]選項,則會生成臨時表空間
          示例:創建永久表空間create tablespace test_p1 datafile ‘test_p1.dbf’ size 10M
          示例:創建臨時表空間create TEMPORARY tablespace test_t1 datafile ‘test_t1.dbf’ size 10M

          查看永久表空間
          數據字典dba_data_files,查看數據文件

          查看臨時表空間
          數據字典dba_temp_files,查看數據文件

          修改表空間狀態
          狀態:聯機/脫機,聯機是默認狀態,脫機狀態的表空間不可以使用
          alter tablespace 表空間名 online/offline
          可以通過dba_tablespaces或者user_tablespaces數據字典的status字段確認表空間狀態
          狀態:只讀/讀寫,默認是可以讀寫,要修改可以該狀態,該表空間必須處于聯機狀態
          alter tablespace 表空間名 read only/read write

          修改數據文件
          在表空間中添加/刪除數據文件
          alter tablespace 表空間名 add/drop datafile ‘文件名’ [size XX]

          刪除表空間
          drop tablespace 表空間名,該選項只是刪除表空間,如果需要同時刪除表空間包含的文件,
          那么需要在命令最后添加inculding contents


          數據表
          數據類型

          1:字符型
          char(n):固定長度,最長2000
          nchar(n):固定長度,按照unicode編碼存放,最長1000,適用于存儲漢字
          varchar2(2):變長字符類型,節省空間,最長4000
          nvarchar2(2):變長字符類型,節省空間,支持unicode,最長2000

          2:數據型
          number(p,s):p代表有效數字,s代表小數位數
          s可正可負
          float(n):主要存儲二進制數字

          3;日期類型
          date:精確到秒,已經基本滿足日常使用
          timestamp:精確到小數秒

          4:其他
          blob:存放4G數據,以二進制形式存儲
          clob,存放4G數據,以字符串形式存儲
          對表的基本操作

          創建表
          基本語法:
          create table 表名
          (
          列名 數據類型,…
          )

          修改表
          1:添加字段
          語法
          alter table 表名 add 字段名 數據類型
          示例
          alter table user add cellphone number(11,0)

          2:修改字段類型(修改時表中不可以存放數據)
          語法
          alter table 表名 modify 字段名 數據類型
          alter table user modify cellphone char(11)

          3:刪除字段
          語法
          alter table 表名 drop column 字段名

          4:修改字段名
          語法
          alter table 表名 rename column 舊字段名 to 新字段名
          5:修改表名
          語法
          rename 舊表名 to 新表名

          5:刪除表
          刪除表數據(截斷一個表)
          truncate table 表名
          刪除表結構連同其數據
          drop table 表名

          操作表中的數據
          1:新增記錄
          insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…)
          列名和值需要一一對應,如果不寫列名,那么代表為所有字段添加值
          *sysdate關鍵字,代表當前日期
          *插入字符串的時候,需要添加單引號

          2:設定默認值
          在創建表的時候,可以為指定字段設定默認的值
          create table 表名
          (
          id number(6,0),
          reg_date date default sysdate
          )

          3:修改默認值
          alter table user modify cellphone default ”;

          4:復制表
          1):創建表時就復制,復制結構和數據
          create table 新建表表名 as select 列1,列2…|* from 所要復制表的表名
          2):在新增時添加來自其他表的內容
          insert into 表名(列1,列2…) select 列1,列2…|* from 所要復制表的表名
          和新增一條記錄類似,但是values關鍵字被替換成目標表的列,數據來源不是手動指定,而是來自其他表

          5:修改表數據
          update 表名 set 列1=值1,列2=值2… [where 條件…]
          無條件更新,也就是全表更新
          update user set username=’new_name’(更新的時候要注意,列和值的類型要匹配,全表更細是有風險的操作,謹慎操作)
          有條件更新
          update user set username=’other_name’ where id=123456

          6:刪除表數據
          delete from 表名 [where 條件…]
          無條件刪除
          delete from user(刪除全表數據,但是效率上不如truncate操作快)
          條件刪除
          delete from user where id=123456


          約束
          作用:來定義記錄中數據的規則,哪些字段必須輸入,字段的內容。以此來保持數據的完整性

          1:非空約束
          創建表時添加該約束
          create table 表名
          (
          id number(6,0) NOT NULL,
          )
          *只能在列級設置,不能在表級設置,并且非空約束是沒有約束名稱
          修改表的約束
          alter table 表名 modify 列名 類型 NOT NULL,但是如果表中的數據存在違反非空約束的記錄,那么會修改失敗
          去除非空約束
          alter table 表名 modify 列名 類型 NULL

          2:主鍵約束
          主鍵約束:確保記錄在表中的唯一性,主鍵可以由一個或者多個字段組成,并且一個表中只能有一個主鍵約束

          創建表時添加該約束,列級
          create table 表名
          (
          id number(6,0) PRIMARY KEY,
          );

          創建表示添加該約束,表級
          create table 表名
          (
          id number(6,0),
          username varchar2(50),
          constraint pk primary key(id,username)
          );
          *使用一個字段作為主鍵無需指定主鍵的名字,而多個主鍵需要指定主鍵的名稱

          查看約束
          用到了一個數據字典user_constraint
          select constraint_name from user_constraint where table_name=’XXX’
          在修改表時添加該約束
          alter table 表名 add constraint 主鍵名 primary key(指定為主鍵的列)
          修改約束名稱
          alter table 表名 rename constraint 舊名字 to 新名字

          3:外鍵約束
          創建表的時候添加外鍵關聯,列級
          create table 表名(從表)
          (
          id number(6,0) primary key,
          username varchar2(50),
          type_id varchar2(5) references 表名(主表)(主表字段,只能是主鍵)
          )
          或者,表級
          create table 表名(從表)
          (
          id number(6,0) primary key,
          username varchar2(50),
          constraint 外鍵名 foreign key(從表外鍵列名) reference 主表名(主表列名)[ON DELETE CASCADE],可選項是級聯刪除,主表記錄刪除,從表相應記錄也會被刪除)
          *外鍵只能來自主表的主鍵(或者是null),并且類型必須一致

          在修改時添加外鍵約束
          alter table user add constraint fk_id foreign key(id) references user_info(id)[ON DELETE CASCADE]

          4:唯一約束
          作用:保證字段值的唯一性
          和主鍵的區別:允許空值,允許有多個
          創建表的時候添加唯一約束,列級
          create table 表名(從表)
          (
          id number(6,0) primary key,
          username varchar2(50),
          type_id varchar2(5) UNIQUE
          )
          或者,表級
          create table 表名
          (
          id number(6,0) primary key,
          username varchar2(50),
          constraint 唯一約束名 unique(列名);
          )
          *每個唯一約束都有自己的名字,不可以聯合多個字段設置唯一約束

          在修改表時添加唯一約束
          alter table 表名 add constraint 約束名 unique(id )

          5:檢查約束
          作用:限制數據的錄入,同一個表中可以存在多個
          create table 表名,列級
          (
          id number(6,0) primary key,
          username varchar2(50),
          age number(3,0) check(age >0)
          )
          或者,表級
          create table 表名
          (
          id number(6,0) primary key,
          username varchar2(50),
          age number(3,0),
          constraint 檢查約束名 check(age >0);
          )
          在修改表時添加檢查約束
          alter table 表名 add constraint 約束名 check(salary>0)

          6:禁用/啟用和刪除約束的方法
          啟用/禁用約束
          alter table 表名 disable|enable constraint 約束名

          7:刪除約束
          1:
          alter table 表名 drop constraint 約束名
          2:
          alter table 表名 drop primary key[cascade] 約束名,添加可選項,連同外鍵的級聯刪除

          posted on 2015-07-28 11:04 都較瘦 閱讀(157) 評論(0)  編輯  收藏 所屬分類: Oracle相關問題積累

          <2015年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 墨脱县| 社会| 莲花县| 屏东县| 涞水县| 富民县| 普陀区| 文登市| 石城县| 瑞金市| 昭通市| 芦山县| 延长县| 保山市| 兴安县| 蓬溪县| 宜丰县| 湘乡市| 灵宝市| 清流县| 曲周县| 罗城| 盐边县| 南京市| 贵南县| 云梦县| 张家港市| 高清| 苏尼特左旗| 浦城县| 乌兰县| 鄱阳县| 银川市| 霍林郭勒市| 哈密市| 穆棱市| 慈利县| 昌宁县| 蓝田县| 佛教| 贡山|