1、Oracle基礎數據類型:
數據類型:
java
- 建立數據表時,設計數據表的結構問題,也就是設計及肯定數據表中各個列的數據類型,是數值、字符、日期仍是圖像等其餘類型。
- 由於只有設計好數據表結構,系統纔會在磁盤開闢相應的空間,用戶才能向表中填寫數據。
4類:
字符型:字符串
char(最大2000), nchar(最大1000, 支持Unicode)--->固定長度的字符串。
varchar(最大4000), nvarchar2(最大2000, 支持Unicode)--->可變長度的字符串。數據庫
數字類型
包括整數和小數
number(有效數字, 總位數);
聲明語法:NUMBER(p,s)函數
-
-
-
-
- p表示精度,s表示小數點的位數
- 能夠存儲整數、浮點數等數值類型,最高精度爲38位。
-
-
-
例如:NUMBER(5,0) 最多可存儲五位整數
NUMBER(5,2) 最多可存儲999.99的浮點數
flaot-->存儲二進制類型的數據, 1-126位0.30103
日期類型:時間
date:取值範圍:公元前4712年1月1號---公元9999年12月31號, 能夠直接精確到秒
timestamp(時間戳: 更精確的數據, 能夠精確到毫秒)
其它類型:大文本, 文件
blob(binary LOB): 最大4G, 以二進制的形式來存放數據,能夠存儲較大的二進制對象,如:圖形、視頻剪輯和聲音文件。
clob(charcater LOB): 最大4G, 以字符串的形式存放,它可以存儲大量字符數據。spa
Oracle運算符和表達式設計
表達式相似於java, 能夠是常量, 能夠是變量, 也能夠是表中的一個字段
算術運算符(+ - * /)
比較運算符(> >= < <= = <>/!=)
邏輯運算符(and or not)
字符串鏈接符(||)日誌
經常使用關鍵字:
insert into----insert into 表名 values ();code
delete-----DELETE 表名 WHERE 列名 運算符 條件視頻
update----UPDATE 表名 SET 列名=值 WHERE 限制條件對象
select---儘可能不要寫*blog
where
in
like(%, _)---模糊查詢,%表示0個或多個;_表示一個;
order by----SELECT * FROM emp ORDER BY deptid DESC, ID DESC(排序,加上desc成倒序)
group by--(group by 加強)-------結合分組函數使用 SELECT deptid FROM emp GROUP BY deptid
having
case...when...--------SELECT CASE E.SSEX WHEN 1 THEN '男' WHEN 0 THEN '女' ELSE '不詳' END bb FROM EMP E;
set
distinct----去除一列中的重複;
between...and(閉合區間, 即包括前面的數, 也包括後面的數)
all-------SELECT * FROM emp e WHERE e.intime>=ALL(SELECT e1.intime FROM emp e1);
2、Oracle基本操做
一、建立表:
經過create table語句
語法結構以下:
create table table_name(
column_name datatype;
)
二、修改和刪除表
- 添加列:
語法結構:alter table 表名 add 新增列名 數據類型
如:alter table student add tel varchar2(11);
- 修改列:
語法結構:alter table 表名 modify 列名 新數據類型;
如:alter table student modify tel number(11,0);
- 刪除列:
語法結構:alter table 表名 drop colunm 列名;
如:alter table student drop column tel;
- 修改列名:
語法結構:alter table 表名 rename column 列名 to 新列名;
如:alter table student rename column sex to gender;
- 修改表名:
語法結構:rename 表名 to 新表名
如:rename student to studentinfo;
三、增刪改查
DML基本操做:添加信息insert
查詢信息selete
修改信息update
刪除信息delete
添加信息:
語法結構:insert into 表名[(列1,列2,...,列n)] values(值1,值2,...,值n);
如:insert into student(sid,name,sex) values(2001,'張三','女');
insert into student(sid,name,sex,address,brithday) values(2001,'張三','女','北京',to_date('19900909','YYYYMMDD'));
insert into student values(2001,'張三','女','北京',to_date('19900909','YYYYMMDD'));
查詢信息:
語法格式:selete *|column[...] from 表名;
如:一、查詢全體學生的學號和姓名
selete sid,name from student;
二、查詢全體學生
selete * from student;
三、查詢學號不等於20的學生 !=
selete * from student where sid!=20;
四、查詢學號在20-30範圍的學生 between and | in
selete name from student where sid>=20 and sid<=30;
selete name from student where sid between 20 and sid 30;
selete name from student where sid in (20,30);
五、模糊查詢,查詢以s開頭的學生姓名 xx%
selete name from student where name like 'S%';
查詢姓名含有S的學生
selete name from student where name like '%S%';
說明:與like搭配用,'s%'中的字母區分大小寫。
六、佔位查詢,查詢名字爲5個字母,而且第二位是的學生姓名
selete name from student where name like '_o____';
七、not 與not null,查詢沒有學號|有學號的學生
selete * from student where sid is null|not null;
八、查詢學生的出生日期
selete * from student where birthday between '10-1月-90' and '10-12月-90';
九、查詢學生信息
selete sid,name,sex,to_char(date,'yyyy-mm-dd hh24:mm:ss') as 入職時間 from student;
十、查詢系統時間
selete sysdate from sys.dual;
十一、任意字段與null都爲null null+1000=null
selete sid+1000,name,sex from student;
十二、nvl()函數設置null爲0,nvl(sid,0)
selete nvl(sid,0)+1000,name,sex from student;
1三、|| 每一個字段能夠經過||進行拼接
selete sid,name,sid||'---'||sex from student;
1四、查詢學生不重複的地址 去重複distinct
selete distinct address from student;
1五、按學號升序查詢 order by asc升序(默認隱藏)/desc降序
selete * from student order by sid asc
修改信息:
語法格式:update table
set column=value[column=values,...]
[where condition];
如:update student set tel='123' where sid=2001;
update student set address='北京朝陽';
刪除信息:
語法格式:delete from table[where condition];
如:delete from student;
delete from student where sid=2001;
- delete命令(數據操做語言DML)
格式:delete 表名;
如:刪除學生表 delete student;
注意:一、用delete刪除表,只是刪除表中的數據,表結構不會被刪除。
二、雖然是刪除整個表的數據,可是刪除過程是系統一行一行地刪,效率比truncate低。
三、delete刪除是不釋放空間的,刪除後數據庫容量大小不變。
四、delete 語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。因此能夠對delete操做進行Rollback回滾數據信息。
- truncate命令(數據定義語言DDL)也叫截斷表
格式:truncate table 表名;
如:刪除學生表 truncate table student;
注意:一、用truncate刪除表,只是刪除表中數據,表結構不會被刪除,刪除內容、釋放空間但不刪除定義,還能夠新增元素。
二、刪除整 個表的數據時,刪除過程是系統一次性進行刪除數據,效率比較高。
三、truncate刪除會釋放空間,不會觸動任何delete觸發器。
四、Rollback無效。
五、truncate 將從新設置高水平線和全部的索引。在對整個表和索引進行徹底瀏覽時,通過 truncate 操做後的表比Delete操做後的表要快得多。
六、不能清空父表。
truncate與delete比較:
一、truncate table 在功能上與不帶 WHERE 子句的 delete語句相同,兩者均刪除表中的所有行。 二、 truncate 比 delete速度快,且使用的系統和事務日誌資源少。 三、當表被清空後表和表的索引講從新設置成初始大小,而delete則不能。
|
- drop命令(數據定義語言DDL)
格式:drop table 表名
如:刪除學生表 drop table student
注意:一、用drop刪除表數據,不但會刪除表中數據,也會將表結構刪除。
二、自動提交,Rollback無效,不會觸動觸發器,會將空間釋放出來。
四、複製表
能夠從其餘用戶,選用已存在的表。
如:scott中的dept表,拖拽到右側顯示欄,彈出框選擇單個語句,顯示2-7行,再添加1行,就能將此表dept中全部信息複製到本地表depts中。
1 create table depts as 2 SELECT 3 deptno, 4 dname, 5 loc 6 FROM 7 scott.dept;