--表示系統時間
select sysdate from dual
--表是關係型數據庫的基本結構
--表是二維的,由行和列組成
--行稱爲記錄,列稱爲字段
--建立第一張表
create table hw(
name varchar2(20), --Java中的String數據類型在這裏用varchar2,number(6,2)6位中有2位小數
age number(2),
address varchar2(50)
);
--查看建立的表
desc hw;
--刪除表(其實是刪除表結構)
drop table hw;
--修改表結構alter table name modify();
alter table hw modify(name varchar2(15));
alter table hw drop(name);
alter table hw add(Xingming varchar2(20));
--修改表名
rename hw to hw1;
--插入一條數據
insert into hw (name,age,address) values('李',22,'長清區紫薇閣')
insert into hw (name) values('陳')
--查看錶數據
select * from hw;
--刪除表中的數據delete [from] hw where xxx=xxx; delete 用來刪除表中的數據,drop刪除表頭
delete hw where name='李';
--修改數據update name set col='' where col=''
update hw set age=21 where age is null;
update hw set name='再見' where age is not null;
update hw set name='' where age=null;
char(1)--表示一個字符,經常表示性別
--DDL:數據定義語言,操做表頭。create table name();drop table name;alter table name motify();
--DML:數據操做語言,操做數據 insert into name() values();delete[from]hw where xxx=xxx;update name set xxx= where yyy=null;
--drop table emp :刪除表emp;
--char&varchar2:char :定長字符,聲明多少佔用多少,不夠的補空格。varchar2變長字符,實際用多少佔用多少。
--char最大2000字節,varchar2最大4000個字節,long最大2G,clob最大4G,一張表只能有一個clob。
--concat:將兩個字段合成一個字段
--||鏈接符
實例:
--建立一個表 emp
create table emp(
empno number(4,0),
ename varchar2(10),
job varchar2(9),
rngr number(4,0),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2,0)
);
--向表中插入數據
insert into emp values(7369,'smith','clerk',7902,to_date('1980/12/17','yyyy-mm-dd'),800.00,null,20);
insert into emp values(7499,'allen','salesman',7698,to_date('1981/12/20','yyyy-mm-dd'),1600.00,300.00,30);
insert into emp values(7521,'ward','salesman',7698,to_date('1982/2/22','yyyy-mm-dd'),1250.00,500.00,30);
insert into emp values(7566,'jones','manager',7839,to_date('1981/4/2','yyyy-mm-dd'),2975.00,null,20);
insert into emp values(7654,'martin','manager',7698,to_date('1981/9/28','yyyy-mm-dd'),1250.00,1400.00,30);
insert into emp values(7698,'blake','manager',7839,to_date('1981/5/1','yyyy-mm-dd'),2850.00,null,30);
insert into emp values(7782,'clark','manager',7839,to_date('1981/6/9','yyyy-mm-dd'),2450.00,null,10);
insert into emp values(7788,'scott','analyst',7566,to_date('1987/4/19','yyyy-mm-dd'),3000.00,null,20);
insert into emp values(7839,'king','president',null,to_date('1981/11/17','yyyy-mm-dd'),5000.00,null,10);
insert into emp values(7844,'turner','salesman',7698,to_date('1981/9/8','yyyy-mm-dd'),1500.00,0.00,30);
insert into emp values(7876,'adamas','clerk',7788,to_date('1987/5/23','yyyy-mm-dd'),1100.00,null,20);
insert into emp values(7900,'james','clerk',7698,to_date('1981/12/3','yyyy-mm-dd'),950.00,null,30);
insert into emp values(7902,'ford','analyst',7566,to_date('1981/12/3','yyyy-mm-dd'),1300.00,null,20);
insert into emp values(7934,'miller','clerk',7782,to_date('1982/1/23','yyyy-mm-dd'),1300.00,null,10);
commit --提交
select *from emp; --查看錶中的內容
--||鏈接符
select concat(concat(ename,':'),sal)from emp;
select ename||':'||sal from emp; --查看錶中enama和sal,而且鏈接起來
--length 返回字符串的長度
select ename,length(ename)from emp; --查看錶中ename表頭下的長度
--lower,upper,initcap:轉換大小寫或者首字母大寫。
select lower(ename)from emp; --將enanme屬性下的轉換爲小寫並列出
select upper(ename)from emp; --轉換爲大寫
select initcap(ename)from emp; --轉換爲首字符大寫
--截去子串/左截去/右截去 : trim/ltrim/rtrim
select trim(7 from empno)from emp; --截去7個
select ltrim('qwer','q')from dual; --從左邊截去q
select rtrim('qwer','r')from dual; --從右邊截去r
--補位函數 lpad/rpad
select sal from emp;
select lpad(sal,5,'+') from emp; --sal補爲五位,sal自己不夠的補+
--截取字符 substr('',m,n)從第m個開始,截取n個字符
select substr('Following the track of the gale,I am chasing the sun.',33,25) from dual; --獲得I am chasing the sun.
--instr(char1,char2)反回char2在char1中的位置(第幾個)
select instr('qwer','w') from dual;
--round(num,int): 四捨五入,保留int位小數,int+1位四捨五入
select round(3.1415926,2) from dual;
select round(46.33,-1)from dual;
--trunc(num,int):無條件捨棄int位小數後面的數
select trunc(123456,-2)from dual;--個位爲-1,十位爲-2.
--mod(m,n)返回m餘n
select mod(5,3)from dual;
select sal,job from emp;
--ceil/floor:向上/向下取整
select ceil(3.18)from dual;
select floor(3.18)from dual;
--to_date():將字符串格式轉換爲系統格式
--查看81年之後入職的都有誰
select *from emp where hiredate>to_date('1987-01-01','yyyy-mm-dd');
--to_char:轉換爲字符串格式
select sal,ename from emp ;
select ename,job,to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;
--last_day(time):返回time所在月的最後一天
select last_day(sysdate) from dual;
--查看每一個員工入職月的最後一天
select last_day(hiredate)from emp;
--add_months(d,i)返回日期d過了i個月的時間是哪天
select add_months(sysdate,10)from dual;
--查看員工入職二十週年記念日
select add_months(hiredate,12*20)from emp;
--months_between(time1,time2):計算time1與time2隔了多少個月
--香港迴歸了多久
select round(months_between(sysdate,to_date('1997-07-1','yyyy-mm-dd')))from dual;
--計算個人一百週年誕辰
select round(months_between(to_date('2097-11-6','yyyy-mm-dd'),sysdate))from dual;
select round(months_between(add_months(to_date('1997-11-6','yyyy-mm-dd'),12*100),sysdate))from dual;
--next_day():返回下一個周幾,要看這個周的周幾有沒有過,過了就是指下週,沒過就是指本週,
select next_day(sysdate,1)from dual;
--nvl(arg1,arg2):若第一個參數爲null,則轉換爲第二個參數。
--查看員工每一個月領走多少錢
select ename,sal,comm,sal+nvl(comm,0) from emp;
--nvl2(arg1,arg2,arg3):判斷第一個參數是否爲null,若第一個參數爲null則返回arg3,不然返回arg2
select ename,sal,comm,nvl2(comm,sal+comm,sal)from emp;
--別名
select ename e,job j from emp;
--where通常用來添加條件
--查看十號部門的人
select * from emp;
select *from emp where deptno=10 ;
--誰是經理
select *from emp where job='manager';
--誰的薪資大於兩千
select *from emp where sal>2000;
--and&or用在條件中,表示而且&或者的意思
select *from emp where sal>2000 and job='manager';
--查看入職時間是81年之後,而且在20部門的人
select *from emp where deptno=20 and hiredate>to_date('1981-01-01','yyyy-mm-dd'); ---**
--like 模糊查詢
select *from emp where ename like '_a%';
select *from emp where job like '%na%';
--in¬ in 在&不在什麼內
select * from emp where job not in ('manager','clerk');
select * from emp where job !='manager' and job !='clerk';
--between a and b:查看在a和b範圍內有撒
select *from emp where hiredate between to_date('1981-01-01','yyyy-mm-dd')and to_date('1982-12-31','yyyy-mm-dd');
-- >any大於最小 <any 小於最大 >all大於最大 <all小於最小
select *from emp where sal >any(1500,3000)and sal <any(1500,3000);
--distinct(): 消除重複 select distinct(ename) from emp;