oracle 11g 學習筆記

1、Check規則

Check (Agebetween15and30 )把年齡限制在15~30歲之間

2、新SQL語法

在調用某一函數時,可以通過“=>符號來為特定的函數參數指定數據。而在Oracle11g中,在SQL語句中也可以這樣的語法,例如:

Select f( x => 6)from dual ;

3、將sequence的值賦給變量

11g之前的賦值方式Select seq_x.next_val intov_x from dual ;

11g賦值方式v_x :=seq_x.next_val ;

4、SQL的功能

?4.1數據定義

Create ,Drop ,Alter

?4.2數據操縱

Select , insert , update , delete

?4.3數據控制

Grant, Revoke

5、Oracle創建語法

?1、表空間

createtablespacelq_oradatadatafile'd:\oracle_test\user_data01.dbf'

size32mautoextendonnext32mmaxsize2048mextentmanagementlocaluniformsize16m ;

?2、臨時表空間

createtablespacelq_oradata_temptempfile

'd:\oracle_test\temp_data01.dbf'

size32mautoextendonnext32mmaxsize2048mextentmanagementlocaluniformsize16m ;

?3、創建用戶

create user lq identified by lq

default tablespacelq_oradata

temporary tablespace temp;

注:此處的temp為系統臨時表空間,也可以自定義臨時表空間;

?4、給用戶授權

grant connect,resource to lq;

?5、創建表

createtableit_employees (

employee_idnumber(6)notnullunique,

first_namevarchar2(30) ,

last_namevarchar2(30)notnull,

emailvarchar2(30),

phone_numbervarchar2(15),

job_idvarchar2(10),

salary_numbernumber(8,2),

manager_idnumber(6)

)

添加數據

insertintoit_employees(employee_id,first_name,last_name,email,phone_number,job_id,salary_number,manager_id,birth_date)

values(seq_employee.nextval,'Micheal','Joe','mj_aui01@188.com','13149258943','it_prog',5000.67,seq_employee.nextval,to_date('2011-11-01','yyyy-mm-dd'));

?6、創建視圖

給用戶分配創建視圖的權限

A:首先授予查詢所有表的權限

grant select any

table tolq;

B:再次授予查詢所有字典表的權限

grant select any

dictionary tolq;

C:如果已經分配以上權限,還是權限不足,則可分配管理員權限

grant dba tolq;

createviewprog_employees

as

selectemployee_id,first_name,last_name,email,phone_number,salary_number,manager_id

fromit_employees

wherejob_id='it_prog'

with check option;

注:可加上with check option;

?7、創建索引

聚簇索引:指索引向的順序與表中記錄的物理順序相一致的索引組織。

用戶可以在查詢頻率最高的列上建立聚簇索引,從而提高查詢效率。由于,聚簇索引是將索引和表記錄放在一起存儲,所以在一個基表上只能創建一個聚簇索引;在建立聚簇索引后,由于更新索引列數據時會導致表中物理順序的變更,系統代價較高,因此對于經常更新的列不宜建立聚簇索引。

Create [unique] [cluster] index [索引名]

On <表名> (<列名>[<次序>],<列名>[<次序>],<列名>[<次序>]……)

其中,unique表示此索引的每一個索引值不能重復,對應唯一的數據記錄。Cluster表示要創建的索引為聚簇索引。索引可以建立在對應表的一列或者多列上,如果是多個列,各個列之間需要用逗號分隔。<次序>用于指定索引值的排列次序,ASC表示升序,DESC表示降序,默認為ASC.

Create indexit_lastnameonit_employees(last_name)

描述:執行后會在表it_employees的last_name列上建立一個索引。

而it_employees表中的數據將按照last_name值升序存放。

6、Oracle刪除語法Drop

?6.1:刪除表

Droptable<表名>

刪除表時,表中的數據、在該表上建立的索引一并都會被刪除。

?6.2:刪除視圖

Drop view <視圖名>

?6.3:刪除索引

Drop index <索引名>

