A. sqlserver sql語法
SQL沒錯,是資料庫名稱錯了,上圖顯示是master 庫,應先加資料庫名或者 選擇course表所在的資料庫
B. SQLSERVER2000語法問題
MS SQL專區] 全面接觸SQL語法(7) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(6) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(5) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(4) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(3) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(2) 2006-3-29
[MS SQL專區] 全面接觸SQL語法(1)
C. sqlserver 語法問題
若要使資料庫識別 Unicode,除了使用 nchar、nvarchar 和 ntext 數據類型定義 Unicode 存儲外,還可以定義識別 Unicode 的客戶端交互。可以通過在資料庫伺服器端執行下列操作來定義識別 Unicode 的客戶端交互:
在表列以及 CONVERT() 和 CAST() 操作中,將非 Unicode 數據類型轉換為 Unicode 數據類型。
使用 ASCII() 和 CHAR() 函數的 Unicode 等價函數 UNICODE() 和 NCHAR() 來替換它們。
以 Unicode 格式定義存儲過程和觸發器的變數和參數。
以字母 N 為前綴標識 Unicode 字元串常量。
在伺服器上執行的代碼中(例如在存儲過程和觸發器中)顯示的 Unicode 字元串常量必須以大寫字母 N 為前綴。即使所引用的列已定義為 Unicode 類型,也應如此。如果不使用 N 前綴,字元串將轉換為資料庫的默認代碼頁。這可能導致不識別某些字元。
例如,在前面示例中創建的存儲過程可以按以下方式在伺服器上執行:
復制代碼
EXECUTE Proct_Info @name = N'Chain'
使用 N 前綴的要求適用於伺服器上產生的字元串常量和從客戶端發送的字元串常量。
D. sql語句分析。(名牌大學考試題)
首先要說,這些語法都是基於SQLSERVER資料庫的語法,DATEDIFF TOP等,在ORACLE等其他資料庫是沒有的。
1. 主要是datediff函數的用法,獲取兩個日期之間的時間差,可以得到年月日小時分秒等等,可以參看這個函數的說明。
這里第一個參數表示獲取時間差的類型,minute表示獲取兩個日期的時間差是分鍾。
第二個參數是起始時間,第二個是截止時間,都是datetime類型。
getdate(),獲取當前時間的函數。
我覺得你這個語句寫的有問題。第一,參數minute,不需要使用單引號,如果使用了單引號,參數就錯誤了,因為datediff第一個參數不是字元型的。
第二,datediff的函數第二個日期是開始時間,第二個是結束時間,你這個正好反了。
SQL: select * from 日程安排 where datediff(minute,f開始時間,getdate())>5
這個的意思是當前時間已經超過了開始時間5分鍾的,會顯示出來,而不是提前5分鍾提醒。
提前五分鍾提醒:SQL: select * from 日程安排 where datediff(minute,getdate(), f開始時間) < 5
距離當前時間小於5分鍾的記錄,才是提前5分鍾提醒。
2.
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位= a.主鍵欄位 order by a.排序欄位
先看from括弧內的語句:select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc,按照排序欄位降序排列取出前20行數據。
然後再整體看,把表和這個20行數據關聯,那麼能取到的最大范圍也就是這20行了。
然後取出前10行,我不知道這個為什麼叫做分頁查詢,因為根本沒有每頁多少行以及第幾頁的參數在。這個語句就是按照排序欄位倒敘排列的前20行,然後在按照排序欄位正序排列從這前20行中取出前10行。實際上就是取出了按照排序欄位倒敘排列的第11-20行的數據並正序排列。
3.內連接:實際上就是兩表直接連接,取出連接成立的所有數據。語法使用Inner join
距離:有學生表:student : student_id , student_name
001 張三
002 李四
003 王五
成績表: score : course_id student_id score
課程1 001 85
課程2 001 85
課程1 002 80
課程2 002 90
查詢學生選課成績,顯示 student_name, course_id, score
select a.student_name, b.course_id, b.score
from student a inner join score b on a.student_id = b.student_id
查詢結果 student_name, course_id, score
張三 課程1 85
張三 課程2 85
李四 課程1 80
李四 課程2 90
可以看到,直接符合連接條件的數據,都會被選擇出來,而王五,因為在成績表沒有成績,所以查詢結果並沒有王五的數據。
4.外連接,left join, right join,分別是左外連接和右外連接。
就是以一個表為主,而另一個表為輔。主表的數據都會被查詢出來,而符合兩表連接條件,那麼輔表的數據就會顯示,否則,為空(NULL)
還以上表和上述語句為例,查詢所有學生的成績清單,沒有成績顯示空,但是學生要顯示。
select a.student_name, b.course_id, b.score
from student a left join score b on a.student_id = b.student_id
查詢結果:
student_name course_id score
張三 課程1 85
張三 課程2 85
李四 課程1 80
李四 課程2 90
王五 NULL NULL
可以看到,雖然連接條件王五這條並不成立,但是王五的數據一樣會被顯示出來,只是成績表的相關數據位空。
有連接和左連接一樣,把上面的順序換過來,效果相同
select a.student_name, b.course_id, b.score
from score b right join student a on a.student_id = b.student_id
E. 誰有sql 語句練習題,越多越好!
額 我只曉得SQLServer的T-SQL
中文版SQL Server 2000開發與管理應用實例
http://www.china-pub.com/26313
都是大量項目中能用到的實例
CSDN SQL大版主的書籍,可說非常不錯了
希望對你有幫助
如果還要再深入理解點原理東西
可以看下 微軟技術叢書sql2005 T-SQL查詢與T-SQL程序設計
F. jsp中SQLServer的select語法問題
以上的回答我覺得不太正確,這個語句沒有錯誤
並且在Mysql里也可以運行 但是到了資料庫就不能運行了,很可能是你的資料庫連接上出了問題
G. 我需要用SQLserver來搭建一個試題庫的資料庫,在創建題目的表格不懂該如何創建,有大神能幫幫忙嗎
建議題目表不要設置為一張表。你可以分成兩部分,試題表和答案表。試題表中存儲你的試題內容,包括題目,類型等屬性。答案表存儲用戶提交的答案,兩個表通過外鍵關聯起來,這樣方便操作。
純手打,望採納!
H. 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)
I. 求助SQL Server中各種語句的完整語法有整理好的嗎
一、基礎1、說明:創建資料庫
CREATE DATABASE database-name
2、說明:刪除資料庫
drop database dbname
3、說明:備份sql server
--- 創建 備份數據的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 開始 備份
BACKUP DATABASE pubs TO testBack
4、說明:創建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根據已有的表創建新表:
A:create table tab_new like tab_old (使用舊表創建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、說明:刪除新表
drop table tabname
6、說明:增加一個列
Alter table tabname add column col type
註:列增加後將不能刪除。DB2中列加上後數據類型也不能改變,唯一能改變的是增加varchar類型的長度。
7、說明:添加主鍵: Alter table tabname add primary key(col)
說明:刪除主鍵: Alter table tabname drop primary key(col)
8、說明:創建索引:create [unique] index idxname on tabname(col….)
刪除索引:drop index idxname
註:索引是不可更改的,想更改必須刪除重新建。
9、說明:創建視圖:create view viewname as select statement
刪除視圖:drop view viewname
10、說明:幾個簡單的基本的sql語句
選擇:select * from table1 where 范圍
插入:insert into table1(field1,field2) values(value1,value2)
刪除:delete from table1 where 范圍
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 ---like的語法很精妙,查資料!
排序:select * from table1 order by field1,field2 [desc]
總數:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、說明:幾個高級查詢運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)並消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行並消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行並消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。
註:使用運算詞的幾個查詢結果行必須是一致的。
12、說明:使用外連接
A、left (outer) join:
左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full/cross (outer) join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
12、分組:Group by:
一張表,一旦分組 完成後,查詢後只能得到組相關的信息。
組相關的信息:(統計信息) count,sum,max,min,avg 分組的標准)
在SQLServer中分組時:不能以text,ntext,image類型的欄位作為分組依據
在selecte統計函數中的欄位,不能和普通的欄位放在一起;13、對資料庫進行操作:
分離資料庫: sp_detach_db; 附加資料庫:sp_attach_db 後接表明,附加需要完整的路徑名
14.如何修改資料庫的名稱:
sp_renamedb 'old_name', 'new_name' 二、提升1、說明:復製表(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1(僅用於SQlServer)
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;3、說明:跨資料庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in 『具體資料庫』 where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)5、說明:顯示文章、提交人和最後回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c7、說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數值1 and 數值29、說明:in 的使用方法
select * from table1 where a [not] in (『值1』,』值2』,』值4』,』值6』)10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....12、說明:日程安排提前五分鍾提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>513、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc) a,表名 b where b.主鍵欄位 = a.主鍵欄位 order by a.排序欄位
具體實現:
關於資料庫分頁: declare @start int,@end int @sql nvarchar(600) set @sql=』select top』+str(@end-@start+1)+』+from T where rid not in(select top』+str(@str-1)+』Rid from T where Rid>-1)』 exec sp_executesql @sql
注意:在top後不能直接跟一個變數,所以在實際應用中只有這樣的進行特殊的處理。Rid為一個標識列,如果top後還有具體的欄位,這樣做是非常有好處的。因為這樣可以避免 top的欄位如果是邏輯索引的,查詢的結果後實際表中的不一致(邏輯索引中的數據有可能和數據表中的不一致,而查詢時如果處在索引則首先查詢索引)14、說明:前10條記錄
select top 10 * form table1 where 范圍15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用於論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行並消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()18、說明:隨機選擇記錄
select newid()19、說明:刪除重復記錄
1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
2),select distinct * into temp from tablename
delete from tablename
insert into tablename select * from temp
評價: 這種操作牽連大量的數據的移動,這種做法不適合大容量但數據操作
3),例如:在一個外部表中導入數據,由於某些原因第一次只導入了一部分,但很難判斷具體位置,這樣只有在下一次全部導入,這樣也就產生好多重復的欄位,怎樣刪除重復欄位alter table tablename
--添加一個自增列
add column_b int identity(1,1)
delete from tablename where column_b not in(
select max(column_b) from tablename group by column1,column2,...)
alter table tablename drop column column_b20、說明:列出資料庫里所有的表名
select name from sysobjects where type='U' // U代表用戶21、說明:列出表裡的所有的列名
select name from syscolumns where id=object_id('TableName')22、說明:列示type、vender、pcs欄位,以type欄位排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光碟 B 2
光碟 A 2
手機 B 3
手機 C 323、說明:初始化表table1TRUNCATE TABLE table124、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc三、技巧1、1=1,1=2的使用,在SQL語句組合時用的較多「where 1=1」 是表示選擇全部 「where 1=2」全部不選,
如:
if @strWhere !=''
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'
end 我們可以直接寫成錯誤!未找到目錄項。
set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收縮資料庫
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收縮數據和日誌
DBCC SHRINKDB
DBCC SHRINKFILE3、壓縮資料庫
dbcc shrinkdatabase(dbname)4、轉移資料庫給新用戶以已存在用戶許可權
exec sp_change_users_login 'update_one','newname','oldname'
go5、檢查備份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'6、修復資料庫
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO等等 假如需要我可以傳兩個文檔你
J. 要最全的SQL SERVER語法語句
C# 編碼規則(標准化越來越近了):namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一、命名
1.用pascal規則來命名方法和類型.
public class TextBox
{
public void DataBind()
{
}
}
2.用camel規則來命名局部變數和方法的參數.
string userName;
public AddUser(string userId, byte[] password);
3.所有的成員變數前加前綴 _
public class Database
{
private string _connectionString;
}
4.介面的名稱加前綴 I.
interface ICompare
{
int compare();
}
5.自定義的屬性以Attribute結尾
public class AuthorAttribute : Attribute
{
}
6.自定義的異常以Exception結尾
public class AppException : Exception
{
}
7.方法的命名.一般將其命名為動賓短語.
ShowDialog()
CreateFile()
GetPath()
8.代碼的縮進.要用Tab,而不要用space.
9.局部變數的名稱要有意義.不要用x,y,z等等(除用於For循環變數中可使用i,j,k,l,m,n).
string userName
10.所有的成員變數聲明在類的頂端,用一個換行把它和方法分開.
11.用有意義的名字命名namespace,如:產品名、公司名.
12.建議局部變數在最接近使用它時再聲明.
13.使用某個控制項的值時,盡量命名局部變數.
14.把引用的系統的namespace和自定義或第三方的用一個換行把它們分開.
15.文件名要能反應類的內容,最好是和類同名,一個文件中一個類或一組關連類.
16.目錄結構中要反應出namespace的層次.
17.大括弧"{"要新起一行.
public class AuthorAttribute : Attribute
{
}