环境 SQL2008

1.存储过程建立

库-可编程性-存储过程-右击“存储过程”-点击“新建存储过程”

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[zgccgc] //存储过程的名字 
@zgID nvarchar(10),    //定义参数区
@zgname nvarchar(10),
@zgage  int,
@zgaddress nvarchar(200)

AS
BEGIN 
   insert into zg(ID,name,age,address) values(@zgID,@zgname,@zgage,@zgaddress) 
END
GO

使用方法:
zgccgc 5,'第五名',25,'日本'

2.触发器建立

库-表-点击“+”号-右击“触发器”-点击“触发器”

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[zg2cfq]
   ON  [dbo].[zg_2]
   AFTER update
AS
BEGIN
  update zg_2 set isnull=1 where zg_2.ID=(select ID from inserted)
END
GO

使用方法:
update zg_2 set yingyu=99 where ID=2

1.SQL2008中,字段为字符,但内容为主‘2011-12-05 10:52:00’ ,怎么查记录?

select * from N201105B where Cast(BTm as datetime) > Cast('2011-05-30 10:28' As DateTime)

where CONVERT(varchar(100),fcsj,20)>'2011-08-05 14:22:00.000'

2.在ACCESS中,字段为日期时间型,那怎么查呢?

Select * from ProductionDataTable where datetime>cdate('2011-04-26 04:53:38')

Select * from ProductionDataTable where datetime>'2011-04-26 04:53:38'

3.查出XX字段前5位=‘2011-’的记录

select * from RecipeDetail where (SUBSTRING(Recipe_Code, 1, 5) = '2011-')

4.留下不从复的记录

delete y_jcyy_basefingerprint where id not in (select max(ID) from y_jcyy_basefingerprint group by personid)  ­

5.事务处理

Begin Tran
insert into RecipeMain(Code,Name,IfValid,Grade,Degree,SendType) values('2011-09022','COC','1','COC','100-250','自动车');
If @@error <>0 begin ROLLBACK TRANSACTION goto quit end ;
insert into RecipeDetail(ID,Recipe_Code,Material_Code,Standard_Dosage,ErrorMinus,ErrorPlus,Remark) values('111','2011-09022','1','500','0.23','22','0');
If @@error <>0 begin ROLLBACK TRANSACTION goto quit end ;
COMMIT TRANSACTION quit:

3.基本语法(合并结果集)

select stockname from table1 ­

union [all] ----- union合并查询结果集,all-保留重复行 ­

select stockname from table2 ­

---------------------------------------------------------------

新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default \'默认值\' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)

删除表:
Drop table [表名]

