[转]mysql 事务 跨数据库 拷贝表 .....

mysql语句

7)特殊数据类型



  特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即  Timestamp、Bit和Uniqueidentifier。

  Timestamp用于表示SQLServer活动的先后顺序,以二进投影的格式表示。Timestamp数据与插入数据或者日期和时间没有关系。

  Bit由1或者0组成。当表示真或者假、ON或者OFF时,使用Bit数据类型。例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中。

  Uniqueidentifier由16字节的十六进制数字组成,表示一个全局唯一的。当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。

2.用户定义的数据类型



  用户定义的数据类型基于在MicrosoftSQLServer中提供的数据类型。当几个表中必须存储同一种数据类型时,并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。例如,可定义一种称为  postal_code的数据类型,它基于Char数据类型。

  当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。

(1)创建用户定义的数据类型



  创建用户定义的数据类型可以使用Transact-SQL语句。系统存储过程sp_addtype可以来创建用户定义的数据类型。其语法形式如下:

  sp_addtype{type},[,system_data_bype][,'null_type']

  其中,type是用户定义的数据类型的名称。system_data_type是系统提供的数据类型,例如Decimal、Int、Char  等等。null_type表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOTNULL'或者'NONULL'。

  例子:

  Usecust

  Execsp_addtypessn,'Varchar(11)',"NotNull'

  创建一个用户定义的数据类型ssn,其基于的系统数据类型是变长为11的字符,不允许空。

  例子:

  Usecust

  Execsp_addtypebirthday,datetime,'Null'

  创建一个用户定义的数据类型birthday,其基于的系统数据类型是DateTime,允许空。

  例子:

  Usemaster

  Execsp_addtypetelephone,'varchar(24),'NotNull'

  Eexcsp_addtypefax,'varchar(24)','Null'

  创建两个数据类型,即telephone和fax

(2)删除用户定义的数据类型



  当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是sp_droptype{'type'}。

  例子:

  Usemaster

  Execsp_droptype'ssn'

  注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。

SQLSERVER的字段类型说明



以下为SQL SERVER7.0以上版本的字段类型说明。SQL SERVER6.5的字段类型说明请参考SQL SERVER提供的说明。



  



字段类型

描述



bit 0或1的整型数字

int 从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字

smallint 从-2^15(-32,768)到2^15(32,767)的整型数字

tinyint 从0到255的整型数字







decimal 从-10^38到10^38-1的定精度与有效位数的数字

numeric decimal的同义词







money 从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十

smallmoney 从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十







float 从-1.79E+308到1.79E+308可变精度的数字

real 从-3.04E+38到3.04E+38可变精度的数字







datetime 从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒

smalldatetime 从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟







timestamp 时间戳,一个数据库宽度的唯一数字

uniqueidentifier 全球唯一标识符GUID







char 定长非Unicode的字符型数据,最大长度为8000

varchar 变长非Unicode的字符型数据,最大长度为8000

text 变长非Unicode的字符型数据,最大长度为2^31-1(2G)







nchar 定长Unicode的字符型数据,最大长度为8000

nvarchar 变长Unicode的字符型数据,最大长度为8000

ntext 变长Unicode的字符型数据,最大长度为2^31-1(2G)







binary 定长二进制数据,最大长度为8000

varbinary 变长二进制数据,最大长度为8000

image 变长二进制数据,最大长度为2^31-1(2G)

[down=upload/images/618fmall2.rar]DOWN LOAD THE FILE[/down]



天气:大雨,ccdot发表于2006-6-20 14:44:36,阅读了655次,共有个2回复.

--语 句              功 能

--数据操作

SELECT   --从数据库表中检索数据行和列

INSERT   --向数据库表添加新数据行

DELETE   --从数据库表中删除数据行

UPDATE   --更新数据库表中的数据

--数据定义

CREATE TABLE  --创建一个数据库表

DROP TABLE   --从数据库中删除表

ALTER TABLE   --修改数据库表结构

CREATE VIEW   --创建一个视图

DROP VIEW   --从数据库中删除视图

CREATE INDEX  --为数据库表创建一个索引

DROP INDEX   --从数据库中删除索引

CREATE PROCEDURE  --创建一个存储过程

DROP PROCEDURE  --从数据库中删除存储过程

CREATE TRIGGER  --创建一个触发器

DROP TRIGGER  --从数据库中删除触发器

CREATE SCHEMA  --向数据库添加一个新模式

DROP SCHEMA   --从数据库中删除一个模式

CREATE DOMAIN  --创建一个数据值域

ALTER DOMAIN  --改变域定义

DROP DOMAIN   --从数据库中删除一个域

--数据控制

GRANT   --授予用户访问权限

DENY   --拒绝用户访问

REVOKE   --解除用户访问权限

--事务控制

COMMIT   --结束当前事务

ROLLBACK   --中止当前事务

SET TRANSACTION  --定义当前事务数据访问特征

--程序化SQL

DECLARE   --为查询设定游标

EXPLAN   --为查询描述数据访问计划

OPEN   --检索查询结果打开一个游标

FETCH   --检索一行查询结果

CLOSE   --关闭游标

PREPARE   --为动态执行准备SQL 语句

EXECUTE   --动态地执行SQL 语句

DESCRIBE   --描述准备好的查询

---局部变量

declare @id char(10)

--set @id = ’10010001’

select @id = ’10010001’



---全局变量

---必须以@@开头





MSSQL常用汇总



下列语句部分是Mssql语句,不可以在access中使用。



SQL分类:

DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)

DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)

DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)



首先,简要介绍基础语句:

1、说明:创建数据库

CREATE DATABASE database-name

2、说明:删除数据库

drop database dbname

3、说明:备份sql server

--- 创建 备份数据的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

--- 开始 备份

BACKUP DATABASE pubs TO testBack

4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表:

A:create table tab_new like tab_old (使用旧表创建新表)

B:create table tab_new as select col1,col2… from tab_old definition only

5、说明:删除新表drop table tabname

6、说明:增加一个列

Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

7、说明:添加主键: Alter table tabname add primary key(col)

说明:删除主键: Alter table tabname drop primary key(col)

8、说明:创建索引:create [unique] index idxname on tabname(col….)

删除索引:drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

9、说明:创建视图:create view viewname as select statement

删除视图:drop view viewname

10、说明:几个简单的基本的sql语句

选择:select * from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select * from table1 order by field1,field2 [desc]

总数:select count(*) as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接

A、left outer join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right outer join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full outer join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。



其次,大家来看一些不错的sql语句

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a



2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;



3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

例子:..from b in '"&Server.MapPath(".")&"data.mdb" &"' where..



4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)



5、说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b



6、说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c



7、说明:在线视图查询(表名1:a )

select * from (SELECT a,b,c FROM a) T where t.a > 1;



8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2



9、说明:in 的使用方法

select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)



10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )



11、说明:四表联查问题:

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....



12、说明:日程安排提前五分钟提醒

SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5



13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段



14、说明:前10条记录

select top 10 * form table1 where 范围



15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)



16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)



17、说明:随机取出10条数据

select top 10 * from tablename order by newid()



18、说明:随机选择记录

select newid()



19、说明:删除重复记录

Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)



20、说明:列出数据库里所有的表名

select name from sysobjects where type='U'



21、说明:列出表里的所有的

select name from syscolumns where id=object_id('TableName')



22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

select type,sum(case vender
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值