📄 sql数据库完全手册√五行网络.htm
字号:
<P><STRONG>精妙SQL语句 </STRONG></P>
<P> <BR> 说明:复制表(只复制结构,源表名:a 新表名:b) </P>
<P>SQL: select * into b from a where 1<>1 </P>
<P>说明:拷贝表(拷贝数据,源表名:a 目标表名:b) </P>
<P>SQL: insert into b(a, b, c) select d,e,f from b; </P>
<P>说明:显示文章、提交人和最后回复时间 </P>
<P>SQL: select a.title,a.username,b.adddate from table
a,(select max(adddate) adddate from table where
table.title=a.title) b </P>
<P>说明:外连接查询(表名1:a 表名2:b) </P>
<P>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 </P>
<P>说明:日程安排提前五分钟提醒 </P>
<P>SQL: select * from 日程安排 where
datediff('minute',f开始时间,getdate())>5 </P>
<P>说明:两张关联表,删除主表中已经在副表中没有的信息 </P>
<P>SQL: </P>
<P>delete from info where not exists ( select * from infobz
where info.infid=infobz.infid ) </P>
<P>说明:-- </P>
<P>SQL: </P>
<P>SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE </P>
<P>FROM TABLE1, </P>
<P>(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE </P>
<P>FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND </P>
<P>FROM TABLE2 </P>
<P>WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE,
'YYYY/MM')) X, </P>
<P>(SELECT NUM, UPD_DATE, STOCK_ONHAND </P>
<P>FROM TABLE2 </P>
<P>WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = </P>
<P>TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') ¦¦
'/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, </P>
<P>WHERE X.NUM = Y.NUM (+) </P>
<P>AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) <>
X.STOCK_ONHAND ) B </P>
<P>WHERE A.NUM = B.NUM </P>
<P>说明:-- </P>
<P>SQL: </P>
<P>select * from studentinfo where not exists(select * from
student where studentinfo.id=student.id) and
系名称='"&strdepartmentname&"' and
专业名称='"&strprofessionname&"' order by 性别,生源地,高考总成绩
</P>
<P>说明: </P>
<P>从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源) </P>
<P>SQL: </P>
<P>SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate,
'yyyy') AS telyear, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01',
a.factration)) AS JAN, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02',
a.factration)) AS FRI, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03',
a.factration)) AS MAR, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04',
a.factration)) AS APR, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05',
a.factration)) AS MAY, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06',
a.factration)) AS JUE, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07',
a.factration)) AS JUL, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08',
a.factration)) AS AGU, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09',
a.factration)) AS SEP, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10',
a.factration)) AS OCT, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11',
a.factration)) AS NOV, </P>
<P>SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12',
a.factration)) AS DEC </P>
<P>FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate,
b.factration </P>
<P>FROM TELFEESTAND a, TELFEE b </P>
<P>WHERE a.tel = b.telfax) a </P>
<P>GROUP BY a.userper, a.tel, a.standfee,
TO_CHAR(a.telfeedate, 'yyyy') </P>
<P>说明:四表联查问题: </P>
<P>SQL: 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 .....
</P>
<P>说明:得到表中最小的未使用的ID号 </P>
<P>SQL: </P>
<P>SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE
b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
</P>
<P>FROM Handle </P>
<P>WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle
a) <BR> </P>
<P><STRONG>SQL数据库完全手册</STRONG>_1 </P>
<P> <BR> <BR> SQL是Structured Quevy
Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。<BR> ##1
二、SQL数据库数据体系结构<BR>
SQL数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(base
table);存储模式(内模式)称为“存储文件”(stored
file);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。名称对称如^00100009a^:<BR> ##1
三、SQL语言的组成<BR>
在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:<BR>
1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。<BR>
2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。<BR>
3.一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。<BR>
4.一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。<BR>
5.用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。<BR>
6.SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。<BR> ##1
四、对数据库进行操作<BR>
SQL包括了所有对数据库的操作,主要是由4个部分组成:<BR>
1.数据定义:这一部分又称为“SQL
DDL”,定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引4部分。<BR>
2.数据操纵:这一部分又称为“SQL
DML”,其中包括数据查询和数据更新两大类操作,其中数据更新又包括插入、删除和更新三种操作。<BR>
3.数据控制:对用户访问数据的控制有基本表和视图的授权、完整性规则的描述,事务控制语句等。<BR>
4.嵌入式SQL语言的使用规定:规定SQL语句在宿主语言的程序中使用的规则。<BR>
下面我们将分别介绍:<BR> ##2
(一)数据定义<BR>
SQL数据定义功能包括定义数据库、基本表、索引和视图。<BR>
首先,让我们了解一下SQL所提供的基本数据类型:(如^00100009b^)<BR>
1.数据库的建立与删除<BR>
(1)建立数据库:数据库是一个包括了多个基本表的数据集,其语句格式为:<BR>
CREATE DATABASE <数据库名>
[其它参数]<BR>
其中,<数据库名>在系统中必须是唯一的,不能重复,不然将导致数据存取失误。[其它参数]因具体数据库实现系统不同而异。<BR>
例:要建立项目管理数据库(xmmanage),其语句应为:<BR>
CREATE DATABASE
xmmanage<BR> (2)
数据库的删除:将数据库及其全部内容从系统中删除。<BR>
其语句格式为:DROP DATABASE
<数据库名><BR>
例:删除项目管理数据库(xmmanage),其语句应为:<BR>
DROP DATABASE
xmmanage<BR>
2.基本表的定义及变更<BR>
本身独立存在的表称为基本表,在SQL语言中一个关系唯一对应一个基本表。基本表的定义指建立基本关系模式,而变更则是指对数据库中已存在的基本表进行删除与修改。<BR>
(1)基本表的定义:基本表是非导出关系,其定义涉及表名、列名及数据类型等,其语句格式为:<BR>
CREATE
TABLE[<数据库名>.]<表名><BR>
(<列名> 数据类型 [缺省值] [NOT NULL
/ NULL]<BR> [,<列名>
数据类型 [缺省值] [NOT NULL /
NULL]]......<BR> [,UNIQUE
(列名[,列名]......)]<BR> [,PRIMARY
KEY(列名)]<BR> [,FOREIGN
KEY(列名[,列名]......)REFERENCE
<表名>(列名[,列名]......)]<BR>
[,CHECK(条件)] [其它参数])<BR>
其中,〈数据库名〉.]指出将新建立的表存放于该数据库中;<BR>
新建的表由两部分组成:其一为表和一组列名,其二是实际存放的数据(即可在定义表的同时,直接存放数据到表中);<BR>
列名为用户自定义的易于理解的名称,列名中不能使用空格;<BR>
数据类型为上面所介绍的几种标准数据类型;<BR> [NOT
NULL/NULL]指出该列是否允许存放空值,SQL语言支持空值的概念,所谓空值是“不知道”或“无意义”的值,值得注意的是数据“0”和空格都不是空值,系统一般默认允许为空值,所以当不允许为空值时,必须明确使用NOT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -