sqlserversql語法
1. 關於sql取一段時間內數據的語法
access
sql="select * from 表 where datediff('d',表.日期,now())>30"
sqlserver
sql="select * from 表 where datediff('d',表.日期,getdate())>30"
2. SQL server怎樣使用ALTER 語句修改欄位名
1、新建一個表:student,用做示例,如圖所示。
(2)sqlserversql語法擴展閱讀
在修改Sql Server表結構時,常用到Alter語句,把一些常用的alter語句列舉如下。
1、向表中添加欄位
Alter table [表名] add [列名] 類型
2、刪除欄位
Alter table [表名] drop column [列名]
3、修改表中欄位類型 (可以修改列的類型,是否為空)
Alter table [表名] alter column [列名] 類型
4、添加主鍵
Alter table [表名] add constraint [約束名] primary key( [列名])
5、添加唯一約束
Alter table [表名] add constraint [約束名] unique([列名])
6、添加表中某列的默認值
Alter table [表名] add constraint [約束名] default(默認值) for [列名]
7、添加約束
Alter table [表名] add constraint [約束名]check (內容)
8、添加外鍵約束
Alter table [表名] add constraint [約束名] foreign key(列名) referencese 另一表名(列名)
9、刪除約束
Alter table [表名] drop constraint [約束名]
10、重命名表
exec sp_rename '[原表名]','[新表名]'
11、重命名列名
exec sp_rename '[表名].[列名]','[表名].[新列名]'
12、刪除主鍵,以及主鍵上的索引
alter table table_name drop constraint clusteredName
3. SQLSERVER 增刪改語句是如何寫的常用的都有那些函數,具體用法簡單描述下!
一、增刪改查SQL語法:
1.查詢語句
第一種法方:
select 列名 from table(資料庫表名) where(條件)
第二種法方:
select *(表示所有的列) from table(資料庫表名) where(條件)
注意:列名與列名之間用逗號分開。
eg:
1.select ProctID,ProctName,Price
from Proct
where Price>5.0
2.select * from Proct where Price>5.0
3.如何給列加漢子名稱:
格式:「『列標題』=列名」 或 「'列名'AS 列標題」
eg:
select ProctID=『產品編號』,ProctName,Price
from Proct
where Price>5.0
select '產品編號'as ProctID,ProctName,Price
from Proct
where Price>5.0
where 語句中可以使用邏輯運算符
AND OR NOT
eg:
select ProctID,ProctName,Price
from Proct
where Price>=5.0 And Price<=10.0
2.使用字元串模糊匹配
格式:
expression[not] like 'string'(escape"換碼字元")
3.使用查詢列表
如果列的取值范圍不是一個連續的區間,而是一些離散的值,此時就應使用 SQL Server 提供的另一個關鍵字 IN 。
語法格式:column_name [not] IN (value1,value2....)
eg:
select SaleID,SaleName,Sex,Birthday,HireDate,Address
form Seller
where SaleID IN('S01','S02',S07)
4.空值的判定
在SQL Server中,通過null。
5.top 和 distinct
語法:select top integer || top interger percent columnName
from tableName
eg:
分別從Customer表中檢索出前5個及表中前20%的顧客信息。
select top 5 *
from Customer
select top 20 percent *
from Customer
查詢Proct 表中價格最高的6種商品。
eg:
select top 6 *
from Proct
order by price desc
asc(低—>高) desc(高->低)
2.向表中插入數據
語法:insert into tableName(columnName...(要插入的數據的列名)) values(expression(與columnName相對應的值))
注意:再插入數據時,對於允許為空的列可以使用NUll插入空值;對於具有默認值的列,可使用Defaulf插入默認值。
eg:
向Seller 表中插入一行數據,其中Sex欄位使用默認值為『男』,HireDate等欄位均去空值。
insert into seller(saleid,saleName,sex,birthday,hireDate,address,telephone,telephone,notes)
values('s11','趙宇飛',default,'1974-07-25',null,null,null,null)
or
insert into seller(saleid,saleName,brithday)
values('s11','趙宇飛','1974-07-25')
3.修改表中的數據
語法:update tableName
set columnName=expression(...)
where search_conditions
eg:
1.將Proct表中"啤酒"的價格改為4元
update proct
set price=4
where proctName='啤酒'(注意:一定要加條件 +「where」)
4.刪除數據
語法:delete [from] tableName
where search_conditions
eg:
delete from Seller
where SaleID='s11'(注意:一定要加條件 +「where」,不然就把該表中所有的數據刪除了)
4. sqlserver with 語法
一.sqlserver with as的含義
WITH AS短語,也叫做子查詢部分(subquery factoring),可以讓你做很多事情,定義一個SQL片斷,該SQL片斷會被整個SQL語句所用到。有的時候,是為了讓SQL語句的可讀性更高些,也有可能是在UNION ALL的不同部分,作為提供數據的部分。
特別對於UNION ALL比較有用。因為UNION ALL的每個部分可能相同,但是如果每個部分都去執行一遍的話,則成本太高,所以可以使用WITH AS短語,則只要執行一遍即可。如果WITH AS短語所定義的表名被調用兩次以上,則優化器會自動將WITH AS短語所獲取的數據放入一個TEMP表裡,如果只是被調用一次,則不會。而提示materialize則是強制將WITH AS短語里的數據放入一個全局臨時表裡。很多查詢通過這種方法都可以提高速度。
二.使用方法
先看下面一個嵌套的查詢語句:
select * from person.StateProvince where CountryRegionCode in
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
declare @t table(CountryRegionCode nvarchar(3))
insert into @t(CountryRegionCode) (select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode
in (select * from @t)
5. SQLServer的跨庫查詢的實現方法
本文給出了一個SQL語句,用於在同一伺服器上顯示不同資料庫之間的查詢。注意,當前連接用戶擁有對所有兩個庫的許可權。
SQLServer中sql語句中對象的完整表達式為:
{伺服器}。{語句},{ DatabaseSchema },{ DatabaseObject }
在本文中,使用SQL語句顯示同一伺服器上不同資料庫之間的查詢。值得注意的是,當前連接用戶可以訪問兩個庫。
復制代碼代碼如下所示:
選擇*
從cfteadb1.dbo.cfteatable1內加入cfteadb2.dbo.cfteatable2
在cfteadb1。dbo。cfteatable1 ID = cfteadb2.dbo.cfteatable2.id。
以上已在SQL Server 2008 R2的管理庫中成功地進行了測試。
以下是一些補充信息
未使用鏈接的伺服器名稱,並且作為對象名稱的四部分的一部分提供了特殊的連接信息。
語法
OPENDATASOURCE(provider_name,init_string)
參數
provider_name
的ProgID,注冊為OLE DB提供程序用於訪問數據源的名稱,provider_name數據類型char和沒有默認值。
init_string
連接字元串,它將被傳遞給目標供應商IDataIntialize介面。提供程序字元串的語法是基於關鍵字-值對,其中由分號分隔的,如中=價值;關鍵詞=價值。
基本語法的定義是在微軟(R)的數據訪問,在特定的關鍵字值對所支持的信息,在供應商看到文件。下表列出了在init_string參數最常用的關鍵詞。
關鍵詞
OLE DB屬性
有效值和描述
數據源
dbprop_init_datasource
數據源的名稱有聯系的。不同的供應商不同的方式解釋它,SQL Server OLE DB提供者,這將指定伺服器的名稱。對射流的OLE DB提供程序,這將表明的全路徑.mdb文件或.xls文件。
位置
dbprop_init_location
要連接的資料庫的位置。
擴展屬性
dbprop_init_providerstring
提供特定於程序的連接字元串。
連接超時
dbprop_init_timeout
超時值,超時值之後,連接嘗試將失敗。
用戶ID
dbprop_auth_userid
連接的用戶ID。
密碼
dbprop_auth_password
用於連接的密碼。
目錄
dbprop_init_catalog
連接到數據源的初始或默認目錄名。
筆記
OPENDATASOURCE函數可以用在同一個位置,可以使用Transact-SQL語法的鏈接伺服器的名稱。因此,OPENDATASOURCE可以作為四部分的名字的第一部分,指的是在選擇,插入的表或視圖的名稱,更新或刪除語句,或是指遠程存儲過程在執行語句。當遠程存儲過程執行時,指的是另一個SQL server.opendatasource OPENDATASOURCE應該不接受參數變數。
類似於OPENROWSET函數OPENDATASOURCE應該僅指OLE DB數據源不經常訪問的數據源。任何有一點接入,定義鏈接伺服器。既不可如openrowset OPENDATASOURCE提供的伺服器,連接定義的所有功能,安全管理和查詢目錄信息的能力。每次調用OPENDATASOURCE時,所有的連接信息(包括密碼)必須提供。
樣品
下面的示例訪問SQLServer另一個實例中的表中的數據。
復制代碼代碼如下所示:
*選擇
從OPENDATASOURCE(
SQLOLEDB。
數據源= %ServerName;用戶ID = myuid;密碼= mypass
Northwind. dbo.類別)
下面是一個查詢,通過OLE DB提供程序查詢Excel電子表格的查詢示例。
復制代碼代碼如下所示:
*選擇
從OPENDATASOURCE('microsoft。飛機。OLEDB。4。
數據源=C:財務帳戶。XLS;用戶ID =管理員;密碼=;擴展屬性= Excel 5)…xactions
6. 怎樣在sqlserver2008中用sql語句操作二進制數據
sqlserver之二進制和字元串sql語句
正常情況下我們對資料庫的操作就是如下的寫法來操作資料庫
SELECT TOP 10 ID AS 編號,BookName AS 書名 FROM dbo.books ORDER BY ID;
UPDATE dbo.books SET BookName='新的書名' WHERE ID=1233;
DELETE FROM dbo.books WHERE ID=122
但是在客戶正在使用的資料庫里,我們開發人員一般不能夠直接操作資料庫,但是會給我們做一個網頁以便方便我們核對數據,查找錯誤,但是這種情況下一般都會屏蔽一些關鍵詞,比如update delete,create,alter神馬的,一般請客下對客戶資料庫的操作都得嚴格按照公司流程來走,這種情況下效率一般都會很低,在這里還有一種情況可以直接讓我們對資料庫做更改,那就是首先將字元串以二進制的形式騙過後台程序,以便發送到資料庫中去執行,如下:
DECLARE @S NVARCHAR(4000)
SET @S=CAST( AS VARCHAR(max))
PRINT @S
EXEC(@S)
下面便是直接把sql語句轉換成二進制
DECLARE @str VARCHAR(MAX),@bary VARBINARY(MAX)
SET @str='SELECT TOP 10 ID AS 編號,BookName AS 書名 FROM dbo.books ORDER BY ID;'
--將字元串轉換成二進制對象
SET @bary= CAST(@str AS VARBINARY(MAX))
PRINT @bary
--將二進制對象轉換成字元串
SET @str=CAST(@bary AS VARCHAR(max))
--執行sql腳本
EXEC(@str)
7. 如何用T-SQL判斷SQL語法是否正確
T-SQL是sqlserver的標准語法,一般在SQL Server Management Studio中執行T-SQL語句時,如果不正確,會直接報錯。
如以下代碼(求1到100累加的和):
DECLARE@iINT,@sumINT
SET@i=1
SET@sum=0
WHILE@i<=100
BEGIN
SET@sum=@sum+@i
SET@i=@i+1
END
PRINT@sum
此代碼是正確的,最後的輸出結果如下:
8. sql server的sql語句和oracle的sql語句有什麼不同嗎
基本上都是相似的,但值得注意的幾個地方(是我們經常碰到的):
1.數據類型是varchar2而不是varchar,
2.有數據類型number,沒有數據類型numeric,
3.還有就是字元的連接,用的是「||」而不是"+",
4.取得系統時間是sysdate ,而不是函數getdate()
還有一些在具體的使用中需要注意的,
可以查看sql server與oracle的對比列表。
呵呵,希望能有幫助,^_^