中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java37:數(shù)據(jù)庫(Oracle)

DB2

站在用戶的角度思考問題,與客戶深入溝通,找到羅山網(wǎng)站設(shè)計與羅山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋羅山地區(qū)。

Oracle

Infomix

MySQL

Sybase

SQLServer

1 什么是數(shù)據(jù)庫

    數(shù)據(jù)需要持久保存

    (磁盤文件)

 數(shù)據(jù)庫(數(shù)據(jù)庫管理系統(tǒng))是個軟件

    安全,可靠,高效

 

 數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)中心

 關(guān)系型數(shù)據(jù)庫

    用表來存儲數(shù)據(jù)的數(shù)據(jù)庫

 SQL 通用的關(guān)系型數(shù)據(jù)庫的操作語言

 不同數(shù)據(jù)庫之間SQL有一定的差異

 NOSQL Not only SQL

    芒果DB......

   

T-SQL

PLSQL

  SQL 中的分類

    DDL(Data Definition Language) 數(shù)據(jù)定義語言

        create;drop...

    DML(Data Maniplation Language)數(shù)據(jù)操作語言

        insert;delete;update...

    TCL(Transaction Control Language)事物控制語言

        begin transaction;commit;rollback....

    DQL(Data Query Language) 數(shù)據(jù)查詢語言

        select...

    DCL(Data Control Language)數(shù)據(jù)控制語言

        grant;revoke...

 

 安裝Oracle(DBA/OP)

    創(chuàng)建庫(DBA/OP) 

    創(chuàng)建用戶(DBA/OP)

     登陸數(shù)據(jù)庫(RD)

      訪問數(shù)據(jù)庫(RD)

文檔

表名,

字段名 ,類型 ,說明

create 語句創(chuàng)建表, 指定表明 表有幾列,列名,每個列的類型

類型:

數(shù)字 number(m) 不能超過m

    number(m,n) 一共m位,小數(shù)占n位

字符串 varchar2(m) 不能超過m

    (可變長的字符串2版本)

日期 date

    有默認(rèn)格式 可以修改

    在插入日期時必須要符合這個格式

    對于日期可以使用to_date函數(shù)(但是保存在表中的數(shù)據(jù)還是系統(tǒng)設(shè)置的格式)

    第一個參數(shù)自己定義的格式

    to_date('2016-10-10','yyyy-mm-dd')

    第二個參數(shù)指明自定義格式

    

CREATE TABLE table_name 
    (column_name column_type);

//創(chuàng)建表
create table emp(id number(10),
          name varchar2(50),
          hire_date date,
          salary number(8,2));
//刪除表
DROP TABLE tablename;                
drop table emp;
//查看表的結(jié)構(gòu)(只能看表的結(jié)構(gòu),不能看數(shù)據(jù))
DESC tablename;
desc emp

//給表添加行
插入式可以指定為null
沒有插入的列就為null 除非有默認(rèn)值
INSERT INTO tablename(
    column_name,column_name,column_name)
    values
    (xxx,xxx,xxx,xxx);

insert into emp(id,name,hire_date,salary)values(101,'lmdtx',to_date('2016-10-10','yyyy-mm-dd'),123123.12);
OR
insert into emp values (101,'lmdtx',to_date('2016-10-10','yyyy-mm-dd'),123123.12);

//修改表中的某些行 where 是根據(jù)具體的條件來
UPDATE table_name SET field1=new-value1;
UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]
update emp set salary=200 where id=101;

刪除表中行
DELETE FROM tablename;
DELETE FROM table_name [WHERE Clause];
delete from emp where id=101;


SELECT * FROM tablename;
SELECT * FROM tablename [WHERE Clause];
select * from emp;
select * from emp where salary>100;
select name,salary from emp where salary>100;

oracle 字符操作:

    varchar和varchar2 低版本還有區(qū)別高版本一樣的

    char 和 varchar2的區(qū)別:

        char 是定長  char(20)  無論用多少都是20空間

                =》指的是存儲空間

        varchar2是可變長 varchar2(20) 按照實際的給空間

                默認(rèn)是存儲20個英文字符的空間

    length()

    varchar2 中文:

        一個中文占用幾個字符要看你使用的編碼 

        oracle 不是用的Unicode

        在設(shè)計表的時候要注意  一般是中文長度 *3        

查看oracle 的字符編碼 userenv('language')

        

select userenv('language') from dual;

dual表 無實際意義,就是偽表給我們用一些函數(shù)使用的

    nvarchar2 類型  是幾個字符就是幾個字符 和編碼無關(guān)

