sqlserver基礎語句
Ⅰ sqlServer 語句怎麼寫
嵌套比較多,你慢慢看。
select D.address, D.time, D.value
from (select A.address, A.time, A.value
from A
union
select B.address, B.time, B.value
from B) D,
(select C.Address, max(C.time) as maxTime
from (select A.address, A.time, A.value
from A
union
select B.address, B.time, B.value
from B) C
group by C.address) E
where D.address = E.address
and D.time = E.maxTime
Ⅱ SQLSERVER語句
同上
因為a和b只不過是「結果集」中的別名,他只提供引用和顯示,但不能提供參與運算操作
(tsl - zsl)-(tsl + zsl) as c 是正確的
Ⅲ sqlserver語句添加列(簡單)
語句為:
alter table A
add BVARCHAR(50)
create table C
(Dvarchar(10),
Evarchar(10),
F varchar(10),
G varchar(10),
constraint pk_D primary key (D)
)
(3)sqlserver基礎語句擴展閱讀:
注意事項
一、增加列:
1、alter table tableName add columnName varchar(30)
2、ALTER TABLE dbo.doc_exa ADD column_b VARCHAR(20) NULL, column_c INT NULL ;
二、修改列類型:
alter table tableName alter column columnName varchar(4000)
三、修改列的名稱:
1、EXEC sp_rename 'tableName.column1' , 'column2' (把表名為tableName的column1列名修改為column2
下面的示例將TerritoryID表中的Sales.SalesTerritory列重命名為TerrID。
USE AdventureWorks2012;
GO EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO
2、刪除列
alter table tableName drop column columnName
3、指定表中某列默認數據
ALTER TABLE dbo.doc_exz ADD CONSTRAINT col_b_def DEFAULT 50 FOR column_b ;
Ⅳ SQL 常用查詢語句
用SQL自帶的幫助手冊就很好的。
Ⅳ SQLSERVER2000個人版常用語句
要不要給你傳幾個文件??QQ 253330532
---------------創建資料庫----------------
create database zhang
on primary
(
name=zhang_m,filename='F:\database\zhang.mdf',---------主文件(主文件組中)
size=10,maxsize=100,filegrowth=2
),----------兩個文件這間逗號隔開
----------------創建組fg1----------------------
filegroup fg1
(
name=zhang_n,filename='F:\database\zhang.ndf',---------組中的輔助文件
size=10,maxsize=100,filegrowth=20%
)
log on
(
name=zhang_l,filename='F:\database\zhang.ldf',--------- 事務日誌文件(不能在文件組中)
size=4,maxsize=50,filegrowth=2
)
--------------添加文件組------------------
alter database zhang
add filegroup fg2
--------------添加輔助文件-------------------
alter database zhang
add file
(
name=zhang_n2,filename='D:\database\zhang.ndf',
size=8,maxsize=100,filegrowth=2
) to filegroup fg2-------------到指定文件組
--------------修改文件屬性--------------------
alter database zhang
modify file(name=zhang_n2,size=10,maxsize=100,filegrowth=2)--必須有size屬性
-------------指定默認文件組-------------------
alter database zhang
modify filegroup fg1 default--或者readonly\readwrite(必須保證此時文件組內有文件,創建時不能指定屬性)
--------------刪除文件與文件組------------------
alter database zhang
remove file zhang_n2
alter database
remove filegroup fg2---必須保證該文件組是空的
-------------刪除資料庫----------------
drop database zhang,RIC
-------------重命名資料庫--------------
sp_renamedb 'zhang','RIC'
-------------查看資料庫----------------
sp_helpdb zhang
Sp_rename 『表名.列名』,』新名』
sp_helpdb zhang---------查看資料庫屬性和其中文件
sp_helpdb ------------查看所有資料庫信息
sp_helpfile student-------查看文件屬性
sp_helpfilegroup student--------查看文件組內容
sp_helpfilegroup-----------查看資料庫中的文件組
sp_tables------------------查看資料庫中的表
sp_help table1 -------------------------查看錶的結構
drop table table1-------------------------刪除表
sp_addtype type1--------------------------創建用戶自定義數據類型
sp_droptype type1-------------------------撤消用戶自定義數據類型
sp_help type1----------------------------查看用戶自定義數據類型
sp_helpdb database1-----------------------查看資料庫屬性和其中文件
sp_helpfile file1-------------------------查看文件屬性
sp_tables---------------------------------查看資料庫中的表
sp_helpfilegroup fgp1---------------------查看文件組信息
sp_renamedb-------------------------------重命名資料庫
sp_rename table1,table2------------------表格重命名
alter table t6
add D char(10) null----------------------增加一列
alter table t6
alter column a char(10) not null----------修改列的屬性
set identity_insert t3 on-----------------手動輸入
Alter table table_name
Drop constraint constraint_name------------撤銷約束
alter database school----------------------修改文件組屬性
modify filegroup student default
alter database school----------------------修改文件屬性
modify file
(name=teacher_dat,size=20,maxsize=30,filegrowth=30%)
sp_addtype 類型的名,[系統數據類型],[『空類型』]
空類型表示用戶自定義數據類型如何處理空值.它必須被放在單引號里,值為『NULL』或『NOT NULL』 .
凡是包含了如()或,等分隔符的系統數據類型,如char(9),必須用引號括起來,即『char(9)』。
用戶自定義數據類型在資料庫中命名必須惟一。
use zhang
go
------------創建用戶自定義類型-----------
--空類型表示用戶自定義數據類型如何處理空值.它必須被放在單引號里,值為『NULL』或『NOT NULL』 .
--凡是包含了如()或,等分隔符的系統數據類型,如char(9),必須用引號括起來,即『char(9)』。
--用戶自定義數據類型在資料庫中命名必須惟一。
sp_addtype typa , 'char(10)','not null'----引號,逗號
sp_droptype typa ----刪除前確保該類型不有被使用
----------------------------------------------------------------------------------------------------------
create table tab1
(
a int primary key ,
b typa
) on fg----------on
--------------------刪除表--------------------
drop table tab1,tab2
------------------修改表結構------------------
alter table tab1 -----------------------增加列
add c char(5) default '山東' --ALTER TABLE 只允許添加可包含空值
-- --或指定了 DEFAULT 定義的列
alter table tab1
add d int identity(100,1)
--
alter table tab1
add e int null constraint nu unique
--
alter table tab1 ---------------------修改列屬性
alter column a char(10) not null
--
alter table tab1----------------------刪除列
drop column a, b --每個表必須保證有一個數據列
sp_rename 'tab.a','name'-------------重命名列
--------------------------------------------------------------------------------------------------------------
--------------創建約束-----------------------
create table tab2
(
a typa not null constraint pka primary key,---不可以有空值
b char(10) null constraint unb unique, ---只能有一個空值
c int null constraint ckc check(c like '[0-9][0-9][0-9]-[0-9][0-9][0-9]'),--可以輸入空值
d int null constraint frd foreign key (d) references tab1 (a),--兩個列的類型相同
f char(10) null constraint dff default '青島'
)
-----------添加約束------------------------
alter table tab2
with nocheck ----------------不對表中現有的數據檢查,
add constraint ckb check(b in( 'zhang','niit','ric'))
--
alter table tab2
add constraint dfb default '山東' for b-----for
--
alter table tab2
add constraint fkc foreign key (c) references tab1 (a)
--
alter table tab2
add constraint unf unique(f)
-----------撤消約束--------------------------
alter table tab2
drop constraint pka -----------------必須保證該不被別的列引用
----------------------------------------------------------------------------------------------------------------
---------------規則、預設--------------------
create rule rulc---------------------創建
as @c between 0 and 9000
--
drop rule rulc-----------------------刪除,保證該規則止此時沒有被引用
sp_bindrule rulc ,'tab2.c'--表名引號
sp_bindrule rulc ,typa,futureonly-----綁定,futureonly只針對用戶自定義數據類型
--防止用戶自定義類型的現有列並入規則
--只有以後建表用到typa時才適用此規則
sp_unbindrule 'tab2.c'
sp_unbindrule typa,futureonly --------解除,futureonly防止用戶自定義類型的
--現有列取消規則
create default dfm--------------------創建
as '9999'
--
drop default dfm ---------------------刪除,保證該默認此時沒有被引用
sp_bindefault dfm, typa ,futureonly---綁定,futureonly 只針對用戶自定義類型
sp_unbindefault typa ,futureonly------解除
----------------新規則將代替舊規則,新默認將代替舊默認-----------
-----------------------------------------------------------------------------------------------------------------
---------------數據維護---------------------
use zhang
go
create table t1-------參照
(
a int,
b int,
)
--
create table t2
(
a int,
b int
)
--
create table t3
(
a int identity(1001,1),
b int,
c int default '20'
)
--
insert t1 values(1,2)
--
insert t3(a,b,c) values(11,12,default)
--
insert t1 ---------------------用子查詢把現有數據插入到表中
select a,b from t3
where a>0
--
insert t3(a,b,c)
select a,45,b from t1---------列數不符時可加入用戶自定義列--45
--
set identity_insert t3 on-------手動輸入自增長列
--僅當使用了列的列表,並且 IDENTITY_INSERT 為 ON 時,
--才能在表 't3' 中為標識列指定顯式值。
--且當設為on時,必須為該列輸入值
--------------------------------------------------------------------------------------------------------------
--------------更新'數據'-------------
----更新不能違反約束-----
update t3
set b=a+1
where b>10
--
update t3
set c=default------使用default更新數據
where c>=20
--
update t3
set t3.b=t2.b+t2.a
from t3 join t2 -------數據來源表t2,t3
on t3.a=t2.a
where t3.c>=20
--
update t3
set t3.b=t2.b+t2.a
from t2,t3 ----------數據來源表t2,t3
where t3.a=t2.a and t3.c>=20
----------------------------------------------------------------------------------
----------刪除數據------------------
delete t3
from t2,t3--------------數據來源表t2,t3,或者使用連接類同更新
where t2.a in (t3.a+3)
--
delete t3
where c like '[0-9][0-9][0-9]'and c between 10 and 100
-----截短表,刪除所有數據-----
truncate table t3
--truncate 刪除速度快不寫事務日誌,不能使用where
------------------------------------------------------------------------------------
UPDATE titles
SET price = price * 2
WHERE pub_id IN
(SELECT pub_id
FROM publishers
WHERE pub_name = 'New Moon Books')
--下面是使用聯接的等效 UPDATE 語句:
UPDATE titles
SET price = price * 2
FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id
AND pub_name = 'New Moon Books'
--通過下面嵌套的查詢,可以刪除商業書籍的所有銷售記錄:
DELETE sales
WHERE title_id IN
(SELECT title_id
FROM titles
WHERE type = 'business')
--下面是使用聯接的等效 DELETE 語句:
DELETE sales
FROM sales INNER JOIN titles ON sales.title_id = titles.title_id
AND type = 'business'
Ⅵ 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」,不然就把該表中所有的數據刪除了)
Ⅶ 熟悉Oracle或SQLServer資料庫安裝,及基本的SQL語句的使用
Oracle與Sql server都遵循SQL-92標准:
區別如下:
1.Oracle中表名,欄位名,存儲過程名,變數名不能超過30個字元串長度。
2.Oracle中不支持Top 語法。使用whererownum < n 代替。但需要注意如果在Top前有排序的操作,則需要先排序在利用rownum取得。
3.Oracle中游標的使用與SqlServer中有挺大差別,主要是在循環控制方面不一致。
在Oracle中如果某列是Date類型,那麼它默認的格式是yyyy-MM-dd,如果使用where colDate = 『2005-06-08 17:14:57』就會出錯,『2005-06-08』可以。如果此時需要精確比較時間(小時,分,秒),可以採用下列方法:TO_DATE('2005-6-8 17:14:57','yyyy-mm-dd hh24:mi:ss')。由於Oracle和SQLServer在DateTime上對SQL標準的拓展實現方式不同,因此不能用同一個SQL實現。
4.Oracle中的TimeStamp(時間戳)與SqlServer中的差別很大。SqlServer中的TimeStamp是二進制格式存儲在資料庫中,可以將DataSet中的這個欄位類型設定為base64Binary類型。Oracle中的TimeStamp是時間格式存儲的。因此,無法用同一個DataSet既裝載SqlServer的TimeStamp,有裝載Oracle的TimeStamp.由於在應用程序中很少用到這個值,因此可以不檢索這個欄位。
5.Oracle中的TimeStamp不能像SqlServer在傳入數據的時候自動填充,可以設定默認值systimestamp來實現類似功能。
6.Oracle中沒有Boolean的欄位類型,可以用intger或者char代替SqlServer中的bit類型。
7.Oracle中會將」」空字元串當多NULL處理,也就是說,當應用程序往資料庫中插入一個空字元串時,實際資料庫會嘗試插入一個NULL。如果這個欄位是NOTNULL類型,那麼就會出錯,這種情況下可以用別的默認值代替空字元串。當從SqlServer導入數據到Oracle的時候,在NOTNULL列上的空字元串會導致導出操作失敗。此時可以在導出向導中手工修改SQL腳本,將空字元串設定成一個特殊值。