oracle創(chuàng)建表和基礎的增刪改查

-- 20181106講課內容

-- DDL 語句

創(chuàng)建表

--創(chuàng)建年級表tb_grade
create table tb_grade(
gradeId number(6) primary key, --主鍵
gradeName varchar2(20) not null, -- 年級名稱
addtime date
);
-- 創(chuàng)建班級表 tb_classs
create table tb_class(
classId number(6) primary key,
className varchar2(20) not null,
gradeId number(6) not null,
classNum number(3),
beginTime date,
endTime date,
constraint ck_classnum check (classNum>=20 and classNum<=50),

檢查/外鍵約束

-- 檢查約束挖息,班級人數不能小于20不能大于50
constraint fk_gradeid_tbgradeid foreign key(gradeId) references tb_grade(gradeId)
--外鍵,本表的某一個列指向另外一個表列(被關聯表的字段必須是唯一的)
);

字段操作

-- 為已經存在的表添加字段
alter table tb_class add remark varchar2(50);
-- 更新字段(如果該列有數據寸谜,變換類型或者是長度變小,都不行养距,需要先清空數據蝗砾,再更新)
alter table tb_class modify classNum number(5);
-- 刪除字段
alter table tb_class drop column remark;


-- DML語句

時間

-- sysdate oracle中取系統(tǒng)當前時間,相當于mysql中的now()
select sysdate from dual; -- dual oracle中的虛表,物理上不存在恬吕,為了讓語法健全签则,虛擬出來的表

增(union)

-- 單條添加
insert into tb_grade values(1,'一年級',sysdate);
-- 批量添加 union用法 合并查詢結果(合并重復內容),如果是union all 不合并重復內容
insert into tb_grade
select 2,'2年級',sysdate from dual union
select 3,'3年級',sysdate from dual union
select 4,'4年級',sysdate from dual union
select 5,'5年級',sysdate from dual union --all
select 5,'5年級',sysdate from dual;

-- 查詢
select * from tb_grade;
select * from tb_class;

join on

-- 查詢每個年級下的班級數量(即使年級下沒有班級也顯示0)铐料,顯示年級名稱和班級數量
select * from tb_grade a join tb_class b on a.gradeid=b.gradeid;
select * from tb_grade a left join tb_class b on a.gradeid=b.gradeid;

group by

-- 在分組查詢時select里面的所有字段在group by后面出現(除非使用聚合函數)
-- count 為null不計數
select a.gradename,count(b.classid) from tb_grade a left join tb_class b on a.gradeid=b.gradeid
group by a.gradename;
select a.gradename,count(b.classid) as cnum from tb_grade a left join tb_class b on a.gradeid=b.gradeid
group by a.gradename order by cnum desc;
--統(tǒng)計各個年級的總人數 nvl 相當于mysql ifnull
select a.gradename,nvl(sum(b.classnum),0) as cnum from tb_grade a left join tb_class b on a.gradeid=b.gradeid
group by a.gradename order by cnum desc;
-- 添加班級表
insert into tb_class(classid,classname,gradeid,classnum) values(1,'11班',1,20);
insert into tb_class(classid,classname,gradeid,classnum) values(2,'12班',1,24);
insert into tb_class(classid,classname,gradeid,classnum) values(3,'13班',1,21);
insert into tb_class(classid,classname,gradeid,classnum) values(4,'21班',2,25);
insert into tb_class(classid,classname,gradeid,classnum) values(5,'22班',2,25);
insert into tb_class(classid,classname,gradeid,classnum) values(6,'41班',4,25);
insert into tb_class(classid,classname,gradeid,classnum) values(7,'42班',4,25);
insert into tb_class(classid,classname,gradeid,classnum) values(8,'31班',3,25);

刪除

-- 刪除
delete from tb_grade where gradeid=7;
truncate table tb_grade ; --刪除數據
-- delete 和truncate區(qū)別 1,delete 刪除可以加條件 truncate不可以(只能整表刪除)
-- 2豺旬,delete 刪除時速度慢钠惩,刪除時記錄日志,如果誤刪數據族阅,在一定時間內可以找回
-- truncate 刪除速度快篓跛,不記錄日志,無法找回



序列

-- 為什么使用序列 oracle創(chuàng)建表時無法使用自增坦刀,oracle自增功能通過序列實現
-- 序列的創(chuàng)建
create sequence seq_tbgrade_id -- 定義序列名稱
start with 10 -- 定義開始值
increment by 1 -- 定義增量
minvalue 1 --最小值 不能高于開始值
maxvalue 9999999 -- 最大值(最大為27個9)
-- 序列的使用
-- nextval 下一個值 currval 當前值
select seq_tbgrade_id.currval from dual;--取當前值(必須先取下一個值)
select seq_tbgrade_id.nextval from dual; --取下一個值
-- 插入時使用
insert into tb_grade values(seq_tbgrade_id.nextval,'n年級',sysdate);
select * from tb_grade;
-- union 里面不能使用序列
select 1,'n年級',sysdate from dual union
select 2,'n年級',sysdate from dual union
select 3,'n年級',sysdate from dual;
select seq_tbgrade_id.nextval,'n年級',sysdate from dual union
select seq_tbgrade_id.nextval,'n年級',sysdate from dual union
select seq_tbgrade_id.nextval,'n年級',sysdate from dual;

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末愧沟,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子鲤遥,更是在濱河造成了極大的恐慌沐寺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盖奈,死亡現場離奇詭異混坞,居然都是意外死亡,警方通過查閱死者的電腦和手機钢坦,發(fā)現死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門究孕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爹凹,你說我怎么就攤上這事厨诸。” “怎么了禾酱?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵微酬,是天一觀的道長。 經常有香客問我宇植,道長得封,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任指郁,我火速辦了婚禮忙上,結果婚禮上,老公的妹妹穿的比我還像新娘闲坎。我一直安慰自己疫粥,他們只是感情好茬斧,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著梗逮,像睡著了一般项秉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上慷彤,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天娄蔼,我揣著相機與錄音,去河邊找鬼底哗。 笑死岁诉,一個胖子當著我的面吹牛,可吹牛的內容都是我干的跋选。 我是一名探鬼主播涕癣,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼前标!你這毒婦竟也來了坠韩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤炼列,失蹤者是張志新(化名)和其女友劉穎只搁,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體唯鸭,經...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡须蜗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了目溉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片明肮。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缭付,靈堂內的尸體忽然破棺而出柿估,到底是詐尸還是另有隱情,我是刑警寧澤陷猫,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布秫舌,位于F島的核電站,受9級特大地震影響绣檬,放射性物質發(fā)生泄漏足陨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一娇未、第九天 我趴在偏房一處隱蔽的房頂上張望墨缘。 院中可真熱鬧,春花似錦、人聲如沸镊讼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝶棋。三九已至卸亮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玩裙,已是汗流浹背兼贸。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留献酗,地道東北人寝受。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像罕偎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子京闰,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內容