char 和varchar2的最大長度

char 2000個

varchar2 4000個

 

字符串的連接 ||  或者用 conncat(m,n)函數(shù)

'aa'||'bb'

create table class(
    xing nvarchar2(50),
    ming nvarchar2(50)
);

insert into class values('張','三');
insert into class vlaues('steve','steve')
select xing||ming from class;
select xing||'.'||ming from class;
select concat(xing,ming) from class;
select concat(concat(xing,'.'), ming) from class;

trim 去掉前后空格trim(String);

ltrim 左邊空格

rtrim 右邊空格

lpad 在左邊填充字符到指定長度 lpad(String,50) 默認(rèn)是空格

rpad 在右邊填充字符到指定長度rpad(String,50,'*')

lower 小寫lower(String)

upper 大寫

initcap 首字母大寫

length 求長度

substr 截取字符串 substr(String,起始位置)  取到結(jié)尾

            substr(String,起始位置,取多少個)

            substr(String,-20) 從后往前20個

    從1 開始

instr 在一個字符串中查找字符串  

返回第一次找到的位置    instr(String1,String2) 在String1 中查找String2

從1開始         instr(String1,String2,5) 在String1 中查找String2 從第5個開始找 

           instr(String1,String,5,2)在String1 中查找String2從第5個開始找到的第2個

create table emp(id number(10),
          name varchar2(50),
          hire_date date,
          salary number(8,2));
desc emp;

insert into emp(id,name,hire_date,salary)values(101,'lmdtx',to_date('2016-10-10','yyyy-mm-dd'),123123.12);

select *from emp;

select * from emp where id=102;

select name,salary from emp where salary>1000;

update emp set salary=100 where id=102;

update emp set salary=3000 where id=1011;

update emp set salary=99999 where id>2000;

update emp set salary=99999999999 where id=101;

delete  from emp where id = 010;

delete  from emp where id = 101;

drop table emp;

create table INFO_COST(
  ID number(11) primary key not null,
  COST_DESC VARCHAR2(200),
  BASE_DURATION number(11),
  BASE_COSR number(11,2),
  UNIT_COST number(11,2));
  
insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(1,'包20小時',20,2.45,0.30);
  
insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(2,'包40小時',40,3.45,0.30);
  
insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(3,'包100小時',100,4.45,0.30);

insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(4,'包200小時',200,5.45,0.30);
  
insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(5,'普通資費',null,null,0.20);
  
insert into INFO_COST(ID,COST_DESC,base_duration,base_cosr,unit_cost
)values(6,'包月',null,10,null);
  
update INFO_COST set unit_cost= unit_cost+(unit_cost*10) where id<5;
  
delet from INFO_COST WHERE id=5;
  
select COST_DESC,unit_cost from INFO_COST;


create table foo_1(c1 char(5),c2 varchar2(5));
insert into foo_1 values('abc','abc');
select length(c1),length(c2) from foo_1;

create table foo_2(c1 varchar(6));
drop table foo_2;
insert into foo_2 values('你好');
select * from foo_2;
select userenv('language') from dual;
desc dual;


create table foo_3(c1 nvarchar2(2));
insert into foo_3 values('你好');

create table class(
    xing nvarchar2(50),
    ming nvarchar2(50)
);

insert into class values('張','三');
select xing||ming from class;
insert into class values('steve','steve')
select xing||ming from class;
select xing||'.'||ming from class;
select concat(xing,ming) from class;
select concat(concat(xing,'.'), ming) from class;

