Oracle day01 Oracle簡介及表的創建,增刪改查 安裝好之後,需要手動開啟的服務 : 右鍵我的電腦 管理 服務 OraclORCL 和 OracleListiner . 必須開啟. dos 底下輸入sqlplus啟動oracle,資料庫口令 : orcl 用戶名system密碼orcl ...
Oracle
day01 Oracle簡介及表的創建,增刪改查
- 安裝好之後,需要手動開啟的服務 : 右鍵我的電腦 -> 管理 -> 服務 -> OraclORCL 和 OracleListiner . 必須開啟.
- dos 底下輸入sqlplus啟動oracle,資料庫口令 : orcl
- 用戶名system密碼orcl 用戶名scott密碼luogg
- 網頁端 : http://localhost:5560/isqlplus
- 以管理員角色登錄 : sqlplus scott/luogg as sysdba
- 測試是否安裝成功: select sysdate from dual;查詢當前時間
- 退出 exit
- 鎖定與解鎖用戶 : alter user scott account lock ;
alter user scott account unlock ; - 清屏: host cls(windows中)
host clear(Linus中) - 切換用戶 : conn[ect] scott/luogg ;
- 顯示當前用戶 : show user ;
- 查看表結構: desc table_name;
- 單行註釋- -
- 多行註釋/* */
表
- 查看當前用戶有那些表 : select * from tab ;
- 建表的時候先創建E-R圖,會比較清晰,實體用長方形,屬性用橢圓.
- 一個漢字有3個位元組, varchar2為可變字元串.
- PL/SQL developer 查看表的方法: ctrl+鼠表放在表上
SQL developer 查看表的方法: desc + 表名 ; - PL/SQL developer 中輸入select * from 表名 + for update; 可以直接增刪改查
- 查看本機IP的方法 : dos底下輸入 -> ipconfig -> ipv4地址
- 創建表 : create table t_student(t_name varchar2(20) ...);
- 添加信息: insert into t_student(t_name) values('小花');
若不指定欄位, 那麼預設添加所有欄位信息;
若要添加指定欄位信息, 表名後邊必須指明欄位; - 修改信息: update t_student set stu_name='小美' where stu_no=1001;
- 刪除信息: delete from t_student where stu_age=20 and stu_no=1002;
- 刪除表: drop table t_student;
- 添加欄位: alter table t_student add(stu_sex varchar2(10));
- 修改欄位長度: alter table t_student modify(stu_sex varchar2(6));
修改長度時候,可以不為null, 修改欄位的修飾類型(varchar2->number)的時候, 欄位下邊必須沒有信息, 為null - 刪除欄位: alter table t_student drop column stu_sex;
- 複製HR用戶下的employees表: create table copy_emp as select * from hr.employees; 前提是有許可權訪問hr.
- 只複製表結構: create table copy_emp2 as select * from hr.employees where 1=2
- 查詢欄位為空的表: select * from t_student where stu_name is null ;
- 可以快速導入表 : 先放到excel中,然後導入;
- SQL : 結構化查詢語言
PL/SQL: 過程話查詢語言 - DCL: 數據控制語言(極少用)
DDL: 數據定義語言, 創建對象的時候使用, create,alter,drop
DML: 數據操縱語言,和操作數據有關, insert,update,delete,查詢不屬於DML.
- pl/sql中,選中本行: home/end + shift,end/home ;
- 運行sql語句: f8. 提交: f10 . 回滾: shift+f10.
day02 約束
表的類型
- char 2000個位元組 , 定長字元串,
- varchar 4000個位元組, 可變字元串, 若沒達到指定字元長度, 會自動調整大小
- number(m,n) m,有效位數,n,代表小數位,出多來的小數位四捨五入,
不寫n的時候,為整數 date類型
1,sysdate 當前日期
2,預設格式: dd-mm月-yy 05-03月-94
3,採用資料庫提供的to_date()方法,追加出生日期的三種方法:
1.update t_student set stu_birthday=sysdate where stu_name='張三'
2.update t_student set stu_birthday=to_date('1994-05-03', 'yyyy- mm-dd') where stu_name='狗蛋';
3.update t_student set stu_birthday=to_date('1994-05-03 235830', 'yyyy-mm-dd hh24miss') where stu_name='二麻子';
4.update t_student set stu_birthday='05-03-94' where stu_name='蠢單子';
to_char的使用
- 查詢08 月份入職的所有員工的信息
select * from copy_emp where to_char(hire_date,'mm') = '08'; - 查詢本月入職的所有的員工信息
select * from copy_emp where to_char(hire_date,'mm') = to_char(sysdate,'mm'); - 查詢星期x 入職的員工信息
select * from copy_emp where to_char(hire_date,'day') = to_char(sysdate,'day');
函數
to_date(): 將其他類型轉換為date類型
to_char(): 將其他類型轉換為char類型
修改列名
alter table t_student rename column s_bir to str_bir;
模糊查詢LIKE(%表示0個或多個字元,_表示一個字元)
select * from table where table_name LIKE '%stu%';
約束
非空約束NOT NULL
修改約束(可為空) : alter table t_student modify s_name null;
若要追加非空NOT NULL約束, 必須在這個欄位信息不為空的時候追加.
查詢約束條件
1.通過表結構查詢
2.select * from USER_CONSTRAINTS where table_name = upper('t_student');
查詢到表的約束名: SYS_C007550
刪除約束
alter table t_stu drop CONSTRAINTS SYS_C007550;
唯一鍵約束UNIQUE
特點:
- 唯一鍵約束用於確保所在欄位或欄位組合不出現重覆的值.
- 唯一性約束的欄位允許出現空值.
- Oracle會自動為唯一鍵約束創建唯一性索引.
- 有值時,不可以重覆, 空值時,可以有多個null.
欄位組合做唯一性約束
或者:
alter table t_student add CONSTRAINTS UQ_no_name UNIQUE(stu_no,stu_name);
主鍵約束 PRIMARY KEY
特點:
- 唯一表示表中的某一條記錄.
- 相當於非空且唯一
- 一個表中只可以有一個主鍵
- 可以是單個欄位或者多個欄位的組合
聯合主鍵
由多個欄位組合而成的主鍵也稱聯合主鍵
聯合主鍵中每一個欄位都不能為空
聯合主鍵欄位組合的值不能出現重覆
constraint PK_stuId_subId primary key(stu_name,sub_name)
)
外鍵約束 FOREIGN KEY
外鍵約束特點:
- 外鍵用於確保相關的兩個欄位之間的參照關係,以實現參照完整性約束
- 外鍵約束通常構建於來自不同表的兩個欄位之間
- 子表外鍵列的值必須在主表參照列值得範圍內,或者為空
- 外鍵參照的必須是主表的主鍵或者唯一鍵
- 主表主鍵/唯一鍵值被子表參照時,主表相應記錄不允許被刪除
eid number(3) references t_empinfo(eid) on delete cascade,
或者 CONSTRAINTS stu_con_FK foreign key (c_no) references t_class(c_no);
約束 約束名 外鍵(欄位名) 參考 表(欄位名)
刪除主表的時候, 引入的數據 級聯刪除, on delete cascade 級聯刪除
刪除主表內容的時候, 引用的字表的欄位置空. on set null 級聯置空
檢測約束 CHECK
age number(3) check(age>=0 and age<=120)
同時使用主鍵約束和check約束
name varchar2(20) primary key check(length(name)>=6),