當前位置:首頁 » 編程語言 » tsql語法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

tsql語法

發布時間: 2022-01-20 06:16:20

❶ Tsql和SQL區別

SQL(StructuredQuery Language)結構化查詢語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。同時也是資料庫腳本文件的擴展名。主要包括:數據定義語言(DDL)數據操縱語言(DML) 數據控制語言(DCL)三種類型。其中數據定義語言(DDL) 用於定義數據結構,比如創建create、刪除drop、更改alter資料庫對象等。數據操縱語言(DML)用於檢索和修改數據結構,即我們常說的:增Insert ,刪Delete
改Update,查Select。數據控制語言(DCL) 用於規定資料庫用戶的各種許可權。

T-SQL:SQL 程序設計語言的增強版,它是用來讓應用程式與 SQL Server 溝通的主要語言。T-SQL 提供標准 SQL的DDL 和 DML功能,加上延伸的函數、系統預存程序以及程式設計結構(例如 IF 和 WHILE)讓程式設計更有彈性。

❷ T-SQL語法問題

IF EXEC(@sql) = 1 當然不行
請看例子:@colName列只可為一列bit

DECLARE @sql varchar(1000),@colName varchar(1000)
set @colName='*'
SET @sql = 'SELECT '+@colName+ ' FROM [tableName]'
exec(@sql)

DECLARE @sql nvarchar(1000),@colName nvarchar(1000),@Bit bit--改為nvarchar,再用sp_executesql
set @colName='BitColumn'
SET @sql = 'SELECT @Bit='+@colName+ ' FROM [tableName]'
exec sp_executesql @sql,'@Bit bit output',@Bit output
if @Bit=0
..
else

❸ 請t-sql 高手看過來,這條sql語句怎麼寫

select category_name+title from table1 a inner join table2 b
on a.category_id=b.category_id

❹ 求T_SQL語句!

create table tb(姓名 varchar(10) , 課程 varchar(10) , 分數 int)
insert into tb values('張三' , '語文' , 74)
insert into tb values('張三' , '數學' , 83)
insert into tb values('張三' , '物理' , 93)
insert into tb values('李四' , '語文' , 74)
insert into tb values('李四' , '數學' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 靜態SQL,指課程只有語文、數學、物理這三門課程。(以下同)
select 姓名 as 姓名 ,
max(case 課程 when '語文' then 分數 else 0 end) 語文,
max(case 課程 when '數學' then 分數 else 0 end) 數學,
max(case 課程 when '物理' then 分數 else 0 end) 物理
from tb
group by 姓名

--SQL SERVER 2000 動態SQL,指課程不止語文、數學、物理這三門課程。(以下同)
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 課程 when ''' + 課程 + ''' then 分數 else 0 end) [' + 課程 + ']'
from (select distinct 課程 from tb) as a
set @sql = @sql + ' from tb group by 姓名'
exec(@sql)

--SQL SERVER 2005 靜態SQL。
select * from (select * from tb) a pivot (max(分數) for 課程 in (語文,數學,物理)) b

--SQL SERVER 2005 動態SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + 課程 from tb group by 課程
set @sql = '[' + @sql + ']'
exec ('select * from (select * from tb) a pivot (max(分數) for 課程 in (' + @sql + ')) b')

❺ 什麼是T-SQL

簡單來說:T_SQL是SQL語言(結構化查詢語言)的增強版,他是一種編程語言,可以完成復雜的 邏輯。

如果再具體點的話:
T-SQL :
SQL 程式設計語言的增強版,它是用來讓應用程式與 SQL Server 溝通的主要語言。T-SQL 提供標准 SQL的DDL 和 DML 功能,加上延伸的函數、系統預存程序以及程式設計結構(例如 IF 和 WHILE)讓程式設計更有彈性。

意識是在普通的sql語句中很多帶有條件的查詢是做不了的,例如 你要讀取一個表時間所以年份的數據,可以使用函數
YEAR 傳回指定日期年份部分的完整整數。使用方式為 YEAR(date) 。例如:以下陳述式 SELECT YEAR('07/11/01') 將會傳回值 2007。

❻ T-sql 語句 怎麼寫

check (性別 in(1,0))

不過bit類型除了null,本來就只能存0,1了

❼ T-SQL的基本語法

一:insert語句
into 關鍵字是可選的
values關鍵字前面的()是可選的,這里是要接收數據的列
values後面,有兩種方式提供值
1:顯式的給出值 2:從select語句中導出值

insert語句注意幾點
1:不要理標志列,系統會給你插入的
2:給出實際的值,如果沒有,那就null
3:給出默認的值,default關鍵字,告訴資料庫取默認值

insert into ... select
什麼時候會這么用,當成批的數據來自
1:資料庫中的另一個表
2:同一台伺服器完全不同的資料庫
3:另一個SQLSERVER的資料庫
4:來自同一個表中的數據
說實在的2和3我從來沒用過

