1. 程式人生 > >SQL 常用語句書寫格式以及示例

SQL 常用語句書寫格式以及示例

建立表:

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);