create table foo_4(c1 varchar(500));
drop table foo_4;
insert into foo_4 values('     the fortification in your pole. It is like a peek your wallet as the thief, 
when you are thinking how to spend several hard-won lepta, when you are wondering whether new money, it has laid background.
    Because of you, then at the heart of the most lax, alert, and most low     of    ');
    
select trim(c1) from foo_4;
select ltrim(c1) from foo_4;
select rtrim(c1) from foo_4;
select lower(c1) from foo_4;
select upper(c1) from foo_4;
select initcap(c1) from foo_4;
select lpad(c1,600) from foo_4;
select lpad(c1,600,'@') from foo_4;
select substr(c1,100) from foo_4;
select substr(c1,100,120) from foo_4;
select substr(c1,-20) from foo_4;
select instr(c1,'of') from foo_4;
select instr(c1,'of',224) from foo_4;
select instr(c1,'of',224,2) from foo_4;

Oracle 日期操作

1日期類型

date 年月日時分秒(基本都是人輸入)

timestamp 年月日時分秒(秒帶小數(shù)點)(系統(tǒng)來 時間戳)

sysdate 系統(tǒng)時間

systimestamp 系統(tǒng)時間戳

select sysdate from dual;
select systimestamp from dual;

to_date 把一個字符串轉(zhuǎn)換為日期

select todate('201610-10','yyyy-mm-dd') from dual;

to_char 把時間轉(zhuǎn)換為指定的格式

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
create table foo_5(d1 date);
insert into foo_5 values(to_date('2016/10/10 09:00:00','yyyy/mm/dd hh:mi:ss'));
insert into foo_5 values(sysdate);
select to_char(d1,'yyyy~mm~dd hh34:mi:ss') from foo_5;
select to_char(d1,'yyyy~mm~dd hh34:mi:ss') from foo_5 where d1>sysdate;

last_day 計算所在月的最后一天

months_between 一個日期和另一個日期差幾個月

least 一個日期和給定日期那一個時間更早

返回小的

greatest一個日期和給定日期那一個時間更近

返回大的

create table foo_6(birthday date);
insert into foo_6 values(to_date('1990/09/09','yyyy/mm/hh'));
insert into foo_6 values(to_date('1890/09/09','yyyy/mm/hh'));
insert into foo_6 values(to_date('2016/10/10','yyyy/mm/hh'));
select to_char(last_day(to_date('2016/10/10','yyyy/mm/dd')),'dd') from dual;
select months_between(sysdate, birthday)/12 from foo_6;
select to_char(least(birthday,to_date('2016/08/08','yyyy-mm-dd')),'yyyy-mm-dd') from foo_6;
select least (1, 3 ) from dual 
select to_char(greatest(birthday,to_date('2016/08/08','yyyy-mm-dd')),'yyyy-mm-dd') from foo_6;
select greatest (1, 3 ) from dual

round  對時分秒進行舍入 24小時制 12點后 算明天

trunc    對時分秒直接去掉

select to_char(round(sysdate),'yyyy/mm/dd') from dual;
select to_char(trunc(sysdate),'yyyy/mm/dd') from dual;

用于從一個date或者interval類型中截取到特定的部分 

extract(year from 日期)

extract(MONTH from 日期) 

extract(DAY from 日期)

extract(HOUR from 日期)

extract(MINUTE from 日期)

extract(SECOND from 日期)

select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
select extract(hour from systimestamp) from dual;
select extract(minute from systimestamp) from dual;
select extract(second from systimestamp) from dual;

create 

drop (很少用,必須少用)

alter (很少用,必須少用,在 create 的時候要考慮好)

create table foo_11(
    n1 number(20);
    c1 varchar(50);
    
);
insert into foo_11 values(1,'abc');
insert into foo_11 values(null,'bcd');
insert into foo_11 values(3,null);
select * from foo_11 where c1 is null;

null 相關(guān):

nvl

nvl(arg1,arg2)

如果arg1 為null 返回arg2

如果arg1不為null 返回arg1

nvl2(arg1,arg2,arg3)

如果arg1為null 返回arg3;

如果arg1不為null 返回arg2;

select nvl(c1,'空')from foo_11;
select nvl2(c1,'非空','空') from foo_11;

not null 約束

 指定某些列不能為null

create table foo_12(
    n1 number(20) not null;
    c1 varchar(20) not null;
);

number的舍入(先舍入,在看長度  )

create  table  foo_13(
    n1 number(5),
    n2 number(5,2), //對多的小數(shù)位直接舍棄,整數(shù)位多報錯
    n3 number(5,-1),//  倒數(shù) 變 0  抹掉零頭..先舍入,在看長度  最后一個0不算
);

主鍵 

數(shù)據(jù)的唯一性

1創(chuàng)建主鍵

主鍵也是列(多列,聯(lián)合主鍵)

一般沒有業(yè)務(wù)含義

唯一標(biāo)識數(shù)據(jù)表中的某一行

必須有主鍵

類型組好是number

主鍵不為null

主鍵不能重復(fù)

constraint 主鍵約束名 primary key(主鍵列)

create table stu(
  stu_id number(11),
  stu_no number(8),
  stu_name varchar2(50),
  constraint stu_pk primary key(stu_id)
);

insert into stu values(123,100001,'張三');

修改表

刪除:

drop 刪除表

drop table stu;

delete刪除數(shù)據(jù) 可以恢復(fù),速度慢

delete table stu;
delete table str where stu_id=123;

truncate刪除表內(nèi)容不能恢復(fù),速度快

truncate table stu;

alter

添加列

如何增加not null列

    增加一個可以為空的列

    update設(shè)置值

    將該列改為not null

設(shè)置為主鍵

     更麻煩

修改列的屬性

刪除列

create table foo_22
  ( name varchar2(50)
  );
insert into foo_22 values('張三');
insert into foo_22 values('李四');
insert into foo_22 values('王五');
insert into foo_22 values('趙六');
insert into foo_22 values('齊七');

alter table foo_22 add
(
  salary number(8,2)
);

desc foo_22;

select * from foo_22;

alter table foo_22 modify(
  name varchar2(55) not null
);

desc foo_22;

alter table foo_22 add(
  s_id number(8)
);

desc foo_22;

update foo_22 set s_id=3 where name='張三';
update foo_22 set s_id=4 where name='李四';
update foo_22 set s_id=5 where name='王五';
update foo_22 set s_id=6 where name='趙六';
update foo_22 set s_id=7 where name='齊七';

select * from foo_22;

alter table foo_22 drop column s_id;

desc foo_22;
select * from foo_22;

拷貝數(shù)據(jù)

但是不能復(fù)制約束

create table emp2 
as select empno, ename, job,sal
from emp;

create table emp2 
as select empno, ename, job,sal
from emp where ename='lmdtx';

拷貝表結(jié)構(gòu)(在where 子句中 加上一個不成立的條件)但是不能復(fù)制約束

create table emp3
as select * from emp
where 1=2;

>= 

<= 

<> 不等于

AND 

OR

select * from emp2 where ename=''

a' or 'b'='b
注入***
select * from emp2 where ename='a' OR 'b'='b';

like 模糊查詢

 % 任意個字符

    M% 開頭是M的

    %M% 有M的

 _ 一個字符

select * from emp2 where ename like 'M%';
select * from emp2 where ename like '%A%';
select * from emp2 where ename like '_A%';

where 子句中的between ** and **

select salary from emp2 where salary between 1500 and 3000;

where 子句 中的 in 和 not in

select salary from emp2 where salary in (100,200,300);
 
select * from emp2 where ename='WARD' or ename='JAMES';

select * from emp2 where ename in ('WARD','JAMES');

select * from emp2 where ename not in ('WARD','JAMES');

where 子句判斷空值 is null 和 is not null

select * from emp2 where ename is null;
select * from emp2 where ename is not null;

where 中 子查詢

select * from emp2 where SAL=(select salary from emp2 where ename='WARD');
select *  from emp2 where ename in (select ename from emp2 where sal<1000 );

where 中 可以使用函數(shù)

select * from emp2 where length(ename)>4;

select 列的別名

    select 查詢的結(jié)果可以看成是一個邏輯上的一張表

select ename name from emp2;
        列名
             別名

select ename 姓名 from emp2;

去重 distinct

select distinct salary from emp2;

select 中可以使用函數(shù)

select ename||job from emp2;
select  ename||'='||job namejob from emp2;//在加上一個別名

聚合函數(shù)(聚集函數(shù))

count// null的不計數(shù)  統(tǒng)計 主鍵可以查有多行

select count(ename) from emp2;

min

select max(salary) from emp2;

max

select max(salary) from emp2;

sum

select sum(salary) from emp2;

avg

select avg(salary) from emp2;

排序

order by 對查詢的結(jié)果 可以根據(jù)某個或者幾個列進行排序

    默認(rèn) asc 升序  

       desc 降序

  order by 后面也可以使用函數(shù)

    多個列

        先按照一個排序 再按照另一個拍 用

select ename,salary from emp2 where salary>1200 order by salary;

select ename,salary from emp2 where salary>1500 order by salary desc;

select ename,salary from emp2 where salary>1500 order by length(ename);

select ename,salary from emp2 orderby salary,length(ename);

分享標(biāo)題:Java37:數(shù)據(jù)庫(Oracle)
分享鏈接:http://www.rwnh.cn/article26/gpopcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)虛擬主機、搜索引擎優(yōu)化、全網(wǎng)營銷推廣、小程序開發(fā)、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
仙桃市| 正定县| 昌邑市| 高邑县| 白城市| 泽库县| 望城县| 隆德县| 深水埗区| 射阳县| 肇源县| 波密县| 准格尔旗| 九江县| 赫章县| 隆林| 永川市| 鄱阳县| 南安市| 民县| 尼玛县| 黔南| 开化县| 宜川县| 江达县| 广元市| 盘锦市| 广东省| 罗山县| 岳西县| 仙居县| 台山市| 盖州市| 东兴市| 延庆县| 肥西县| 江津市| 和顺县| 鄢陵县| 阿坝县| 泽州县|