誰能教我幾句最常用的SQL語句
--語 句 功 能 --數據操作 SELECT --從數據庫表中檢索數據行和列 INSERT --向數據庫表添加新數據行 DELETE --從數據庫表中刪除數據行 UPDATE --更新數據庫表中的數據 --數據定義 CREATE TABLE --創建一個數據庫表 DROP TABLE --從數據庫中刪除表 ALTER TABLE --修改數據庫表結構 CREATE VIEW --創建一個視圖 DROP VIEW --從數據庫中刪除視圖 CREATE INDEX --為數據庫表創建一個索引 DROP INDEX --從數據庫中刪除索引 CREATE PROCEDURE --創建一個存儲過程 DROP PROCEDURE --從數據庫中刪除存儲過程 CREATE TRIGGER --創建一個觸發器 DROP TRIGGER --從數據庫中刪除觸發器 CREATE SCHEMA --向數據庫添加一個新模式 DROP SCHEMA --從數據庫中刪除一個模式 CREATE DOMAIN --創建一個數據值域 ALTER DOMAIN --改變域定義 DROP DOMAIN --從數據庫中刪除一個域 --數據控制 GRANT --授予用戶訪問權限 DENY --拒絕用戶訪問 REVOKE --解除用戶訪問權限 --事務控制 COMMIT --結束當前事務 ROLLBACK --中止當前事務 SET TRANSACTION --定義當前事務數據訪問特征 --程序化SQL DECLARE --為查詢設定游標 EXPLAN --為查詢描述數據訪問計劃 OPEN --檢索查詢結果打開一個游標 FETCH --檢索一行查詢結果 CLOSE --關閉游標 PREPARE --為動態執行準備SQL 語句 EXECUTE --動態地執行SQL 語句 DESCRIBE --描述準備好的查詢 ---局部變量 declare @id char(10) --set @id = '10010001' select @id = '10010001' ---全局變量 ---必須以@@開頭 --IF ELSE declare @x int @y int @z int select @x = 1 @y = 2 @z=3 if @x > @y print 'x > y' --打印字符串'x > y' else if @y > @z print 'y > z' else print 'z > y' --CASE use pangu update employee set e_wage = case when job_level = '1' then e_wage*1。
08 when job_level = '2' then e_wage*1。07 when job_level = '3' then e_wage*1。
06 else e_wage*1。 05 end --WHILE CONTINUE BREAK declare @x int @y int @c int select @x = 1 @y=1 while @x =表達式的最小整數返回的數據類型與表達式相同可為 --INTEGER/MONEY/REAL/FLOAT 類型 FLOOR(numeric_expression) --返回 AS [ length ]) CONVERT() 函數語法如下 CONVERT() ([ length ], [, style]) select cast(100+99 as char) convert(varchar(12), getdate()) 運行結果如下 ------------------------------ ------------ 199 Jan 15 2000 ----日期函數---- DAY() --函數返回date_expression 中的日期值 MONTH() --函數返回date_expression 中的月份值 YEAR() --函數返回date_expression 中的年份值 DATEADD( , ,) --函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期 DATEDIFF( , ,) --函數返回兩個指定日期在datepart 方面的不同之處 DATENAME( , ) --函數以字符串的形式返回日期的指定部分 DATEPART( , ) --函數以整數值的形式返回日期的指定部分 GETDATE() --函數以DATETIME 的缺省格式返回系統當前的日期和時間 ----系統函數---- APP_NAME() --函數返回當前執行的應用程序的名稱 COALESCE() --函數返回眾多表達式中第一個非NULL 表達式的值 COL_LENGTH(, ) --函數返回表中指定字段的長度值 COL_NAME(, ) --函數返回表中指定字段的名稱即列名 DATALENGTH() --函數返回數據表達式的數據的實際長度 DB_ID(['database_name']) --函數返回數據庫的編號 DB_NAME(database_id) --函數返回數據庫的名稱 HOST_ID() --函數返回服務器端計算機的名稱 HOST_NAME() --函數返回服務器端計算機的名稱 IDENTITY([, seed increment]) [AS column_name]) --IDENTITY() 函數只在SELECT INTO 語句中使用用于插入一個identity column列到新表中 /*select identity(int, 1, 1) as column_name into newtable from oldtable*/ ISDATE() --函數判斷所給定的表達式是否為合理日期 ISNULL(, ) --函數將表達式中的NULL 值用指定值替換 ISNUMERIC() --函數判斷所給定的表達式是否為合理的數值 NEWID() --函數返回一個UNIQUEIDENTIFIER 類型的數值 NULLIF(, ) --NULLIF 函數在expression1 與expression2 相等時返回NULL 值若不相等時則返回expression1 的值 。
如何快速入門SQL語言
創建表格 SQL語言中的create table語句被用來建立新的數據庫表格。
Create table語句的使用格式如下:create table tablename(column1 data type,column2 data type, column3 data type);如果用戶希望在建立新表格時規定列的限制條件,可以使用可選的條件選項:create table tablename(column1 data type [constraint],column2 data type [constraint],column3 data type [constraint]); 舉例如下:create table employee(firstname varchar(15),lastname varchar(20),age number (3),address varchar(30),city varchar(20));簡單來說,創建新表格時,在關鍵詞create table后面加入所要建立的表格的名稱,然后在括號內順次設定各列的名稱,數據類型,以及可選的限制條件等。注意,所有的SQL語句在結尾處都要使用“;”符號。
使用SQL語句創建的數據庫表格和表格中列的名稱必須以字母開頭,后面可以使用字母,數字或下劃線,名稱的長度不能超過30個字符。注意,用戶在選擇表格名稱時不要使用SQL語言中的保留關鍵詞,如select, create, insert等,作為表格或列的名稱。
數據類型用來設定某一個具體列中數據的類型。例如,在姓名列中只能采用varchar或char的數據類型,而不能使用number的數據類型。
SQL有哪些三個主要語句及技巧
1。
插入數據 (insert)向表中添加一個新記錄,你要使用SQL INSERT 語句。這里有一個如何使用這種語句的例子: INSERT mytable (mycolumn) VALUES ('some data') 這個語句把字符串'some data'插入表mytable的mycolumn字段中。
將要被插入數據的字段的名字在第一個括號中指定,實際的數據在第二個括號中給出。 INSERT 語句的完整句法如下: INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES | Values_list | select_statement} 如果一個表有多個字段,通過把字段名和字段值用逗號隔開,你可以向所有的字段中插入數據。
假設表mytable有三個字段first_column,second_column,和third_column。下面的INSERT語句添加了一條三個字段都有值的完整記錄: INSERT mytable (first_column,second_column,third_column) VALUES ('some data','some more data','yet more data') 注意 你可以使用INSERT語句向文本型字段中插入數據。
但是,如果你需要輸入很長的字符串,你應該使用WRITETEXT語句。 如果你在INSERT 語句中只指定兩個字段和數據會怎么樣呢?換句話說,你向一個表中插入一條新記錄,但有一個字段沒有提供數據。
在這種情況下,有下面的四種可能: 如果該字段有一個缺省值,該值會被使用。 例如,假設你插入新記錄時沒有給字段third_column提供數據,而這個字段有一個缺省值'some value'。
在這種情況下,當新記錄建立時會插入值'some value'。 如果該字段可以接受空值,而且沒有缺省值,則會被插入空值。
如果該字段不能接受空值,而且沒有缺省值,就會出現錯誤。 你會收到錯誤信息: The column in table mytable may not be null。
最后,如果該字段是一個標識字段,那么它會自動產生一個新值。當你向一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會給自己賦一個新值。
注意 :向一個有標識字段的表中插入新記錄后,你可以用SQL變量@@identity來訪問新記錄 的標識字段的值。考慮如下的SQL語句: INSERT mytable (first_column) VALUES('some value') INSERT anothertable(another_first,another_second) VALUES(@@identity,'some value') 如果表mytable有一個標識字段,該字段的值會被插入表anothertable的another_first字段。
這是因為變量@@identity總是保存最后一次插入標識字段的值。 字段another_first應該與字段first_column有相同的數據類型。
但是,字段another_first不能是應該標識字段。Another_first字段用來保存字段first_column的值。
2。刪除記錄 要從表中刪除一個或多個記錄,需要使用SQL DELETE語句。
你可以給DELETE 語句提供WHERE 子句。WHERE子句用來選擇要刪除的記錄。
例如,下面的這個DELETE語句只刪除字段first_column的值等于'Delete Me'的記錄: DELETE mytable WHERE first_column='Deltet Me' DELETE 語句的完整句法如下: DELETE [FROM] {table_name|view_name} [WHERE clause] 在SQL SELECT 語句中可以使用的任何條件都可以在DELECT 語句的WHERE子句 中使用。 例如,下面的這個DELETE語句只刪除那些first_column字段的值為'goodbye'或second_column字段的值為'so long'的記錄: DELETE mytable WHERE first_column='goodby' OR second_column='so long' 如果你不給DELETE 語句提供WHERE 子句,表中的所有記錄都將被刪除。
你不應該有這種想法。如果你想刪除應該表中的所有記錄,應使用第十章所講的TRUNCATE TABLE語句。
SQL語句基礎學習要注意什么
現在我們介紹連接(join)的概念。
要了解連接,我們需要用到許多我們之前已介紹過的指令。我們先假設我們有以下的兩個表格 Store_Information 表格 store_namesalesdate Los Angeles$1500jan-05-1999 San Francisco$300jan-08-1999 Boston$700jan-08-1999 Geography 表格 region_namestore_name EastBoston EastNew York WestLos Angeles WestSan Diego 而我們要知道每一區 (region_name) 的營業額 (sales)。
Geography 這個表格告訴我們每一區有哪些店,而 Store_Information 告訴我們每一個店的營業額。若我們要知道每一區的營業額,我們需要將這兩個不同表格中的資料串聯起來。
當我們仔細了解這兩個表格后,我們會發現它們可經由一個相同的欄位,store_name,連接起來。 我們先將 SQL 句列出, 之后再討論每一個子句的意義: SELECT A1。
region_name REGION, SUM(A2。Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1。
store_name = A2。store_name GROUP BY A1。
region_name 結果: REGION SALES East $700 West $2050 在第一行中,我們告訴 SQL 去選出兩個欄位:第一個欄位是 Geography 表格中的 Region_name 欄位 (我們取了一個別名叫做 REGION);第二個欄位是 Store_Information 表格中的 sales 欄位 (別名為 SALES)。 請注意在這里我們有用到表格別名:Geography 表格的別名是 A1,Store_Information 表格的別名是 A2。
若我們沒有用表格別名的話, 第一行就會變成 SELECT Geography。region_name REGION, SUM(Store_Information。
Sales) SALES 很明顯地,這就復雜多了。在這里我們可以看到表格別名的功用:它能讓 SQL 句容易被了解,尤其是這個 SQL 句含蓋好幾個不同的表格時。
接下來我們看第三行,就是 WHERE 子句。 這是我們闡述連接條件的地方。
在這里,我們要確認 Geography 表格中 Store_name 欄位的值與 Store_Information 表格中 store_name 欄位的值是相等的。 這個 WHERE 子句是一個連接的靈魂人物,因為它的角色是確定兩個表格之間的連接是正確的。
如果 WHERE子句是錯誤的,我們就極可能得到一個笛卡兒連接 (Cartesian join)。笛卡兒連接會造成我們得到所有兩個表格每兩行之間所有可能的組合。
關于寫SQL語句的技巧
恩,這個怎么說呢sql語句總結一下,無非就幾種,關聯查詢,子查詢,各種函數的使用根據要做的需求,先分析一下,需要用到哪些查詢比如要用到關聯查詢就先把要用到的表列出來,比如a,b,c三個表就先寫出來select from a,b,c前邊查詢的內容可以先放著不用寫然后找三個表關聯關系,當然也要看是自然連接還是左連接什么的,這里就給你舉例正常連接吧select from a,b,c where *=* and *=*關聯關系寫好了,就可以在寫查詢的內容了select *,*,sum(*) from a,b,c where *=* and *=*然后,你再看,因為有聚合查詢,后邊要group by select *,*,sum(*) from a,b,c where *=* and *=* group by *,*其他的,再有什么排序啊,等等啊,就好寫了,這里就不往下寫了子查詢更簡單寫,主要就是要判斷好,要先寫子查詢,然后往外來套,比如select * from b where id in (select id from a)這個,你就要先寫括號里的那個,然后寫外邊的至于函數的使用,這個沒什么經驗,就是可能有時會出現類型轉換等等的問題,你就要牢記每個函數的作用,不懂再問吧。