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的对比列表。
呵呵,希望能有帮助,^_^