7、Oracle修改語法Alter

Alter table <表名>

[add <新列><數據類型>[完整性約束]]

新增birth_date列

Altertableit_employeesaddbirth_date date;

[Drop<完整性約束>]

刪除employee_id字段的unique約束

Altertableit_employeesDrop unique(employee_id);

[Modify <列名> [數據類型]]

將manager_id字段改為8位

Altertableit_employeesmodifymanager_id number(8)

8、Oracle查詢select

?8.1:簡單查詢

8.1.1使用from子句指定表

select * from hr.countries ;

select * from hr.countries,hr.departments;

8.1.2使用select指定列

Selectcolumn name_1, ……

column name_n

Fromtable_name_1 , table_name_2 .

8.1.3算術表達式

Selectem.first_name,em.last_name,

em.salary_number*(1+0.2) "new_salar y"

fromit_employees em;

查詢出員工薪資上調10%之后的結果,為了提高刻度性,可以為列重新制定顯示標題"new_salar y";

注:如何列標題中包含一些特殊字符,例如空格等,則必須使用雙引號將列標題擴起來。

8.1.3distinct關鍵字

Select distinct job_id from it_employees;

?8.2:where子句

8.2.1條件表達式

selectem.employee_id, em.first_name,em.last_namefromit_employees emwhereem.first_namelike'B%';

判斷first_name以“B”開頭的雇員;

8.2.2連接運算and / or

selectem.employee_id, em.first_name,em.last_namefromit_employees em

whereem.phone_number='15321981677'

andem.salary_number >6000;

用and做連接符,電話號碼和薪酬為判斷條件;

-------------------------------------------------

selectem.employee_id, em.first_name,em.last_namefromit_employees em

whereem.first_name='Britney'

orem.salary_number <6000;

8.2.3 NULL值

首先插入一條記錄,此處Email只為NULL

insertintoit_employees(employee_id,first_name,last_name,email,phone_number,job_id,salary_number,manager_id,birth_date)

values(seq_employee.nextval,'Britney','Joe',NULL,'15321981677','it_prog',10000.67,seq_employee.nextval,to_date('2011-11-01','yyyy-mm-dd'));

查詢值為null的語句:

select*fromit_employees emwhereem.emailisnull;

select*fromit_employees emwhereem.emailisnotnull;

?8.3:order by子句

selectem.last_name, em.job_id , em.salary_number

fromit_employees em

whereem.salary_number >5000

orderbyem.job_id,em.salary_numberdesc;

order by子句后邊可指定多個列名,首先根據第一列排序,當第一列值相同時,再對第二列進行比較排序,以此類推;

?8.4:groupby子句

通過Group By進行的查詢:

selectem.job_id,avg(em.salary_number),sum(em.salary_number),max(em.salary_number),count(em.job_id)

fromit_employees emgroupbyem.job_id ;

可以在group by后使用rollup或者cube進行匯總,在查詢結果中都會附加一條匯總信息,sql如下:

selectem.job_id,avg(em.salary_number),sum(em.salary_number),max(em.salary_number),count(em.job_id)

fromit_employees emgroupbyrollup(em.job_id) ;

?8.5:Having子句

selectjob_id ,avg(SALARY_NUMBER) ,sum(SALARY_NUMBER),max(SALARY_NUMBER),count(*)

fromIT_EMPLOYEESgroupbyJOB_IDhavingavg(SALARY_NUMBER) >5500

通常與Group by子句一起使用,在完成對分組統計后,可以使用Having子句對分組的結果做進一步篩選;

?8.6:多表連接查詢

8.6.1基本形式

將表employees和表departments相連接,從而生成一個笛卡積:

Selectemployee_id, last_name , department_name fromemployees , departments ;

8.6.2條件限定

selectit.employee_id,it.last_name, dm.department_name

fromit_employees it , departments dm

whereit.department_id = dm.department_id;

selectit.employee_id,it.last_name, dm.department_name

fromit_employees it , departments dm

whereit.department_id = dm.department_id

