《SQL必知必會》學習筆記


基本常識

去掉返回結果空格


兩邊都去掉:TRIM

去掉左邊:LTRIM

去掉右邊:RTRIM

Union


默認,Union從查詢結果集中自動去除重復的行,如果想返回所有匹配的行,用Union ALL。如果需求是后者,即確實需要每個條件的匹配行全部出現(包括重復行),則必須使用Union ALL而不是WHERE。

對組合查詢結果排序
在用Union組合查詢時,只能使用一條Order By子句,它必須出現在最后一條SELECT語句之后。並且,它將用來排序所有SELECT語句返回的所有結果,而不僅僅是就近原則

主鍵和Null值


只有不允許Null值的列可用於主鍵,允許Null值的列不能用於主鍵。

添加/刪除主鍵


添加:
alter table add primary key({columnName});

刪除:
alter table drop primary key({columnName});

更新表


增加列
alter table {tableName} add {columnName};

刪除列
alter table {tableName} drop column {columnName};

P.K.

拼接字段


Oracle:||

***MySQL:***concat

substr 和 Left/Right


截取某字段左右字符

Oracle:substr

MySQL:Left/Right

創建/插入/查詢’YYYY-MM-DD HH:MM:SS’時間類型的字段


example:2017-04-22 20:01:02

創建

MySQLcreate table time (id int not null,time datetime);

Oracle:create table timetable(id int not null,time2 date);(表名和時間字段名稱不能為time,MySQL可以;字段類型MySQL是datetime,Oracle是date)

插入

MySQL:
insert into time values(1,'2017-04-22 20:01:02');

Oracle:
insert into timetable values(1,to_date('2017-04-22 20:01:02','yyyy-MM-dd hh24-mi-ss'));

查詢
以查詢2017年份為例

MySQL:
select time from time where year(time) = '2017';

Oracle:
select time2 from timetable where to\_number(to_char(time2,'YYYY'))='2017';

別名


MySQL:
select test as test1 from test;(通過as即可將test轉換為別名test1)

Oracle:
select test test1 from test;(Oracle中沒有as,所要定義的別名直接跟在原有的后面即可)

查看創建表的語句


MySQL:
show create table {tableName};

Oracle:

a.PL/SQL developer:表名->右擊->查看->查看SQL

b.SQL語句select * from TEST tselect dbms_metadata.get_ddl('TABLE',{tableName}) from dual;

重命名表名


MySQL:
rename table {tableName} to {newTableName};

Oracle:
rename {tableName} to {newTableName};

Oracle較MySQL在rename后無需table(PL/SQL Developer連接)

外鍵


example:讓table2中的主鍵cus_id作為table1中字段cus_id的外鍵
MySQL:
create table {table1} (id int not null primary key,cus_id int not null,foreign key(cus_id) references {table2}(cus_id);

以上的寫法是MySQL的表級約束,MySQL還提供了列級約束,但列級約束的外鍵約束並不會真正生效。
詳情請戳這->mysql 設置外鍵約束(foreign key)

Oracle:
create table {table1} (id int not null primary key,cus_id int not null references {table2}(cus_id);
耐人尋味地是,MySQL中列級約束的寫法在Oracle中可以完美實現外鍵約束的功能。

好圖集錦

1. 常用文本處理函數
常用文本處理函數

2. 常用算術處理函數
常用算術處理函數

3. Group By 必知必會
Group By 必知必會01
Group By 必知必會02
Group By 必知必會3

4. Insert 必知必會
Insert 必知必會01
Insert 必知必會02

5. 復雜表結構更改步驟
復雜表結構更改步驟01
復雜表結構更改步驟02

6. 視圖必知必會
為什么我們要使用視圖?01
視圖創建常見規則和限制01
視圖創建常見規則和限制02

7. 為什么要使用存儲過程?
為什么要使用存儲過程?

8. 主鍵必知必會
主鍵必知必會

9. 外鍵的好處以及唯一約束
外鍵的好處以及唯一約束

10. 索引創建必知必會
索引創建必知必會

11. 觸發器必知必會
觸發器必知必會01
觸發器必知必會02
觸發器必知必會03

12. 數據類型必知必會
數據類型必知必會01
數據類型必知必會02


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: