標籤:資料庫連接 esc 解決方案 關係 串連 constrain script 外鍵 exists
有次筆試最後一頁的三個資料庫連接查詢,沒有寫出來,被考官暗諷了下。現在想來,實習初,確實很LOW。現公司剛入職的時候,負責過ETL方面,所以和資料庫打了不少交道,五十行的聯集查詢、上百行的預存程序很常見,遊標、視圖、索引頻頻接觸,包括在SQL中斷點調試,測值等等,在這裡將所接觸所瞭解的進行整理,做一個小總結,慢慢的積累,對遊標、視圖等等也做一個簡單的說明。我有時候遇到相同問題,會出現忘記上次是如何解決問題的情況,直到花費大量的時間、精力去重新找到解決方案。這很浪費,所以凡是遇到的問題,所做解決的方案,我強迫自己寫個備忘,將大致思路進行匯總整理,以方便自己及時回顧。畢竟好記性不如爛筆頭,古人誠不欺我也!
1、資料庫常見三種資料模型: 層次、網狀、關係
2、關係的 三類完整性條件約束:實體完整性(主鍵不為空白)、參照完整性、使用者自訂完整性
3、常用易忘資料類型:
①int 4byte = 32bit 一個漢字2位元組,中文標點、全形佔兩位元組;字母、英文標點、半形佔一個位元組
②char 固定長度的非unicode 字元資料,最大長度為8000個字元
③varchar 可變長度的非unicode 字元資料,最大長度為8000個字元,儲存大小為輸入資料的實際長度
④nchar 固定長度的unicode 字元資料,最大長度為4000個字元,儲存大小為實際長度的兩倍
⑤nvarchar 可變長度的unicode 字元資料,最大長度為4000個字元,儲存大小為實際長度的兩倍
4、常見的查詢操作
--查詢第8行到第11行記錄--SELECT * FROM IBBC.dbo.Table_1 AS t WHERE IDD BETWEEN 108 AND 111SELECT TOP 4 * FROM IBBC.dbo.Table_1 AS t WHERE t.IDD NOT IN (SELECT TOP 7 IDD FROM ibbc.dbo.Table_1 ORDER BY ibbc.dbo.Table_1.IDD)--判斷表是否存在IF exists(select * from dbo.sysobjects where id = object_id(N‘[dbo].[Table_22]‘))--判斷表欄位是否存在IF EXISTS (select * from syscolumns where id=object_id(‘Table_1‘) and name=‘IDD‘)--判斷預存程序是否存在If exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[test]‘)) --判斷視圖是否存在if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[v_test]‘))
5、常見的表操作
--增加欄位ALTER TABLE IBBC.dbo.Table_1 ADD YYY CHAR(5) --刪除欄位ALTER TABLE IBBC.dbo.Table_1 DROP COLUMN YYY--更改欄位類型型ALTER TABLE IBBC.dbo.Table_1ALTER COLUMN b_id INT NOT NULL--指定欄位添加描述exec sp_addextendedproperty N‘MS_Description‘, N‘我是描述資訊‘, N‘user‘, N‘dbo‘, N‘table‘, N‘Table_1‘, N‘column‘, N‘YYY‘--添加主鍵ALTER TABLE IBBC.dbo.Table_2 ADD CONSTRAINT test_main PRIMARY KEY(b_id)--刪除主鍵ALTER TABLE IBBC.dbo.Table_2 DROP CONSTRAINT test_main --添加外鍵alter table IBBC.dbo.Table_1 add constraint test_foreign foreign key(bas_id) references IBBC.dbo.Table_2(b_id)--刪除外鍵ALTER TABLE IBBC.dbo.Table_1 DROP CONSTRAINT test_foreign
SQL常用語句整理