anddm.department_name ='Shipping';

8.6.3表別名

8.6.4 Join連接

Fromjoin_table1join_typejoin_table2

[ON(join_Condition)]

8.6.4.1內連接

select em.employee_id, em.last_name,dep.department_name

from it_employees eminnerjoindepartments dep

on em.department_id = dep.department_id

where em.job_id='it_prog';

8.6.4.2自然連接

Selectem.employee_id, em.first_name, em.last_name, dep.department_name fromit_employees emnatural

joindepartmentsdepwhere dep.department_name=’Sales’

8.6.4.3外連接

左外連接:

selectem.employee_id, em.last_name, dep.department_name

fromit_employees emleftouterjoindepartments dep

onem.department_id = dep.department_id

whereem.job_id='it_prog';

右外連接:

selectem.employee_id, em.last_name, dep.department_name

fromit_employees emrightouterjoindepartments dep

onem.department_id = dep.department_id

wheredep.location_id =1700;

完全外連接:

selectem.employee_id, em.last_name, dep.department_name

fromit_employees emfullouterjoindepartments dep

onem.department_id = dep.department_id

wheredep.location_id =1700or em.job_id=’it_prog’;

8.6.4.4自連接

selectem1.last_name "manager" , em2.last_name "employee"

fromit_employees em1leftjoinit_employees em2

onem1.employee_id = em2.manager_id

orderbyem1.employee_id;

?8.7:集合操作

Union (并運算)UNION ALLInTerSect(交運算)Minus (差運算)

8.7.1Union

/*** < unionall>***/形成的結果集中包含有兩個結果集中重復的行。

selectit.employee_id, it.last_namefromit_employeesit

whereit.last_namelike'%e'orit.last_namelike'j%'

union

selectem.employee_id , em.last_namefromit_employees em

whereem.last_namelike'j%'orem.last_namelike'%o%';

8.7.2Intersect

Intersect查詢結果保留Last_name以j開頭的雇員

selectit.employee_id, it.last_namefromit_employeesit

whereit.last_namelike'%e'orit.last_namelike'j%'

intersect

selectem.employee_id , em.last_namefromit_employees em

whereem.last_namelike'j%'orem.last_namelike'%o%';

8.7.3Minus

例:返回Last_name以e結尾的集合

selectit.employee_id, it.last_namefromit_employeesit

whereit.last_namelike'%e'orit.last_namelike'j%'

minus

selectem.employee_id , em.last_namefromit_employees em

whereem.last_namelike'j%'orem.last_namelike'%o%';

?8.8:子查詢

8.7.1in關鍵字

selectemployee_id, last_name , department_id

from it_employees

where department_idIn

(

selectdepartment_id fromdepartments

wherelocation_id=1700

)

8.7.2Exists關鍵字

selectemployee_id, last_name , department_id

from it_employeesem

whereexists

(

select * fromdepartmentsdep

where em.department_id= dep.department_id

andlocation_id=1700

)

8.7.3比較運算符

selectemployee_id , last_name , job_id , SALARY_NUMBER

fromit_employees

whereJOB_ID ='it_prog'

andSALARY_NUMBER >= (selectavg(SALARY_NUMBER)fromit_employeeswherejob_id='it_prog')

9、數據操縱

?9.1:Insert

9.1.1一般Insert

Insertinto[user.]table[@db_link] [([column1, column2… culumnx])]

Values([express1],[ express2]……)

insertintojobs (job_id,job_title,min_salary,max_salary)

values('it_test','測試員',3500.00,8000.00);

/***注:以下Desc… insert未測試成功***/

descjobs

insertintojobsvalues('it_dba','管理員',5000.00,15000.00)

9.1.2批量Insert

insertintoemployees(employee_id,first_name,last_name,email,phone_number,job_id,salary_number,manager_id)

selectem.employee_id,

em.first_name,

em.last_name,

em.email,

em.phone_number,

em.job_id,

em.salary_number,

em.manager_id

fromit_employees em , departments dep