好,看一個例子
declare @mytable table
(
id int,
sortid int
);
insert into @mytable (id,sortid) select id,classid from proct;
select * from @mytable;
注意我定義了一個表的對象
每一句之間是用分號隔開的
(id,sortid) 是可以忽略的

二:update語句
看例子
update e set e.flag = 'm' from employee e join contact ce on e.id = ce.employeeid where ce.name = 'jo'
這里用到了join子句,當然是可以用的
如果修改不止一列 只要加一個逗號
set num = num * 1.2當然可以寫表達式

三:delete語句
delete from actors from actors a left join film f on a.filmid = f.filmid where f.filmid is null
outer連接將在沒有匹配的一端返回null,
這里也就是film表沒有匹配的行是null
注意 is null 的寫法

四: select語句
這里還是不說了,還是多說說子句吧

五:where子句
1:
= > < >= <= <> != !> !<
其中<> 與 !=都是不相等的意思
!>與!<不怎麼常見,但仔細想想也沒什麼用處

2:
and or not
如果一個where子句中同時出現這三個操作符
最先評估not 然後是and 然後是or

3:
between 例子 between 1 and 5 這個就不多說了

4:
like 例子:like "xland%"
%和_是通配符
%代表零個或多個任意字元
_表示單個任意字元
把字元包括在方括弧中
[a-c]表示a b c都可行
[ab]表示a或b
^與not表示下一個字元將被排除掉

5:
in 例子 in ( 1,2,3) 這個也不多說了

六:order by子句
order by由於比較常用 我這里就不多說了
1:order by username 是可以識別中文的(sql先把中文轉換成拼音再進行排序)
2:可以對 查詢到的表中的任何列 進行排序 無論該列是否包含在select列表中
3:基於多個列的order by
例如:order by addtime,id
先按時間排序,再在這個基礎上根據id排序,你也看到了,性能是有很大幅度的降低的

七:distinct關鍵字
select count(distinct column) from table
檢索某一列不重復的記錄數

八:group by 聚集函數 和 having子句
先看例子:
select orderid sum(orderMoney) from sales where orderid between 3 and 123 group by orderid
注意這里的orderid在表裡是有可能重復的
這個語句的作用是檢索出orderid從3到123的記錄,
然後在這個記錄集合上 以orderid分組
把orderid相同的數據分到一組 (這一組就是最終結果的一條記錄)
然後通過sum函數把各組的orderMoney數據相加,
結果是最終結果的第二個欄位

我發現用group by子句基本上都是和聚集函數一起用的
舉幾個聚集函數的例子
sum 求和
avg求平均數
min/max求最大和最小值
count(表達式|*)獲取一個查詢中的行數
只說說count吧:
count(coloum)如果這一列有null,那麼這些null的行將不會計算在內
count(*)將得到表裡的所有行的數目
聚集函數不一定非和group by一起使用不可
(另外avg基本上都是和group by一起使用的)

having子句是在組上放置條件的
看例子
select orderid sum(orderMoney) from sales where orderid between 3 and 123 group by orderid having sum(orderMoney)>5
group by得到了一個記錄的集合
然後通過having子句,再在這個集合上做篩選

❽ 關於T-SQL語句。

--先修改欄位的數據類型
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Info
(
Id int NOT NULL IDENTITY (1, 1),
Name varchar(20) not null,
Sex bit not null,
Adress varchar(200) null,
OrgId nvarchar(50) NULL,
Phone varchar(30)
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_Info ON
GO
IF EXISTS(SELECT * FROM dbo.Info)
EXEC('INSERT INTO dbo.Tmp_Info (myID, OrgId)
SELECT id,name,sex,adress, CONVERT(nvarchar(50), OrgId) ,phone FROM dbo.Info WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_Info OFF
GO
DROP TABLE dbo.Info
GO
EXECUTE sp_rename N'dbo.Tmp_Info', N'Info', 'OBJECT'
GO
ALTER TABLE dbo.Info ADD CONSTRAINT
PK_Info PRIMARY KEY CLUSTERED
(
id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
--更新欄位的值
declare @old nvarchar(5)
declare @new nvarchar(50)
select @old='100',@new='1|2|3'
update info set OrgId=@new where OrgId=@old

❾ T-SQL語句

execute ('select sc.sno,sname,sdept from student,sc where sc.sno=student.sno and student.sdept='+'''+@kh+''')
改為:
execute ('select sc.sno,sname,sdept from student,sc where sc.sno=student.sno and student.sdept=@kh)

❿ T-sql語句

select count(sc.) from s,c,sc where s.sno=sc.sno and c.cno.sc.cno group by c.cteacher,c.cno where sc.scgrade<60
這么沒有環境,可能需要調整