關於SQL語句的一些細節,SQL語句細節

來源:互聯網
上載者:User

關於SQL語句的一些細節,SQL語句細節

一、插入insert 

1、主鍵對資料插入的影響
        主鍵是在同一張表中必須是唯一的, 如果在進行資料插入的時候指定的主鍵與表中已有
的資料重複的話則會導致違反主鍵約束的異常。

2、外鍵對資料插入的影響
外鍵是指向另一個表中已有資料的約束, 因此外鍵值必須是在目標表中存在的。 如果插
入的資料在目標表中不存在的話則會導致違反外鍵約束異常。

二、update更新:

1、非空約束對資料更新的影響
正如 “非空約束” 表達的意思, 如果對一個欄位添加了非空約束, 那麼我們是不能將這
個欄位中的值更新為 NULL 的。

2、主鍵對資料更新的影響
主鍵是在同一張表中必須是唯一的, 如果在進行資料更新的時候指定的主鍵與表中已有
的資料重複的話則會導致違反主鍵約束的異常。

3、外鍵對資料更新的影響
外鍵是指向另一個表中已有資料的約束, 因此外鍵值必須是在目標表中存在的。 如果更
新後的資料在目標表中不存在的話則會導致違反外鍵約束異常。

三、檢索

1、count(*) 和count(欄位) 不相同

如果某欄位為NULL,count 該列不會將空欄位算入其中



關於SQL一些常用語句

(1) 資料記錄篩選:

sql="select * from 資料表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 資料表 where 欄位名 like ‘%欄位值%‘ order by 欄位名 "
sql="select top 10 * from 資料表 where 欄位名 order by 欄位名 "
sql="select * from 資料表 where 欄位名 in (‘值1‘,‘值2‘,‘值3‘)"
sql="select * from 資料表 where 欄位名 between 值1 and 值2"

(2) 更新資料記錄:

sql="update 資料表 set 欄位名=欄位值 where 條件運算式"
sql="update 資料表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件運算式"

(3) 刪除資料記錄:

sql="delete from 資料表 where 條件運算式"
sql="delete from 資料表" (將資料表所有記錄刪除)

(4) 添加資料記錄:

sql="insert into 資料表 (欄位1,欄位2,欄位3 …) valuess (值1,值2,值3 …)"
sql="insert into 目標資料表 select * from 來源資料表" (把來源資料表的記錄添加到目標資料表)

(5) 資料記錄統計函數:

AVG(欄位名) 得出一個表格欄平均值
COUNT(*|欄位名) 對資料行數的統計或對某一欄有值的資料行數統計
MAX(欄位名) 取得一個表格欄最大的值
MIN(欄位名) 取得一個表格欄最小的值
SUM(欄位名) 把資料欄的值相加

引用以上函數的方法:

sql="select sum(欄位名) as 別名 from 資料表 where 條件運算式"
set rs=conn.excute(sql)

用 rs("別名") 擷取統的計值,其它函數運用同上。

(5) 資料表的建立和刪除:

CREATE TABLE 資料表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 資料表名稱 (永久性刪除一個資料表)

(6) 記錄集對象的方法:
rs.movenext 將記錄指標從當前的位置向下移一行
rs.moveprevious 將記錄指標從當前的位置向上移一行
rs.movefirst 將記錄指標移到資料表第一行
rs.movelast 將記錄指標移到資料表最後一行
rs.absoluteposition=N 將記錄指標移到資料表第N行
rs.absolutepage=N 將記錄指標移到第N頁的第一行
rs.pagesize=N 設定每頁為N條記錄
rs.pagecount 根據 pagesize 的設定返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指標是否超出資料表首端,true表......餘下全文>>
 
找一些經典的SQL語句,詳細說明功可以

1、串連資料庫
(運行SQL*Plus,使用SCOTT/TIGER)

2、簡單查詢
SQL> select table_name
from user_tables;
運行結果如下:
TABLE_NAME

SALGRADE
BONUS
EMP
DEPT

SQL> select * from emp;

3、格式化使用者結果
SQL> select ename,sal
from emp
where ename like 'A%';
請嘗試一下,如果將上述語句中的'A%'替換為'a%',看看會出現什麼結果。
如果只是將select替換成SELECT,看看又會出現什麼效果。
SQL> column sal format $9,999.99
SQL> select ename,sal
from emp
where ename like 'A%';
請注意觀察結果和剛才有什麼不同。
如果將$符號替換為¥,看看會出現什麼結果。

SQL> describe user_objects
SQL> select object_type,object_name
from user_objects
order by object_type,object_name;
SQL> column object_name format a30
SQL> run
請注意觀察兩次啟動並執行結果有何不同。

SQL> set pause on
SQL> select *
from emp;
SQL> set pause off

4、設定使用者頁面大小
SQL> set pagesize 10
SQL> select rownum,object_name
from all_objects
where rownum < 20;
請注意觀察每一批的記錄有幾條,考慮一下為什麼會出現這種情況?
SQL> show linesize
SQL> set linesize 200
SQL> select * from emp;

5、FEEDBACK(在查詢末尾輸出一行,用來指出查詢中返回的記錄數量)
SQL> show feedback
SQL> select empno,ename,job
from emp
where rownum < 7;
SQL> set feedback off
SQL> select empno,ename,job
from emp
where rownum < 7;
請注意觀察兩次啟動並執行結果有何不同。
SQL> set feedback 3
SQL> select empno,ename,job
from emp
where rownum < 3;
SQL> select empno,ename,job
from emp
where rownum < 4;
再看看結果有何不同,仔細體會FEEDBACK的作用。

6、更換顯示輸出
SQL> create table t(x number);
SQL> insert into t values......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.