whereem.department_id = dep.department_id

anddep.department_name='Shipping';

?9.2:Update

updateemployeessetsalary_number = salary_number*1.15

wherejob_id ='it_prog'

updateit_employeessetsalary_number=

(

select avg(salary_number) fromit_employees

where job_id='it_prog'

)

whereemployee_id=11;

?9.3:Delete

deletefromit_employeeswhereemployee_id=31;

?9.4: Truncate

truncatetableemployees;

10、數據控制

?10.1 Grant語句

Grantselect on table it_employees to User1 ;

Grantallprivileges on table it_employees , jobs toUser2 ;

Grant selecton table department to public ;

Grant update(employee_id), select on tableit_employees to User4;

Grant insert on table departmentto user5 with grant option ;

Grant createtab on database db_employees toUser8 ;

?10.2Revoke語句

Revokeupdate(employee_id)on tableit_employees from user4 ;

Revokeselect on table departmentfrompublic;

Revokeinsert on table department from User5 ;

11、Oracle常用函數

?11.1字符類函數

11.1.1 ASCII()

Selectascii('A')big_a,ascii('a') small_afromdual ;

11.1.2CHR()

Selectchr(65) ,chr(97),chr(100)fromdual ;

11.1.3Concat( c1,c2 )

selectconcat('oracle','11g')fromdual ;

返回的是

11.1.4initcap(C1)

selectinitcap('oracleuniversal installer')fromdual ;

返回的結果:

11.1.5 instr(c1,[c2,,[j]])

select instr('Moisossoppo','o',3,3) from dual;

返回的結果:

select instr('Moisossoppo','o',-2,3) fromdual ;

返回的結果:

11.1.6length(C1)

