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脚本,将空字符串设定成一个特殊值。