共計 4568 個字符,預計需要花費 12 分鐘才能閱讀完成。
SQLServer 數據庫語法有哪些呢,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
– 數據操作
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 3 begin print @x -- 打印變量 x 的值 while @y 3 begin select @c = 100*@x + @y print @c -- 打印變量 c 的值 select @y = @y + 1 end select @x = @x + 1 select @y = 1 end
--WAITFOR -- 例 等待 1 小時 2 分零 3 秒后才執行 SELECT 語句 waitfor delay 01:02:03 select * from employee -- 例 等到晚上 11 點零 8 分后才執行 SELECT 語句 waitfor time 23:08:00 select * from employee
***SELECT***
select *(列名) from table_name(表名) where column_name operator value ex:(宿主) select * from stock_information where stockid = str(nid) stockname = str_name stockname like % find this % stockname like [a-zA-Z]% --------- ([] 指定值的范圍) stockname like [^F-M]% --------- (^ 排除指定范圍) --------- 只能在使用 like 關鍵字的 where 子句中使用通配符 ) or stockpath = stock_path or stocknumber 1000 and stockindex = 24 not stock*** = man stocknumber between 20 and 100 stocknumber in(10,20,30) order by stockid desc(asc) --------- 排序,desc- 降序,asc- 升序 order by 1,2 --------- by 列號 stockname = (select stockname from stock_information where stockid = 4)
——— 子查詢 ——— 除非能確保內層 select 只返回一個行的值,——— 否則應在外層 where 子句中用一個 in 限定符
select *from table1, table2 where table1.id *= table2.id -------- 左外部連接,table1 中有的而 table2 中沒有得以 null 表示 table1.id =* table2.id -------- 右外部連接 select stockname from table1 union [all] ----- union 合并查詢結果集,all- 保留重復行 select stockname from table2
***insert***
insert into table_name (Stock_name,Stock_number) value (xxx , xxxx) value (select Stockname , Stocknumber from Stock_table2)---value 為 select 語句
***update***
update table_name set Stockname = xxx [where Stockid = 3] Stockname = default Stockname = null Stocknumber = Stockname + 4
***delete***
delete from table_name where Stockid = 3 truncate table_name ----------- 刪除表中所有行,仍保持表的完整性 drop table table_name --------------- 完全刪除表
***alter table*** — 修改數據庫表結構
alter table database.owner.table_name add column_name char(2) null ..... sp_help table_name ---- 顯示表已有特征 create table table_name (name char(20), age smallint, lname varchar(30)) insert into table_name select ......... ----- 實現刪除列的方法(創建新表) alter table table_name drop constraint Stockname_default ---- 刪除 Stockname 的 default 約束
—- 統計函數 —-
AVG – 求平均值 COUNT – 統計數目 MAX – 求最大值 MIN – 求最小值 SUM – 求和
--AVG use pangu select avg(e_wage) as dept_avgWage from employee group by dept_id --MAX -- 求工資最高的員工姓名 use pangu select e_name from employee where e_wage = (select max(e_wage) from employee)
—- 日期函數 —-
DAY() -- 函數返回 date_expression_r 中的日期值 MONTH() -- 函數返回 date_expression_r 中的月份值 YEAR() -- 函數返回 date_expression_r 中的年份值 DATEADD( , ,) -- 函數返回指定日期 date 加上指定的額外日期間隔 number 產生的新日期 DATEDIFF( , ,) -- 函數返回兩個指定日期在 datepart 方面的不同之處 DATENAME( , ) -- 函數以字符串的形式返回日期的指定部分 DATEPART( , ) -- 函數以整數值的形式返回日期的指定部分 GETDATE() -- 函數以 DATETIME 的缺省格式返回系統當前的日期和時間
—- 系統函數 —-
APP_NAME() -- 函數返回當前執行的應用程序的名稱 COALESCE() -- 函數返回眾多表達式中第一個非 NULL 表達式的值 COL_LENGTH(table_name , column_name) -- 函數返回表中指定字段的長度值 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 列到新表中 ISDATE() -- 函數判斷所給定的表達式是否為合理日期 ISNULL(, ) -- 函數將表達式中的 NULL 值用指定值替換 ISNUMERIC() -- 函數判斷所給定的表達式是否為合理的數值 NEWID() -- 函數返回一個 UNIQUEIDENTIFIER 類型的數值 NULLIF(, ) --NULLIF 函數在 expression_r1 與 expression_r2 相等時返回 NULL 值若不相等時則返回 expression_r1
看完上述內容,你們掌握 SQLServer 數據庫語法有哪些呢的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!