每次修改數(shù)據(jù)后使用 commit; 提交數(shù)據(jù)!=宋裳擎!
最好不要在操作界面關(guān)閉sql,而是exit退出斯碌,否則插入的數(shù)據(jù)再次登錄會(huì)消失(回滾數(shù)據(jù))
清空界面clear scr
創(chuàng)建表空間
create tablespace hg
datafile 'hg.dbf' size 10M
autoextend on;
查看默認(rèn)和臨時(shí)表空間
select default_tablespace,temporary_tablespace from user_users;
修改默認(rèn)表空間
alter user username(用戶名) default tablespace test(表空間名);
查看表空間里的所有表
select TABLE_NAME,TABLESPACE_NAME from dba_tables
where TABLESPACE_NAME='表空間名';
注意:表空間名要大寫(xiě)HG
表設(shè)置約束
alter table student
add constraint uq_stuid unique(id);唯一約束
alter table student
add constraint 6d foreign key(majorid) references majorinfo(majorid);
外鍵約束
foreign key 注意數(shù)據(jù)大小定義要一致
刪除表
alter tablespace tablespace_name
drop table table_name;
刪除表中數(shù)據(jù)(行)
delete from table_name
where id='0001';
修改表中數(shù)據(jù)
update student
set tel='13812345678';
where id='150001';
查詢表中所有數(shù)據(jù)
select * from student;
查詢表中無(wú)重復(fù)全部數(shù)據(jù)
select distinct * from student;
給列設(shè)置別名
select coursename AS 課程名稱(別名),price AS 課程價(jià)格(別名) from courses;
對(duì)查詢結(jié)果排序
查詢courses表中的課程名稱一死、打八折后的課程價(jià)格,并按課程價(jià)格降序排序输拇,按課程名稱升序排序
select coursename as 課程名稱,price*0.8 as 折后課程價(jià)格 from courses
order by 折后課程價(jià)格 DESC摘符,課程名稱 ASC;
(若折后課程價(jià)格相同策吠,則按課程名稱排序)
使用case when語(yǔ)句查詢(對(duì)結(jié)果進(jìn)行判斷以顯示不同的值)
select coursename as 課程名稱 ,case
when price>=200 then price*0.8
when price>=100 then price*0.9
end as 價(jià)格 from courses;
查詢courses逛裤,如果typeid為1001,則顯示'數(shù)據(jù)庫(kù)'猴抹,如果typeid為1002带族,則顯示'編程語(yǔ)言'
select coursename as 課程名稱,case typeid
when 1001 then '數(shù)據(jù)庫(kù)'
when 1002 then '編程語(yǔ)言'
end as 課程類型 from courses;
模糊查詢 _代替一個(gè)字符蟀给,%代替0到多字符
查詢課程名稱中有'Java'的課程信息
select coursename,price from courses
where coursename LIKE '%Java%';
統(tǒng)計(jì)每類課程的平均價(jià)格蝙砌,并要求平均價(jià)格高于200
select typeid,AVG(price), from courses
group by typeid
having AVG(price)>200;? //where中不能用聚合函數(shù)
統(tǒng)計(jì)所有價(jià)格不低于200的每類課程的平均價(jià)格
select typeid,AVG(price) from courses
where price>=200
group by typeid;
統(tǒng)計(jì)每類課程平均價(jià)格,并按平均價(jià)格降序排序
select typeid,AVG(price) from courses
group by typeid
order by AVG(price) desc;? //order by必須放在查詢語(yǔ)句最后面
笛卡爾積(行數(shù)為兩張表行數(shù)相乘跋理,列數(shù)為兩張表列數(shù)相加)
select * from table_name
內(nèi)連接
查詢課程信息表和課程類型信息表择克,顯示課程名稱和課程類型名稱
select courses.coursename,typeinfo.typeid
from courses INNER JOIN typeinfo? //INNER JOIN表示內(nèi)連接
ON courses.typeid=typeinfo.typeid;? //ON后面加條件
外連接
左外連接LEFT、右外連接RIGHT前普、全外連接FULL
使用右連接查詢課程信息表和課程類型信息表的信息
select courses.coursename,typeinfo.typename
from courses right outer join typeinfo
on courses.typeid=typeinfo.typeid;
子查詢(嵌套查詢)
通常用在from和where字句中
查詢課程價(jià)格高于平均價(jià)格的課程信息
select coursename,price
from courses
where price>(select AVG(price) from courses);
abs函數(shù)(絕對(duì)值)
select abs(-123),abs(123) from dual;
結(jié)果:abs(-123)? abs(123)
? ? ? ? 123? ? ? ? 123
length函數(shù)(求字符長(zhǎng)度)
將日期型轉(zhuǎn)換為字符型
select to_char(sysdate,'YYYY-MM-DD DAY HH24:MI:SS ') from DUAL;
運(yùn)行結(jié)果:
TO_CHAR(SYSDATE,'YYYY-MM-DDDAY
------------------------------
2019-10-01 星期二 15:08:14
自定義函數(shù):
創(chuàng)建函數(shù)
create FUNCTION fun(price NUMBER)/*參數(shù)名 數(shù)據(jù)類型*/
return NUMBER/*返回?cái)?shù)據(jù)類型*/
IS
BEGIN/*開(kāi)始*/
return price*0.6;/*實(shí)現(xiàn)業(yè)務(wù)邏輯語(yǔ)句*/
END;/*結(jié)束*/
/? /*結(jié)束符*/
算術(shù)運(yùn)算符: 加+ 減- 乘* 除/ 連接||
加減乘除用于數(shù)值型的值計(jì)算肚邢,連接用于字符型的值連接,如'123'||'456'結(jié)果是123456
比較運(yùn)算符: > >= < <= !=或<> = 用于兩個(gè)表達(dá)式之間比較
邏輯運(yùn)算符:與AND 或OR 非NOT,優(yōu)先級(jí):非>與>或
優(yōu)先順序:算數(shù)運(yùn)算符>比較運(yùn)算符>邏輯運(yùn)算符
定義常量
constant_name constant datatype;
例:class_name constant varchar2(20):='計(jì)算機(jī)一班';
定義變量
variable_name datatype[:=value];
例:age number(3):=20;
更改變量:age:=25;
set serverout on? /*要顯示輸出結(jié)果必須加這條語(yǔ)句骡湖,執(zhí)行一次即可*/
DECLARE? /*聲明*/
age number(3):=20;
name varchar2(20):='張三';
BEGIN
DBMS_OUTPUT.PUT_LINE('年齡='||age);
DBMS_OUTPUT.PUT_LINE('姓名='||name);
END;
/? /*必須加斜桿才開(kāi)始執(zhí)行上面的語(yǔ)句*/
IF語(yǔ)句
使用if判斷贱纠,若姓名是‘張三’,則輸出‘正確’响蕴,否則輸出‘錯(cuò)誤’
DECLARE
name varchar2(20):='張三';
BEGIN
IF name='張三' THEN
DBMS_OUTPUT.PUT_LINE('正確')谆焊;
ELSE
DBMS_OUTPUT.PUT_LINE('錯(cuò)誤');
END IF;
END;
/
IS/AS區(qū)別
在存儲(chǔ)過(guò)程(procedure)和函數(shù)(function)中沒(méi)有區(qū)別
在視圖(view)中只能用AS
在游標(biāo)(cursor)中只能用IS
create table student
(
id varchar2(10),
name varchar2(20),
majorid varchar2(20),
classid varchar2(10),
sex varchar2(2),
nation varchar2(20),
entrancedate varchar2(20),
idcard varchar2(20),
tel varchar2(20),
email varchar2(20),
remarks varchar2(100)
);
create table majorinfo
(
majorid varchar2(20),
majorname varchar2(20)
);
create table classinfo
(
classid varchar2(10),
grade varchar2(10),
classname varchar2(20)
);
create table course
(
courseid varchar2(10),
coursename varchar2(20),
credit number(3,1),
remarks varchar2(100)
);
create table gradeinfo
(
studentid varchar2(10),
courseid varchar2(10),
grade number(4,1),
semester varchar2(16),
remarks varchar2(100)
);
insert into classinfo values('1401','2014級(jí)','計(jì)算機(jī)1班');
insert into classinfo values('1302','2013級(jí)','會(huì)計(jì)1班');
insert into classinfo values('1503','2015級(jí)','自動(dòng)化1班');
insert into majorinfo values('0001','計(jì)算機(jī)');
insert into majorinfo values('0002','會(huì)計(jì)');
insert into majorinfo values('0003','自動(dòng)化');
insert into course values('1001','計(jì)算機(jī)基礎(chǔ)','0.5','無(wú)');
insert into course values('1002','會(huì)計(jì)電算化','1','無(wú)');
insert into course values('1003','電子技術(shù)','1','無(wú)');
insert into student values('150001','張小林','0001','1503','男','漢','2015.9','無(wú)','13112345678','無(wú)','無(wú)');
insert into student values ('140001','王銘','0002','1401','男','回','2014.9','無(wú)','13212345678','無(wú)','無(wú)');
insert into student values('130001','吳琦','0001','1302','女','漢','2013.9','無(wú)','13312345678','無(wú)','無(wú)');
insert into gradeinfo values('150001','1001','86','2015第一學(xué)期','無(wú)');
insert into gradeinfo values('140001','1002','90','2014第二學(xué)期','無(wú)');
insert into gradeinfo values('130001','1001','92','2014第一學(xué)期','無(wú)');
create view? v_student
as select student.name,majorinfo.majorname,classinfo.classname,student.entrancedate,student.tel
from student,classinfo,majorinfo
where student.majorid=majorinfo.majorid and student.classid=classinfo.classid;
select name,majorname,classname from v_student;
create index ix_stuname
on student(name);
create bitmap index ix_stumajor
on student(majorid);
select index_name,index_type from dba_indexes where table_name='STUDENT';
使用序列添加專業(yè)信息
create sequence seq_majorid
increment by 1
start with 1
maxvalue 9999999999
minvalue 1;
insert into majorinfo values(seq_majorid.NEXTVAL,'計(jì)算機(jī)');
insert into majorinfo values(seq_majorid.NEXTVAL,'會(huì)計(jì)');
insert into majorinfo values(seq_majorid.NEXTVAL,'自動(dòng)化');
select * from majorinfo;
為學(xué)生信息表創(chuàng)建同義詞
create SYNONYM stuinfo
for system.student;
select id,name from stuinfo;