插入数据:
INSERT INTO [表名] (字段1,字段2) VALUES (100,\'51WINDOWS.NET\')

删除数据:
DELETE FROM [表名] WHERE [字段名]>100

更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\'

新增字段:
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

删除字段:
ALTER TABLE [表名] DROP COLUMN [字段名]

修改字段:
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL

重命名表:(Access 重命名表,请参考文章:在Access数据库中重命名表)
sp_rename \'表名\', \'新表名\', \'OBJECT\'

新建约束:
ALTER TABLE [表名] ADD CONSTRAINT 约束名 CHECK ([约束字段] <= \'2000-1-1\')

删除约束:
ALTER TABLE [表名] DROP CONSTRAINT 约束名

新建默认值
ALTER TABLE [表名] ADD CONSTRAINT 默认值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名]

删除默认值
ALTER TABLE [表名] DROP CONSTRAINT 默认值名

删除Sql Server 中的日志,减小数据库文件大小
dump transaction 数据库名 with no_log
backup log 数据库名 with no_log
dbcc shrinkdatabase(数据库名)
exec sp_dboption \'数据库名\', \'autoshrink\', \'true\'

\\\'添加字段通用函数
Sub AddColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Add \"&ColumnName&\" \"&ColumnType&\"\")
End Sub

\\\'更改字段通用函数
Sub ModColumn(TableName,ColumnName,ColumnType)
Conn.Execute(\"Alter Table \"&TableName&\" Alter Column \"&ColumnName&\" \"&ColumnType&\"\")
End Sub

\\\'检查表是否存在

sql=\"select count(*) as dida from sysobjects where id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1\"

set rs=conn.execute(sql)

response.write rs(\"dida\")\'返回一个数值,0代表没有,1代表存在

判断表的存在:
select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

某个表的结构
select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1

----------------------------------------------------------------

­

--IF ELSE ­

declare @x int @y int @z int ­

select @x = 1 @y = 2 @z=3 ­

if @x > @y ­

print 'x > y' --打印字符串'x > y' ­

else if @y > @z ­

print 'y > z' ­

else print 'z > y' ­

­

--CASE ­

use pangu ­

update employee ­

set e_wage = ­

case ­

when job_level = ’1’ then e_wage*1.08 ­

when job_level = ’2’ then e_wage*1.07 ­

when job_level = ’3’ then e_wage*1.06 ­

else e_wage*1.05 ­

end ­

­

--WHILE CONTINUE BREAK ­

declare @x int @y int @c int ­

select @x = 1 @y=1 ­

while @x < 3 ­

begin ­

print @x --打印变量x 的值 ­

while @y < 3 ­

begin ­

select @c = 100*@x + @y ­

print @c --打印变量c 的值 ­

select @y = @y + 1 ­

end ­

select @x = @x + 1 ­

select @y = 1 ­

end ­

­

--WAITFOR ­

--例 等待1 小时2 分零3 秒后才执行SELECT 语句 ­

waitfor delay ’01:02:03’ ­

select * from employee ­

--例 等到晚上11 点零8 分后才执行SELECT 语句 ­

waitfor time ’23:08:00’ ­

select * from employee ­

­

­

***SELECT*** ­

­

select *(列名) from table_name(表名) where column_name operator value ­

ex:(宿主) ­

select * from stock_information where stockid = str(nid) ­

stockname = 'str_name' ­

stockname like '% find this %' ­

stockname like '[a-zA-Z]%' --------- ([]指定值的范围) ­

stockname like '[^F-M]%' --------- (^排除指定范围) ­

--------- 只能在使用like关键字的where子句中使用通配符) ­

or stockpath = 'stock_path' ­

or stocknumber < 1000 ­

and stockindex = 24 ­

not stocksex = 'man' ­

stocknumber between 20 and 100 ­

stocknumber in(10,20,30) ­

order by stockid desc(asc) --------- 排序,desc-降序,asc-升序 ­

order by 1,2 --------- by列号 ­

stockname = (select stockname from stock_information where stockid = 4) ­

--------- 子查询 ­

--------- 除非能确保内层select只返回一个行的值, ­

--------- 否则应在外层where子句中用一个in限定符 ­

select distinct column_name form table_name --------- distinct指定检索独有的列值,不重复 ­

select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name ­

select stockname , "stocknumber" = count(*) from table_name group by stockname ­

--------- group by 将表按行分组,指定列中有相同的值 ­

having count(*) = 2 --------- having选定指定的组 ­

­

select * ­

from table1, table2 ­

where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示 ­

table1.id =* table2.id -------- 右外部连接 ­

­

­

***insert*** ­

­

insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx") ­

value (select Stockname , Stocknumber from Stock_table2)---value为select语句 ­

­

***update*** ­

­

update table_name set Stockname = "xxx" [where Stockid = 3] ­

Stockname = default ­

Stockname = null ­

Stocknumber = Stockname + 4 ­

­

***delete*** ­

­

delete from table_name where Stockid = 3 ­

delete from b1 where ID in(select ID from b2)

delete   a   from   table1   a,table2   b   where   a.id=b.id   and   a.col=b.col

truncate table_name ----------- 删除表中所有行,仍保持表的完整性 ­

drop table table_name --------------- 完全删除表 ­

­

***alter table*** --- 修改数据库表结构 ­

­

alter table database.owner.table_name add column_name char(2) null ..... ­

sp_help table_name ---- 显示表已有特征 ­

create table table_name (name char(20), age smallint, lname varchar(30)) ­

insert into table_name select ......... ----- 实现删除列的方法(创建新表) ­

alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束 ­

­

***function(/*常用函数*/)*** ­

­

----统计函数---- ­

AVG --求平均值 ­

COUNT --统计数目 ­

MAX --求最大值 ­

MIN --求最小值 ­

SUM --求和 ­

­

--AVG ­

use pangu ­

select avg(e_wage) as dept_avgWage ­

from employee ­

group by dept_id ­

­

--MAX ­

--求工资最高的员工姓名 ­

use pangu ­

select e_name ­

from employee ­

where e_wage = ­

(select max(e_wage) ­

from employee) ­

­

--STDEV() ­

--STDEV()函数返回表达式中所有数据的标准差 ­

­

--STDEVP() ­

--STDEVP()函数返回总体标准差 ­

­

--VAR() ­

--VAR()函数返回表达式中所有值的统计变异数 ­

­

--VARP() ­

--VARP()函数返回总体变异数 ­

­

----算术函数---- ­

­

/***三角函数***/ ­

SIN(float_expression) --返回以弧度表示的角的正弦 ­

COS(float_expression) --返回以弧度表示的角的余弦 ­

TAN(float_expression) --返回以弧度表示的角的正切 ­

COT(float_expression) --返回以弧度表示的角的余切 ­

/***反三角函数***/ ­

ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角 ­

ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角 ­

ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角 ­

ATAN2(float_expression1,float_expression2) ­

--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 ­

DEGREES(numeric_expression) ­

--把弧度转换为角度返回与表达式相同的数据类型可为 ­

--INTEGER/MONEY/REAL/FLOAT 类型 ­

RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为 ­

--INTEGER/MONEY/REAL/FLOAT 类型 ­

EXP(float_expression) --返回表达式的指数值 ­

LOG(float_expression) --返回表达式的自然对数值 ­

LOG10(float_expression)--返回表达式的以10 为底的对数值 ­

SQRT(float_expression) --返回表达式的平方根 ­

/***取近似值函数***/ ­

CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为 ­

--INTEGER/MONEY/REAL/FLOAT 类型 ­

FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为 ­

--INTEGER/MONEY/REAL/FLOAT 类型 ­

ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据 ­

--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 ­

ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为 ­

--INTEGER/MONEY/REAL/FLOAT 类型 ­

SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型 ­

--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 ­

PI() --返回值为π 即3.1415926535897936 ­

RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数 ­

­

­

----字符串函数---- ­

ASCII() --函数返回字符表达式最左端字符的ASCII 码值 ­

CHAR() --函数用于将ASCII 码转换为字符 ­

--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 ­

LOWER() --函数把字符串全部转换为小写 ­

UPPER() --函数把字符串全部转换为大写 ­

STR() --函数把数值型数据转换为字符型数据 ­

LTRIM() --函数把字符串头部的空格去掉 ­

RTRIM() --函数把字符串尾部的空格去掉 ­

LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串 ­

CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置 ­

SOUNDEX() --函数返回一个四位字符码 ­

--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 ­

DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异 ­

--0 两个SOUNDEX 函数返回值的第一个字符不同 ­

--1 两个SOUNDEX 函数返回值的第一个字符相同 ­

--2 两个SOUNDEX 函数返回值的第一二个字符相同 ­

--3 两个SOUNDEX 函数返回值的第一二三个字符相同 ­

--4 两个SOUNDEX 函数返回值完全相同 ­­­

­

----日期函数---- ­

DAY() --函数返回date_expression 中的日期值 ­

MONTH() --函数返回date_expression 中的月份值 ­

YEAR() --函数返回date_expression 中的年份值 ­

DATEADD(<datepart> ,<number> ,<date>) ­

--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 ­

DATEDIFF(<datepart> ,<number> ,<date>) ­

--函数返回两个指定日期在datepart 方面的不同之处 ­

DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分 ­

DATEPART(<datepart> , <date>) --函数以整数值的形式返回日期的指定部分 ­

GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间

SQL2008--SQL语句-存储过程-触发器-事务处理-基本语法-函数的更多相关文章

  1. SQL基础-存储过程&触发器

    一.存储过程 1.存储过程简介 存储过程: 一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,然后通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 存储过程的创建: ...

  2. SQL之存储过程详细介绍及语法(转)

    1:定义 存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行. 存储过程分为系统存储过程和自定义 ...

  3. SQL语句多表连接查询语法

    一.外连接 1.左连接  left join 或 left outer join SQL语句:select * from student left join score on student.Num= ...

  4. SQL Server高级内容之case语法函数

    1.Case函数的用法  (1)使用类似:switch-case与if-else if. (2)语法: case [字段] when 表达式 then 显示数据 when 表达式 then 显示数据 ...

  5. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询

    拖了一个星期,终于开始写第三篇了.走起! 聚合函数: SQL中提供的聚合函数可以用来统计.求和.求最值等等. 分类: –COUNT:统计行数量 –SUM:获取单个列的合计值 –AVG:计算某个列的平均 ...

  6. 2.1 Oracle之DML的SQL语句之单表查询以及函数

    1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...

  7. SqlServer和Oracle中一些常用的sql语句8 触发器和事务

    --创建和执行事后触发器 --更新仓库备份表中记录时自动创建数据表且插入三条记录 create trigger db_trigger1 on 仓库备份 for update as begin if E ...

  8. 用SQL语句创建触发器

    --假设XSCJ数据库中增加一新表XS_HIS,表结构和表XS相同,用来存放从XS--表 --中删除的记录.创建一个触发器,当XS表被删除一行,把删除的记录写到日--志表XS_HIS中. CREATE ...

  9. SQL 视图 局部变量 全局变量 条件语句 事务 触发器

    一.视图 1.视图是一张虚拟表,他所存储的不是实际数据,而是查询语句,但我们可以对视图进行像数据表一样的操作. 2.为什么使用视图呢?我的理解是:1.在远程传输数据时,可以避免过长的查询字符,减少流量 ...

随机推荐

  1. undefined与null的区别---js

    不错... http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

  2. 版本管理工具介绍—Git篇

    前篇 如题,提起版本管理工具相信做C#开发 还是对Git比较陌生  我们可能更熟悉vss.svn 记录此文的目的 更是为以后的前段学习做基础  现在的技术比如nodeJs  angularJs ==都 ...

  3. Android:布局实例之常见用户设置界面

    实现效果: 整理思路: 1.控件:文字TextView 和 右箭头ImageView 2.因为考虑到点击效果,设计为:最外层为全圆角,内层有四种情况,分别为上圆角.无圆角.下圆角和全圆角. 3.内层样 ...

  4. Python之函数篇

    函数形参 函数取得的参数是你提供给函数的值,这样函数就可以利用这些值 做 一些事情.这些参数就像变量一样,只不过它们的值是在我们调用函数的时候定义的,而非在函数本身内赋值. 参数在函数定义的圆括号对内 ...

  5. poj 3009 Curling 2.0( dfs )

    题目:http://poj.org/problem?id=3009 参考博客:http://www.cnblogs.com/LK1994/ #include <iostream> #inc ...

  6. BZOJ3155: Preprefix sum

    题解: 写过树状数组搞区间修改和区间求和的就可以秒出吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath& ...

  7. (转载)有关反演和gcd

    tips : 积性函数 F (n) = Π F (piai ) 若F (n), G (n)是积性函数则 F (n) * G (n) Σd | n F (n) 是积性函数 n = Σd | n  φ ( ...

  8. SQL SERVER 2000 & SQL SERVER 2005 数据缓存依赖

    一.SQL SERVER 7.0/2000和SQL SERVER 2005的简介及比较 1.1     SQL SERVER 7.0/2000 SQL SERVER 7.0/2000没有提供内置的支持 ...

  9. SPOJ 962 Intergalactic Map (从A到B再到C的路线)

    [题意]在一个无向图中,一个人要从A点赶往B点,之后再赶往C点,且要求中途不能多次经过同一个点.问是否存在这样的路线.(3 <= N <= 30011, 1 <= M <= 5 ...

  10. bq27441-G1 工作机制

    /*************************************************************************** * bq27441-G1 工作机制 * 声明: ...