﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-IT人生-随笔分类-数据库</title><link>http://www.blogjava.net/cool2009/category/38713.html</link><description>专注于java相关技术.</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2009 03:08:13 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2009 03:08:13 GMT</pubDate><ttl>60</ttl><item><title>在oracle中建立自动递增的主键列(转)</title><link>http://www.blogjava.net/cool2009/archive/2009/04/29/268067.html</link><dc:creator>龙华城</dc:creator><author>龙华城</author><pubDate>Wed, 29 Apr 2009 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/cool2009/archive/2009/04/29/268067.html</guid><wfw:comment>http://www.blogjava.net/cool2009/comments/268067.html</wfw:comment><comments>http://www.blogjava.net/cool2009/archive/2009/04/29/268067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cool2009/comments/commentRss/268067.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cool2009/services/trackbacks/268067.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、创建自增序列：<br>create sequence cnet_wf_net_seq<br> increment by 1<br> start with 1<br> maxvalue 999999;&nbsp;&nbsp;<a href='http://www.blogjava.net/cool2009/archive/2009/04/29/268067.html'>阅读全文</a><img src ="http://www.blogjava.net/cool2009/aggbug/268067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cool2009/" target="_blank">龙华城</a> 2009-04-29 11:15 <a href="http://www.blogjava.net/cool2009/archive/2009/04/29/268067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server日期查询时的日期格式转换(转载)</title><link>http://www.blogjava.net/cool2009/archive/2009/04/21/266688.html</link><dc:creator>龙华城</dc:creator><author>龙华城</author><pubDate>Tue, 21 Apr 2009 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/cool2009/archive/2009/04/21/266688.html</guid><wfw:comment>http://www.blogjava.net/cool2009/comments/266688.html</wfw:comment><comments>http://www.blogjava.net/cool2009/archive/2009/04/21/266688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cool2009/comments/commentRss/266688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cool2009/services/trackbacks/266688.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 问题提出：<br>经常会有这样的查询要求，输入或者日历控件产生的日期格式为 yyyy-mm-dd，而数据库中的字段是datetime类型，即yyyy-mm-dd hh:mm:ss。如果简单的使用between语句或者=语句进行查询，查询结果可能是错误或者数据不全。<br>假设 数据库中有 2008-2-27 日的数据，但直接使用 fielddate='2008-2-27' 或者使用 between '2008-2-27' and '2008-2-27'将不能查到该天的数据。 &nbsp;&nbsp;<a href='http://www.blogjava.net/cool2009/archive/2009/04/21/266688.html'>阅读全文</a><img src ="http://www.blogjava.net/cool2009/aggbug/266688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cool2009/" target="_blank">龙华城</a> 2009-04-21 10:07 <a href="http://www.blogjava.net/cool2009/archive/2009/04/21/266688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL SERVER基本语法参考</title><link>http://www.blogjava.net/cool2009/archive/2009/03/31/263211.html</link><dc:creator>龙华城</dc:creator><author>龙华城</author><pubDate>Tue, 31 Mar 2009 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/cool2009/archive/2009/03/31/263211.html</guid><wfw:comment>http://www.blogjava.net/cool2009/comments/263211.html</wfw:comment><comments>http://www.blogjava.net/cool2009/archive/2009/03/31/263211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/cool2009/comments/commentRss/263211.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/cool2009/services/trackbacks/263211.html</trackback:ping><description><![CDATA[<p>一、资料定义 ｄｄｌ（data definition language) <br />
资料定语言是指对资料的格式和形态下定义的语言，他是每个资料库要建立时候时首先要面对的，举凡资料分哪些表格关系、表格内的有什麽栏位主键、表格和表格之间互相参考的关系等等，都是在开始的时候所必须规划好的。</p>
<p>１、建表格：<br />
create table table_name( <br />
column1 datatype [not null] [not null primary key], <br />
column2 datatype [not null],<br />
...）<br />
说明：　<br />
datatype --是资料的格式，详见表。<br />
nut null --可不可以允许资料有空的（尚未有资料填入）。<br />
primary key --是本表的主键。</p>
<p>２、更改表格　<br />
alter table table_name <br />
add column column_name datatype <br />
说明：增加一个栏位（没有删除某个栏位的语法。<br />
alter table table_name<br />
add primary key (column_name)<br />
说明：更改表得的定义把某个栏位设为主键。<br />
alter table table_name<br />
drop primary key (column_name)<br />
说明：把主键的定义删除。</p>
<p>３、建立索引　<br />
create index index_name on table_name (column_name)<br />
说明：对某个表格的栏位建立索引以增加查询时的速度。</p>
<p>４、删除　<br />
drop table_name<br />
drop index_name</p>
<p>二、的资料形态 datatypes<br />
smallint<br />
16 位元的整数。<br />
interger<br />
32 位元的整数。<br />
decimal(p,s)<br />
p 精确值和 s 大小的十进位整数，精确值p是指全部有几个数(digits)大小值，s是指小数<br />
点後有几位数。如果没有特别指定，则系统会设为 p=5; s=0 。 <br />
float<br />
32位元的实数。<br />
double<br />
64位元的实数。<br />
char(n)<br />
n 长度的字串，n不能超过 254。<br />
varchar(n)<br />
长度不固定且其最大长度为 n 的字串，n不能超过 4000。<br />
graphic(n)<br />
和 char(n) 一样，不过其单位是两个字元 double-bytes， n不能超过127。这个形态是为<br />
了支援两个字元长度的字体，例如中文字。<br />
vargraphic(n)<br />
可变长度且其最大长度为 n 的双字元字串，n不能超过 2000。<br />
date<br />
包含了 年份、月份、日期。<br />
time<br />
包含了 小时、分钟、秒。<br />
timestamp<br />
包含了 年、月、日、时、分、秒、千分之一秒。</p>
<p>三、资料操作 ｄｍｌ （data manipulation language)<br />
资料定义好之後接下来的就是资料的操作。资料的操作不外乎增加资料（insert)、查询资料（query）、更改资料（update) 、删除资料（delete）四种模式，以下分 别介绍他们的语法：</p>
<p>１、增加资料：<br />
insert into table_name (column1,column2,...)<br />
values ( value1,value2, ...)<br />
说明：<br />
1.若没有指定column 系统则会按表格内的栏位顺序填入资料。<br />
2.栏位的资料形态和所填入的资料必须吻合。<br />
3.table_name 也可以是景观 view_name。</p>
<p>insert into table_name (column1,column2,...)<br />
select columnx,columny,... from another_table<br />
说明：也可以经过一个子查询（subquery）把别的表格的资料填入。</p>
<p>２、查询资料：<br />
基本查询<br />
select column1,columns2,...<br />
from table_name<br />
说明：把table_name 的特定栏位资料全部列出来<br />
select *<br />
from table_name<br />
where column1 = *** <br />
[and column2 &gt; yyy] [or column3 &lt;&gt; zzz]<br />
说明：<br />
1.'*'表示全部的栏位都列出来。<br />
2.where 之後是接条件式，把符合条件的资料列出来。</p>
<p>select column1,column2<br />
from table_name<br />
order by column2 [desc]<br />
说明：order by 是指定以某个栏位做排序，[desc]是指从大到小排列，若没有指明，则是从小到大<br />
排列</p>
<p>组合查询<br />
组合查询是指所查询得资料来源并不只有单一的表格，而是联合一个以上的<br />
表格才能够得到结果的。<br />
select *<br />
from table1,table2<br />
where table1.colum1=table2.column1<br />
说明：<br />
1.查询两个表格中其中 column1 值相同的资料。<br />
2.当然两个表格相互比较的栏位，其资料形态必须相同。<br />
3.一个复杂的查询其动用到的表格可能会很多个。</p>
<p>整合性的查询：<br />
select count (*) <br />
from table_name<br />
where column_name = ***<br />
说明：<br />
查询符合条件的资料共有几笔。<br />
select sum(column1)<br />
from table_name<br />
说明：<br />
1.计算出总和，所选的栏位必须是可数的数字形态。<br />
2.除此以外还有 avg() 是计算平均、max()、min()计算最大最小值的整合性查询。<br />
select column1,avg(column2)<br />
from table_name<br />
group by column1<br />
having avg(column2) &gt; ***<br />
说明：<br />
1.group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字<br />
一起使用。 <br />
2.having : 必须和 group by 一起使用作为整合性的限制。</p>
<p>复合性的查询<br />
select *<br />
from table_name1<br />
where exists (<br />
select *&lt;BR&gt;from table_name2<br />
where conditions )<br />
说明：<br />
1.where 的 conditions 可以是另外一个的 query。<br />
2.exists 在此是指存在与否。<br />
select *<br />
from table_name1<br />
where column1 in (<br />
select column1 <br />
from table_name2<br />
where conditions )<br />
说明：　<br />
1. in 後面接的是一个集合，表示column1 存在集合里面。<br />
2. select 出来的资料形态必须符合 column1。 </p>
<p>&nbsp;</p>
<p>其他查询<br />
select *<br />
from table_name1<br />
where column1 like 'x%' <br />
说明：like 必须和後面的'x%' 相呼应表示以 x为开头的字串。<br />
select *<br />
from table_name1<br />
where column1 in ('***','yyy',..)<br />
说明：in 後面接的是一个集合，表示column1 存在集合里面。<br />
select *<br />
from table_name1<br />
where column1 between xx and yy<br />
说明：between 表示 column1 的值介於 xx 和 yy 之间。 </p>
<p>３、更改资料：<br />
update table_name<br />
set column1='***'<br />
where conditoins<br />
说明：<br />
1.更改某个栏位设定其值为'***'。<br />
2.conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。</p>
<p>４、删除资料：<br />
delete from table_name<br />
where conditions<br />
说明：删除符合条件的资料。</p>
<p>说明：关于where条件后面如果包含有日期的比较，不同数据库有不同的表达式。具体如下：<br />
(1)如果是access数据库，则为：where mydate&gt;#2000-01-01# <br />
(2)如果是oracle数据库，则为：where mydate&gt;cast('2000-01-01' as date)<br />
或：where mydate&gt;to_date('2000-01-01','yyyy-mm-dd')<br />
在delphi中写成：<br />
thedate='2000-01-01';<br />
query1.sql.add('select * from abc where mydate&gt;cast('+''''+thedate+''''+' as date)'); </p>
<p>如果比较日期时间型，则为：<br />
where mydatetime&gt;to_date('2000-01-01 10:00:01','yyyy-mm-dd hh24:mi:ss')</p>
<img src ="http://www.blogjava.net/cool2009/aggbug/263211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/cool2009/" target="_blank">龙华城</a> 2009-03-31 18:58 <a href="http://www.blogjava.net/cool2009/archive/2009/03/31/263211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>