SQL 常用語句書寫格式以及示例
阿新 • • 發佈:2018-12-18
建立表:
Create table 表名 ( s_id number(4) , s_name varchar2(10) , s_sex char(2) );
刪除表:
Drop table 表名;
重命名錶名:
Rename 舊錶名 to 新表名 ;
新增列:
Alter table 表名 add ( s_age number(3) );
刪除列:
Alter table 表名 drop( S_sex );
修改列:
Alter table 表名 modify( s_id number(4) default null not null, s_name varchar2(10) default null not null );
修改列名:
Alter table 表名 rename column 舊列名 to 新列名 ;
插入表資料的兩種書寫方式:
1.insert into 表名 (列名) values (值) ;
如:insert into 表名 (s_id) values (0301) ;
2.insert into 表名 values (值) ;
如:insert into 表名 values (0302,’張三’,20) ;
查詢列表所有資訊:
Select * from 表名 ;
查詢一個列表資訊(加where條件):
Select * from 表名 where s_id = 302;
修改列表內容:
Update 表名 set s_name = ‘李四’,age = 18 where s_id=301;
刪除列表內容:
Delete from 表名 where s_id = 301 ;
求最高分:
Select * from 表名 where grade =(select max(grade) from sc) ;
合一起顯示:
Select “concat”(s_id s_name) from sc ;
返回字元的長度:
Select 列名,length(列名) from 表名 ;
大小寫轉換:
Select upper(‘hello world’),lower(‘HELLO WORLD’),initcap(‘hello world’) from 表名(列名);
四捨五入:
Elsect round(45.567,1) from 表名;//——45.6
Elsect round(45.567,0) from 表名;//——46
Elsect round(45.567,-1) from 表名;//——50
取餘:
Select 列名,mod(列名,數值) from 表名;
取整:
Select ceil(1.5) from 表名;//-----2(向上)可用列名
Select floor(1.5) from 表名;//----1(向下)可用列名
檢視當前的日期(秒):
select sysdate from 表名;
建立時間列:
Registerdate date default sysdate ;
檢視當前時間(毫秒):
Select systimestamp from表名 ;
字串轉日期:
Insert into 表名(列名,列名)values(‘張三’,to_date('1991-12-22','YYYY-MM-DD'));
日期轉字串:
Select to_char(列名,'YYYY"年"MM"月"DD"日" HH24"時"MI"分"SS"秒"')from 表名 ;
空值轉換:
1.select nvl(列名,數值) from 表名 ;
2.select nvl2(列名,數值,數值) from 表名 ;(列屬性為空選擇第二個數值,不為空選一)
模糊查詢:
1.Select * from 表名 where 列名 like ‘張%’;查詢資料庫中有沒有姓“張”的
2.Select * from 表名 where 列名 like ‘%張%’;查詢資料庫中有沒有姓名帶“張”的
範圍值:
1.select * from 表名 where 列名 in (範圍 如:‘張偉’,‘張三丰’);在此範圍的
2.select * from 表名 where 列名 not in (範圍 如:‘張偉’,‘張三丰’);不在此範圍的
3. between 範圍 如:6000 and 10000 ;
過濾重複:
Select distinct 列名 from 表名 ;
排序:
select * from 表名 order by 列名 desc ;
select * from 表名 order by 列名 asc(不寫預設為asc) ;
最大,最小,平均,和,次數:
Select max(列名),min(列名),avg(列名),sum(列名),count(列名或*)from 表名;
內外連線:
Select 列名 列名 from 表名 left join 表名 on 條件等 ;
自連線:
Select a.列名 ,b.列名 from 表名 a ,表名 b 條件等 (同一個表名);
單行子查詢:
Select * from 表名 where grade =(select max(grade) from sc) ;
多行子查詢:
Select 列名 from 表名 where 列名 in (select 列名 from 表名);
偽列:
1.Select rownum,列名 from 表名 where rownum between 1 and 3 ;--查詢123號資訊
2.select * from(Select rownum rn,列名 from 表名)where rn between 4 and 5 ;
查詢系統當前擁有的賬號:
Select username from all_users ;
授予許可權:
Grant connect to 使用者 ;(connect角色允許使用者連線至資料庫,並建立對應資料庫物件)
Grant resource to 使用者 ;(resource 角色允許使用者使用資料庫的儲存空間)
授權所有:
Grant all privileges to 使用者名稱 ;
建立使用者:
Create user 使用者名稱 ;
Create user 賬號 identified by 密碼 ;(建立成功之後需要授權才能使用)
刪除使用者:
Drop user 使用者名稱 ;
授權檢視操作:
grant create any view to 使用者名稱;
建立檢視:
Grant view 檢視名 as 查詢的需要合併的表,例如:
Select student.*,sc from student,sc where student.sno=sc.sno;(不需要加括號,但是要授權之後才能執行)
檢視檢視:
Select * from 檢視名 ;
建立序列:
Create sequence 序列名
Start With i(指定要產生的第一個序列數 (如果該子句被省略,序列從1 開始) )
Increment by j(指定序列號之間的間隔,在這兒 j 是一個整數 (如果該子句 被省略,序列增量為1))
Maxvalue m(指定序列能產生的最大值)minvalue n(指定最小序列值)
Cycie(指定序列在達到它的最大或最小值之後,是否繼續產生)
Cache n (定Oracle伺服器預先分配多少值,並且保持在記憶體中(預設 情況下,Oracle伺服器緩衝20個值)) ;(以上每項不寫均有預設值,不需要了解)
檢視使用者有哪些序列:
Select* from user_sequences;
刪除序列:
Drop sequence 序列名 ;
獲取序列當前值:
Select 序列名.currval from dual;
獲取序列的下一個值:
Select 序列名.nextcal from dual;`
插入表資料時自動獲取序列號(不能重複):
Insect into 表名(編號列名,列名)values(序列名.nextcal,值);
製作表的自增ID:
Creact or replace trigger 取名
Before insert on 表名 (在對XX表執行insert語句之前觸發)
For each row (作用到每一行,不寫自動預設)
When (new.id is null)(當新的一行的ID欄位是空的時候)
Begin
Select 序列名.nextval into:new.id from dual ;
End;
檢視約束:
Select * from 系統表 where 系統表名中的列名 = upper(系統表名中的列名);
刪除約束:
Alter table 表名 drop constraint 約束名;
檢查約束:
Alter table 表名 add constraint 約束取名 check(列名和條件 如:salary >2000);