selectlength('oracle

11g') lgfromdual ;

結果:

11.1.7 lower(C1)

select*fromjobs;

結果:

selectlower(job_id)fromjobswherelower(job_id)like'it%'

結果:

11.1.8Ltrim(c1,c2)

selectltrim('Moisossoppo','Mois')fromdual ;

結果:

11.1.9replace(c1,c2,[c3])

selectreplace('feelblue','blue','yellow')fromdual ;

結果:

11.1.10substr(c1,,[j])

selectsubstr('Message',1,4)fromdual ;

Result :

?11.2數字類函數

?11.3日期類函數

?11.4轉換類函數

?11.5聚集類函數

第四章:Oracle PL/SQL語言及編程

?4.1 PL/SQL簡介

4.1.1pl/sql的基本結構

4.1.2pl/sql注釋

A:單行注釋

createtableclasses (

class_idnumber(6)primarykey,

departmentchar(3)

)

altertableclassesaddcoursenumber ;

createsequenceseq_class_id

incrementby1--每次增加1

startwith100--100開始

nomaxvalue--不設置最大值

nocycle--一直累加不循環

cache10;

declare--單行注釋聲明

v_departmentchar(3);--保存3個字符的變量

--系統代碼

v_Coursenumber;--保存課程號的變量

begin

v_department:='tes';

v_Course :=19;

insertintoclasses(class_id,department , course)

values(seq_class_id.nextval,v_department,v_Course);

end;

commit;

B:多行注釋

/**

多行注釋

**/

declare

v_departmentchar(3);

v_Coursenumber;

begin

v_department :='duo';

v_Course :=99;

insertintoclasses(class_id,department ,course)

values(seq_class_id.nextval,v_department,v_Course);

end

;

commit;

4.1.3pl/sql字符集

A:合法字符集

B:分界符(delimiter)

4.1.4pl/sql數據類型

A:數字類型

B:字符類型

C:日期類型

D:布爾類型

E:type定義的數據類型(rowtype)

例:

/**

pl/sql數據類型使用type定義teacher_record記錄變量

**/

typeteacher_recordisRecord--record定義之后,在以后的使用中就可以定義基于teacher_record的記錄變量

(

tidnumber(5)notnull:=0,

namevarchar2(50),

titlevarchar2(50),

sexchar(1)

)

--定義一個teacher_record類型的記錄變量

ateacher

teacher_record ;

4.1.5pl/sql變量和常量

A:定義常量

Pass_Scoreconstantinteger:=60;

B:定義變量

C:變量初始化

4.1.6pl/sql語句控制結構

A:選擇結構

(1)If語句

(2)Case語句

declare

v_gradevarchar2(20) :='及格';

v_scorevarchar2(50);

begin

v_score:=Casev_grade

when'不及格'then'成績< 60'

when'及格'then'60<=成績< 70 '

when'中等'then'70<=成績< 80 '

when'良好'then'80<=成績< 90 '

when'優秀'then'9 0<=成績< 100 '

else'輸入有誤'

end;

dbms_output.put_line(v_score);

end;

運行結果如下:

B:NULL結構

/**

null結構(添加變量是否為null的判斷)

**/

declare

v_number1number;

v_number2number;

v_resultvarchar2(7);

begin

ifv_number1isnullorv_number2isnullthen

v_result ='Unknown';

elsifv_number1

v_result ='yes'

elsev_result ='no'

end;

end;

C:循環結構

(1)Loop…exit … end語句

declare

control_valnumber:=0;--初始化control_val值為0

begin

loop--開始循環

dbms_output.put_line(control_val);--打印測試

ifcontrol_val >5then--如果control_val的值大于5則退出循環

exit;

endif;

control_val :=control_val+1;--否則改變control_val的值

endloop;--結束循環

end;

(2)Loop… exitwhen …end語句

declare

control_valnumber:=0;--初始化control_val值為0

begin

loop--開始循環

dbms_output.put_line(control_val);--打印測試

exitwhencontrol_val >6;--如果control_val的值大于6則退出循環

control_val:=control_val+1;

endloop;

end;

(3)While…loop…end;

(4)declare

(5)control_valnumber:=0;

(6)begin

(7)whilecontrol_val <=5--如果變量小于或等于5就循環

(8)loopcontrol_val:=control_val+1;

(9)dbms_output.put_line(control_val);--打印測試

(10)endloop;

(11)end;

(4)for… in … loop …end

這是個預知循環次數的循環控制語句:

declare

control_valnumber:=0;

begin

forcontrol_valin0.. .9loop

dbms_output.put_line(control_val);

null;

endloop;

end;

null為空操作語句,它表示什么也不做,在程序中用來標識此處可以加執行語句,起到一種記號的作用;

(5)GOTO語句示例

4.1.7pl/sql表達式

A:字符表達式

declare

hnvarchar2(20) :='hello';

wnvarchar2(20) :='world!';

rtnvarchar2(20) ;

begin

ifhisnotnullandwisnotnull

thenrt:=h||w;

dbms_output.put_line(rt);

endif;

end;

運行結果:

B:布爾表達式

begin

if 'Scott' not in ('Mike','John','Mary')

then dbms_output.put_line('false');

end if ;

end;

運行結果:

?4.2 PL/SQL的游標

4.2.1基本原理

4.2.2顯示游標

顯示游標的處理包括:聲明游標、打開游標、提取游標、關閉游標4個步驟;其操作過程如下圖:

注:聲明游標需要在塊的聲明部分進行,其他3步驟都在執行部分或異常處理中進行。

A:聲明游標

B:打開游標

Open <游標名>;

1)檢查聯偏變量的取值;

2)根據聯偏變量的取值,確定活動集;

3)活動集指針指向第一行;

C:提取游標

D:關閉游標

Close <游標名>;

查出employees表中的所有數據:

執行下邊定義的sql:

--1,游標的聲明

declare

FIRST_NAMEVARCHAR2(30);--定義四個變量來存放employees表中的內容

LAST_NAMEVARCHAR2(30);

EMAILVARCHAR2(30);

phone_numvarchar2(30);

cursoremployee_curis

selecte.first_name,e.last_name,e.email,e.phone_number

fromemployeese

