数据库
wcp88888888
Never give up!
展开
-
(转)SQLServer行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN(<column_list>)) ...原创 2012-10-17 14:38:45 · 114 阅读 · 0 评论 -
sql 语句动态操作表
--增加列alter table [TableName] add [P_ID] bigint not null default 0--删除列alter table [TableName] drop column [P_ID]--设置主键alter table [TableName] add constraint PK_TableName primary key(P_ID)--删除主键alter t...2009-08-05 14:10:00 · 103 阅读 · 0 评论 -
遇到“备份集中的数据库备份与现有XXX数据库不同”的错误
当在使用另外一台的数据库备份文件.bak恢复到本机数据库时,遇到“备份集中的数据库备份与现有XXX数据库不同”的错误,后直接登录本机SQL Server数据库master,新建查询,并执行以下命令: RESTORE DATABASE [XXX] FROM DISK = N'G:\data\zt20080720.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STA...2010-03-20 16:44:00 · 149 阅读 · 0 评论 -
SQLSERVER 中DATEDIFF函数
SQLSERVER 中DATEDIFF函数2008-10-29 10:06返回跨两个指定日期的日期和时间边界数。DATEDIFF ( datepart , startdate , enddate ) datepart是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期...2009-05-05 21:18:00 · 136 阅读 · 0 评论 -
帖一个我自己收集的部分查询时间的SQL
帖一个我自己收集的部分查询时间的SQL select convert(varchar(12), getdate(), 1) select convert(varchar(12), getdate(), 2) select convert(varchar(12), getdate(), 3) select convert(varchar(12), getdate...2009-05-05 21:06:00 · 64 阅读 · 0 评论 -
delete from“表名”
在某些情况下,我们会需要直接由数据库中去除一些资料。这可以藉由 DELETE FROM 指令来达成。它的语法是: DELETE FROM "表格名"WHERE {条件} 以下我们用个实例说明。假设我们有以下这个表格: Store_Information 表格store_name Sales Date Los Angeles $1500 Jan-0...2009-02-25 18:32:00 · 10888 阅读 · 0 评论 -
update语句
我们有时候可能会需要修改表格中的资料。在这个时候,我们就需要用到 UPDATE 指令。这个指令的语法是: UPDATE "表格名"SET "栏位1" = [新值]WHERE {条件} 最容易了解这个语法的方式是透过一个例子。假设我们有以下的表格: Store_Information 表格store_name Sales Date Los Angeles ...2009-02-25 18:29:00 · 129 阅读 · 0 评论 -
insert语句
到目前为止,我们学到了将如何把资料由表格中取出。但是这些资料是如果进入这些表格的呢? 这就是这一页 (INSERT INTO) 和下一页 (UPDATE) 要讨论的。 基本上,我们有两种作法可以将资料输入表格中内。一种是一次输入一笔,另一种是一次输入好几笔。 我们先来看一次输入一笔的方式。 依照惯例,我们先介绍语法。一次输入一笔资料的语法如下: INSERT INTO "表格名" ("...2009-02-25 18:23:00 · 92 阅读 · 0 评论 -
TRUNCATE TABLE 删除表格
有时候我们会需要清除一个表格中的所有资料。要达到者个目的,一种方式是我们在 SQL DROP 那一页 看到的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。 TRUNCATE TABLE 的语法为下: TRUNCATE TABLE "表格名" 所以...2009-02-25 18:19:00 · 325 阅读 · 0 评论 -
sql in
在 SQL 中,在两个情况下会用到 IN 这个指令;这一页将介绍其中之一━━与 WHERE 有关的那一个情况。在这个用法下, 我们事先已知道至少一个我们需要的值,而我们将这些知道的值都放入 IN 这个子句。 IN 指令的语法为下: SELECT "栏位名" FROM "表格名" WHERE "栏位名" IN ('值一', '值二', ...) 在括弧内可以有一或多个值,而不同值之间由逗点分...2009-02-25 10:32:00 · 79 阅读 · 0 评论 -
sql Server like 匹配符的介绍
like关键字是一个匹配预算符,它与字符串表达式相匹配,字符串表达式由字符串和通配符组成。SQL的4个通配符为:1、%百分号,匹配包含0个或多个字符的字符串。2、_下划线,匹配任何单个的字符。3、[]排列通配符,匹配任何在范围活集合之内的单个字符,例如,[m-p]匹配的是m、n、o、p单个字符。4、[^]不在范围之内的字符,匹配任何不在范围活集合之内的单个字符,例如,[^mnop]...原创 2011-04-27 14:18:27 · 930 阅读 · 0 评论 -
数据库 left join,right join,inner join用法举例
现有A和B两个表表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID bName 1 2006032401 2 ...原创 2011-11-30 16:30:12 · 111 阅读 · 0 评论 -
SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
SQL中使用WITH AS提高性能-使用公用表表达式(CTE) 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION AL...原创 2012-01-18 14:57:54 · 116 阅读 · 0 评论 -
mybatis 模糊查询
使用数据库查询数据的时候,绝对会用到like进行模糊查询的,但是在myBatis中怎么实现呢当时我有两个思路,第一在配置文件中配置, 最开始配置成如下: and user_name like %#{userName}%,但是报错这个错误有两处,一是应该用单引号把%#{userName}%括起来,二是不能用#号,而是改成$号,所以正确的配置应该是 and user_name like '...原创 2012-01-05 18:03:13 · 69 阅读 · 0 评论 -
ibatis 入门
昨天学习了一下ibatis,按照ibatis 开发指南写了一个测试项目,感觉和hibernate相差还是很大的。hibernate是全自动的,而ibatis是半自动的,是需要自己手动写sql语句的(当然这些语句是写在xml文件中的),强调配置大于编码么,哈哈 核心配置文件为:SqlMapConfig.xml。我配置文件为:写道<?xml version="1.0" enco...原创 2011-12-28 12:48:14 · 93 阅读 · 0 评论 -
转 JTA简介
Java Transaction API(Java事务API) (JTA)Java Transaction API(Application Programming Interface)什么是JTA Transaction?它有怎样的特点呢?JTA Transaction是指由J2EE Transaction manager去管理的事务。其最大的特点是调用UserTransaction接口的...原创 2011-12-26 17:47:05 · 158 阅读 · 0 评论 -
sql Server varchar和nvarchar的区别
SQL Server中字符串的存储方式太多样,这里摘抄一篇别人的文章做一个小小的分析。CHAR和NCHAR都是定长的VARCHAR和NVARCHAR都是不定长但限制最长的TEXT和NTEXT都是可变长但不需要限定最大长度的。这个可以存储的数据最大长度是2的31次方减一,这个大小其实是很难达到。详细的参见下面的文摘。[原文地址]http://blog.163.com/fybgoo...原创 2011-04-11 11:16:18 · 151 阅读 · 0 评论 -
Mysql 中使用DATE_FORMAT函数按月、周统计数据
项目中的统计报表作的很多,需求中有按周、月统计数据的。查看了Mysql的API,发现Date_format是格式化日期的,看了Date_format()的具体说明后就用这个函数按周统计,sql大致如下:select DATE_FORMAT(check_date ,'%X-%V') dates,avg(weight)/10000 weight from ho_body where user_id...2011-02-11 13:47:00 · 93 阅读 · 0 评论 -
MySQL:MySQL日期数据范例、MySQL时候范例利用总结
MySQL 日期范例:日期格局、所占存储空间、日期规模 比力。 日期范例 存储空间 日期格局 日期规模 ------------ --------- --------------------- ----------------------------------------- datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ ...2011-01-13 12:51:00 · 106 阅读 · 0 评论 -
sql外键
外来键是一个(或数个)指向另外一个表格主键的栏位。外来键的目的是确定资料的参考完整性(referential integrity)。换言之,只有被准许的资料值才会被存入资料库内。 举例来说,假设我们有两个表格:一个 CUSTOMER 表格,里面记录了所有顾客的资料;另一个 ORDERS 表格,里面记录了所有顾客订购的资料。在这里的一个限制,就是所有的订购资料中的顾客,都一定是要跟在 CUSTO...2009-02-25 18:07:00 · 159 阅读 · 0 评论 -
主键(Primary Key)
主键 (Primary Key) 中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键 (Composite Key)。 主键可以在建置新表格时设定 (运用 CREATE TABLE 语句),或是以改变现有的表格架构方式设...2009-02-25 18:01:00 · 256 阅读 · 0 评论 -
sql alter table
在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下: 加一个栏位 删去一个栏位 改变栏位名称 改变栏位的资料种类 以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。 ALTER TABLE 的语法如下: ALTER TABLE "table_name"[改变方式] [改变方式...2009-02-25 17:23:00 · 76 阅读 · 0 评论 -
subquery 框架
我们可以在一个 SQL 语句中放入另一个 SQL 语句。当我们在 WHERE 子句或 WHERE 子句或 HAVING 子句中插入另一个 SQL 语句时,我们就有一个 subquery 的架构。 Subquery 的作用是什么呢?第一,它可以被用来连接表格。另外,有的时候 subquery 是唯一能够连接两个表格的方式。 Subquery 的语法如下: SELECT "栏位1" FROM ...2009-02-25 11:39:00 · 134 阅读 · 0 评论 -
外链接
之前我们看到的左连接 (left join),又称内部连接 (inner join)。在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。那如果我们想要列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现,那该怎么办呢?在这个时候,我们就需要用到 SQL OUTER JOIN (外部连接) 的指令。 外部连接的语法是依数据库的不同而有所不同的。举例来说,在 Oracle 上...2009-02-25 11:31:00 · 114 阅读 · 0 评论 -
内连接
现在我们介绍连接(join)的概念。要了解连接,我们需要用到许多我们之前已介绍过的指令。 我们先假设我们有以下的两个表格, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-199...2009-02-25 11:23:00 · 131 阅读 · 0 评论 -
having 子句
那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。HAVING...2009-02-25 11:09:00 · 92 阅读 · 0 评论 -
group by
我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么办呢?在这个情况下,我们要做到两件事:第一,我们对于 store_name 及 Sales 这两个栏位都要选出。第二,我们需要确认所有的 sales 都要依照各个 store_name 来分开算。这个语法为: SE...2009-02-25 11:04:00 · 84 阅读 · 0 评论 -
count 函数
COUNT 是函数之一。由于它的使用广泛,我们在这里特别提出来讨论。基本上,COUNT 让我们能够数出在表格中有多少笔资料被选出来。它的语法是: SELECT COUNT("栏位名") FROM "表格名" 举例来说,若我们要找出我们的示范表格中有几笔 store_name 栏不是空白的资料时, Store_Information 表格store_name Sales ...2009-02-25 10:58:00 · 77 阅读 · 0 评论 -
order by
到目前为止,我们已学到如何藉由 SELECT 及 WHERE这两个指令将资料由表格中抓出。不过我们尚未提到这些资料要如何排列。这其实是一个很重要的问题。事实上,我们经常需要能够将抓出的资料做一个有系统的显示。这可能是由小往大 (ascending) 或是由大往小(descending)。在这种情况下,我们就可以运用 ORDER BY这个指令来达到我们的目的。 ORDER BY 的语法如...2009-02-25 10:52:00 · 98 阅读 · 0 评论 -
sql like
LIKE 是另一个在 WHERE 子句中会用到的指令。基本上,LIKE 能让我们依据一个套式 (pattern) 来找出我们要的资料。相对来说,在运用 IN 的时候,我们完全地知道我们需要的条件;在运用 BETWEEN 的时候,我们则是列出一个范围。 LIKE 的语法如下: SELECT "栏位名" FROM "表格名" WHERE "栏位名" LIKE {套式} {套式} 经常包括野卡 ...2009-02-25 10:37:00 · 72 阅读 · 0 评论 -
UNION
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 UNION 的语法如下: [SQL 语句 1]U...2009-02-25 11:56:00 · 63 阅读 · 0 评论 -
Union all
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复。 UNION ALL 的语法如下: [SQL 语句 1]UNION ALL[SQL 语句 2] 我们用和上一页同样的例子来显示出 UNION ALL 和 UNION 的不同。同样假设我...2009-02-25 12:10:00 · 88 阅读 · 0 评论 -
索引 (Index)
索引 (Index) 可以帮助我们从表格中快速地找到需要的资料。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。 从资料库表格中寻找资料也是同样的原理。如果一个表格没有索...2009-02-25 16:49:00 · 75 阅读 · 0 评论 -
通过建立索引提高数据库查询速度的原理
索引是提高数据查询最有效的方法,也是最难全面掌握的技术,因为正确的索引可能使效率提高10000倍,而无效的索引可能是浪费了数据库空间,甚至大大降低查询性能。 索引的管理成本 1、 存储索引的磁盘空间 2、 执行数据修改操作(INSERT、UPDATE、DELETE)产生的索引维护 3、 在数据处理时回需额外的回退空间。 实际数据修改测试: 一个表有字段A、B、C,同时进行插入1000...2009-02-25 16:46:00 · 172 阅读 · 0 评论 -
索引(Index)
索引 (Index) 可以帮助我们从表格中快速地找到需要的资料。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运用索引是一种有效且省时的方式。 从资料库表格中寻找资料也是同样的原理。如果一个表格没有索...2009-02-25 16:25:00 · 77 阅读 · 0 评论 -
sql 中的trim
SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称: MySQL: TRIM(), RTRIM(), LTRIM() Oracle: RTRIM(), LTRIM() SQL Server: RTRIM(), LTRIM() 各种 trim 函数的语法如下: TRIM([[位置] [要移除...2009-02-25 13:48:00 · 177 阅读 · 0 评论 -
SQL中subString
SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR(), SUBSTRING() Oracle: SUBSTR() SQL Server: SUBSTRING() 最常用到的方式如下 (在这里我们用SUBSTR()为例): SUBSTR(str,pos): 由<str>...2009-02-25 13:35:00 · 115 阅读 · 0 评论 -
有的时候,我们有需要将由不同栏位获得的资料串连在一起
有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种资料库都有提供方法来达到这个目的: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: + CONCAT() 的语法如下: CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个...2009-02-25 13:30:00 · 94 阅读 · 0 评论 -
sql中MInus
MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。 MINUS 的语法如下: [SQL 语句 1]MINUS[SQL 语句 2] 我们...2009-02-25 12:23:00 · 115 阅读 · 0 评论 -
sql 中Intersect
和 UNION 指令类似, INTERSECT 也是对两个 SQL 语句所产生的结果做处理的。不同的地方是, UNION 基本上是一个 OR (如果这个值存在于第一句或是第二句,它就会被选出),而 INTERSECT 则比较像 AND ( 这个值要存在于第一句和第二句才会被选出)。 UNION 是联集,而 INTERSECT 是交集。 INTERSECT 的语法如下: [SQL语句 1]I...2009-02-25 12:15:00 · 137 阅读 · 0 评论