wheree.employee_id<10;--選出編號大于5的所有雇員

--2,游標的開啟

begin

openemployee_cur;

--3,提取游標(fetch語句每執行一次,游標向后移動一行,直到結束;游標只能逐個向后移動,而不能跳躍移動或者向前移動)

fetchemployee_curintoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

--4,關閉游標

loop

exitwhennotemployee_cur%found;--如果游標到尾則結束

ifFIRST_NAME='lq'then

dbms_output.put_line('名稱為:lq');

else

dbms_output.put_line('沒有合法用戶');

endif;

fetchemployee_curintoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

endloop;

closeemployee_cur;

end;

得出的結果為:

注:使用顯式游標時,需要注意以下事項:

4.2.3隱式游標

4.2.4游標屬性

A:是否找到游標(%found)

B:是否沒找到游標(%found)

C:游標行數(%RowCount)

--1,游標的聲明

declare

FIRST_NAMEVARCHAR2(30);--定義四個變量來存放employees表中的內容

LAST_NAMEVARCHAR2(30);

EMAILVARCHAR2(30);

phone_numvarchar2(30);

cursoremployee_curis

selecte.first_name,e.last_name,e.email,e.phone_number

fromemployeese

wheree.employee_id<10;--選出編號大于5的所有雇員

--2,游標的開啟

begin

openemployee_cur;

--3,提取游標(fetch語句每執行一次,游標向后移動一行,直到結束;游標只能逐個向后移動,而不能跳躍移動或者向前移動)

fetchemployee_curintoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

--4,關閉游標

loop--如果游標到尾則結束(判斷游標當前行數,即當前只抽取3條記錄)

exitwhennotemployee_cur%foundoremployee_cur%rowcount=3;

ifFIRST_NAME='lq'then

dbms_output.put_line('名稱為:lq');

else

dbms_output.put_line('沒有合法用戶');

endif;

fetchemployee_curintoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

endloop;

closeemployee_cur;

end;

D:游標是否打開(%IsOpen)

E:參數化游標

--敲回車后會彈出輸入對話框,輸入即可。

--ACCEPT my_tid prompt 'please input the tid';

ACCEPTmy_tidprompt'please input the tid';

declare

my_tid

number:=10;--定義的參數或者直接用以上prompt輸入參數

FIRST_NAMEVARCHAR2(30);--定義四個變量來存放employees表中的內容

LAST_NAMEVARCHAR2(30);

EMAILVARCHAR2(30);

phone_numvarchar2(30);

cursoremployee_cur(cursor_idnumber)is--定義游標時帶上參數

selecte.first_name,e.last_name,e.email,e.phone_number

fromemployeese

wheree.employee_id

begin

ifemployee_cur%isopenthen

loop

fetchemployee_cur

intoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

exitwhenemployee_cur%notfound;

endloop;

else

openemployee_cur(my_tid);--帶上實參數

loop

fetchemployee_cur

intoFIRST_NAME,LAST_NAME,EMAIL,phone_num;

exitwhenemployee_cur%notfound;

endloop;

endif;

closeemployee_cur;

end;

4.2.5游標變量

Oracle 11 G從入門到精通閱讀至126頁,文檔未完待續。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容

  • 一、select語句 日期和數值型字段可以進行加減乘除 關于NULLNULL表示不可用,未賦值,不知道,不適用,所...
    比軒閱讀 3,111評論 2 17
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,722評論 18 399
  • 數據操縱語言 DML(Data Manipulation Language – 數據操縱語言) 可以在下列條件下執...
    MPPC閱讀 453評論 0 3
  • SQL語言基礎 本章,我們將會重點探討SQL語言基礎,學習用SQL進行數據庫的基本數據查詢操作。另外請注意本章的S...
    厲鉚兄閱讀 5,339評論 2 46
  • 1、組函數:組函數作用于一組數據,并對一組數據返回一個值。 AVG 平均值COUNT計數MAX最大值MIN最小值S...
    Shaw_Chen閱讀 507評論 0 2