`
eminem
  • 浏览: 138804 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQL的资料

    博客分类:
  • SQL
阅读更多
1、select语句中使用top的一些小技巧

语句top,可以限制返回的记录数。
例如: select top 10 from table order by col

但是在使用的时候,有时候会遇到一些问题。
比如希望返回前三名的比分,但是第三名有并列的,使用select top 3 * from table order by col 的话就只能返回三条记录,在这样的情况下,就可以使用select top 3 with ties * from table order by col

还有,有的时候我不希望出现重复的记录,那么可以使用select distinct top 3 * from table order by col

使用TOP   n   [PERCENT]选项限制返回的数据行数,TOP   n说明返回n行,而TOP   n   PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
  例如:

      SELECT   TOP   2   *
  FROM   testtable
  SELECT   TOP   20   PERCENT   *
  FROM   testtable
上面的在DB2里不知道为什么没用?
select * from  PTY_PartyRole fetch first 5 rows only 我是这样的实现的(在DB2里可以,在MYsql里不可以)


2、rs.open sql,conn,1,1 的后两个 1,1 各代表什么?

RS.OPEN SQL,CONN,A,B

A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动
   ADOPENSTATIC(=3) 只读,当前数据记录可自由移动
   ADOPENKEYSET(=1) 可读写,当前数据记录可自由移动
   ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动,可看到新增记录

B: ADLOCKREADONLY(=1) 默认值,用来打开只读记录
   ADLOCKPESSIMISTIC(=2) 悲观锁定
   ADLOCKOPTIMISTIC(=3) 乐观锁定
   ADLOCKBATCHOPTIMISTIC(=4) 批次乐观锁定

//////引用资料

用SQL进行表单查询
        现把整理和积累的SQL常用语句公开给大家,以方便大家在日常工作中使用.同时也希望各位同僚,继续提出宝贵建议,作出补充.
显示数据表的结构:
desc 数据表名
查询所有记录:
select * from 数据表
查询所有记录的某些字段:
select 字段名1,字段名2 from 数据表
                    select name,age from 数据表
查询某些字段的不同记录:
select distinct job from 数据表                       
在显示时去除相同的记录
单条件查询:
select * from数据表 where sal <= 2500
                            select * from数据表 where job != ‘MANAGER’
select * from数据表 where job ^= ‘MANAGER’
select * from数据表 where job <> ‘MANAGER’
select * from 数据表 where sal ^= 1000

select * from 数据表 where sal in(2000,1000,3000)                       / not in
select * from 数据表 where job in(‘MANAGER’,’CLERK’)

select * from 数据表 where sal between 2000 and 3000                 / not between
select * from 数据表 where job between ‘MANAGER’ and ’CLERK’

select * from 数据表 where job like ‘M%’                                    / not like
select * from 数据表 where job like ‘M_’

like 和 not like 适合字符型字段的查询,%代表任意长度的字符串,_代表一个任意的字符。Like ‘m%’代表 m 开头的任意长度的字符串,like ‘m__’代表 m 开头的长度为3 的字符串

select * from 数据表 where sal is null                                           / not null
select * from 数据表 where job is null
组合条件的查询:
                     逻辑与组合查询结果
                     select * from 数据表 where job >= ’CLERK’ and sal <= 2000    
                     逻辑或组合查询结果
                     select * from 数据表 where job >= ’CLERK’ or sal <= 2000
                     逻辑非组合查询结果
                             not job = ‘CLERK’ 等价于 job <> ‘CLERK’
select * from 数据表 where not job = ‘CLERK      
排序查询:              
                     select * from 数据表 where job <= ‘CLERK’ order by job asc, sal desc
                     select * from 数据表 order by job asc, sal desc
order by 可以指定查询结果如何排序,形式为字段名排序关键词;asc 代表升序排列,desc 代表降序排列,多个排序字段之间通过逗号分割。若有 where 查询条件, order by 要放在 where 语句后面
分组查询: 
将查询结果按照字段分组
select empno, ename, job, sal from scott.emp group by job, empno, ename,sal having sall <= 2000     
select empne, ename, job, sal from scott.emp where sal <=2000 group by job, empno, ename, sal
注:group by 后的字段必须与前面select 后的字段相对应
where 检查每条记录是否符合条件,having 是检查分组后的各组是否满足条件。having 语句只能配合 group by 语句使用,没有 group by 时不能使用   having ,但可以使用 where
字段运算查询:
                             select empno , ename , sal , mgr , sal + mgr from 数据表
                             利用算术运算仅仅适合多个数值型字段或字段与数字之间的运算
变换查询显示:
                             select empno 编号, ename 姓名, job 工作, sal 薪水, from 数据表


用SQL进行多表查询

无条件多表查询:
                                 select emp.empno, emp.ename, emp.deptno, dept.dname, dept.loc
                                 from scott.emp, scott.dept
等值多表查询:
                                 select emp.empno, emp.ename, em.deptno, dept.dname, dept.loc
                                 from scott.emp, scott.dept
                                 where scott.emp.deptno = scott.dept.deptno
        等值多表查询将按照等值的条件查询多个数据表中关联的数据。要求关联的多个数据表的某些字段具有相同的属性,即具有相同的数据类型,宽度和取值范围。
非等值多表查询:
                                 select emp.empno, emp.ename, em.deptno, dept.dname, dept.loc
                                 from scott.emp, scott.dept
                                 where scott.emp.deptno != scott.dept.deptno and scott.emp.deptno = 10


用SQL进行嵌套查询

简单嵌套查询:
                              select emp.empno, emp.ename, emp.job, emp.sal
                              from scott.emp
                              where sal >= (select sal from scott.emp where ename = ‘WARD’)
        在这段代码中,子查询select sal from scott.emp where ename = ‘WARD’的含义是从emp数据表中查询姓名为WARD的员工的薪水,父查询的含义是要找出emp数据表中薪水大于等于WARD的薪水的员工。
带in 的嵌套查询:
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal in (select sal from scott.emp where ename = ‘WARD’)
                     查询薪水和WARD相等的员工,也可以使用 not in 来查询
带 any 的嵌套查询:
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal > any(select sal from scott.emp where job = ‘MANAGER’)           
                     等价于:select sal from scott.emp where job = ‘MANAGER’     
                     查询结果为:1000,2500
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal > 1000 or sal > 2500
带 some 的嵌套查询:
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal = some (select sal from scott.emp where job = ‘MANAGER’)
                     等价于:select sal from scott.emp where job = ‘MANAGER’     
                     查询结果为:1000,2500
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal = 1000 or sal = 2500
带 all 的嵌套查询:
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal > all (select sal from scott.emp where job = ‘MANAGER’)
                     等价于:select sal from scott.emp where job = ‘MANAGER’     
                     查询结果为:1000,2500
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal > 1000 and sal > 2500
带 exists 的嵌套查询:
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp, scott.dept
                     where exists (select * from scott.emp where scott.emp.deptno = scott.dept.deptno)
                     等价于:select sal from scott.emp where job = ‘MANAGER’     
                     查询结果为:1000,2500
                     select emp.empno, emp.ename, emp.job, emp.sal
                     from scott.emp
                     where sal = 1000 and sal = 2500
并操作的嵌套查询:
                     并操作就是集合中并集的概念。属于集合A 或集合B的元素总和就是并集。
                     (select deptno from scott.emp)
                     union
                     (select deptno from scott.dept)
交操作的嵌套查询:
                     交操作就是集合中交集的概念。属于集合A 且属于集合B的元素总和是并集。
                     (select deptno from scott.emp)
intersect
(select deptno from scottdept)
差操作的嵌套查询:
                     差操作就是差集的概念。属于集合A 且不属于集合B的元素总和是并集。
                     (select deptno from scott.emp)
minus
(select deptno from scottdept)


用SQL进行函数查询

ceil 函数:
                     select mgr,mgr/100,ceil(mgr/100) from scott.emp
                     ceil(n),取大于等于数值n的最小整数。
floor 函数:
                     select mgr, mgr/100,floor(mgr/100) from scott.emp
                     floor(n),取小于等于数值Nde 最大整数。
mod 函数:
                     select mgr, mod(mgr,1000), mod(mgr,100), mod(mgr,10) from scott.emp
                     mod(m,n),取m整除n后的余数。
power 函数:
                     select mgr,power(mgr,2),power(mgr,3) from scott.emp   
                     power(m,n),取m的n次方。
round 函数:
                     select mgr, round(mgr/100,2),round(mgr/1000,2) from scott.emp
                     round(m,n),四舍五入,保留n位。
sign函数:
                     select mgr,mgr-7800,sign(mgr-7800) from scott.emp
                     sign(n),n>0,取1;n=0,取0;n<0>取-1。
avg函数:
                     select avg(mgr) 平均薪水 from scott.emp
                     avg(字段名),求平均值。要求字段为数值型。
count函数:
                     select count(*) 记录总数 from scott.emp
                     count(字段名) 或 count(*),统计总数。
min 函数:
                     select min(sal) 最少薪水 from scott.emp
                     min(字段名),计算数值型字段最小数。
max函数:
                     select max(sal) 最高薪水 from scott.emp
                     max(字段名),计算数值型字段最大数。
sum 函数:
                  select sum(sal) 薪水总和 from scott.emp
                     sum(字段名),计算数值型字段总和。


用SQL录入数据

单行记录的录入:
                            Insert into 数据表(字段名1,字段名2)values(字段名1的值,字段名2的值)
注意:数值型字段,可以直接写值。字符型字段,要加单引号。日期型字段,要加上单引号。
多行记录的录入:
在数据的录入中,经常要将从数据表中查询到的数据稍做修改成批录入的情况,就是多行数据的录入。
Insert into 数据表 (字段名1,字段名2)(select (字段名1或运算,字段名2或运算) from 数据表 where 查询条件)
表间数据复制:
                            可以从一个数据表中选择需要的数据插入到全新的数据表中。
                     create table scott.test
                     as
                     (
                            select distinct empno,ename,hirdate
                            from scott.emp
                            where empno >= 7000
)


用SQL删除数据
删除记录:
                     delete from scott.test where empno >= 7500 and empno <= 8000
整表数据删除:
                     truncate table scott.test
truncate table 命令将快速删除数据表中的所有记录,但保留数据表的结构。这种快速删除与delete from数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate命令删除的数据是不可以恢复的。


用SQL更新数据
直接赋值更新:
                     update 数据表
                     set 字段名1 = 新的值,字段名2 = 新的值
                     where 条件
                     例:
                     update scott.emp
                     set empno = 8888,ename = ‘TOM’,hiredate = ’03-9 月-2002’
                     where empno = 7878

嵌套更新:
                     update 数据表
                     set 字段名1 = (select 字段列表 from 数据表 where 条件),字段名2 = (select 字段列表 from 数据表 where 条件)               ……
                     例:
                     update scott.emp
                     set sal =
                     (
                            select sal + 300 from scott.emp
                            where empno = 8888
)
                     where empno = 8888
分享到:
评论

相关推荐

    SQL 资料SQL 资料SQL 资料

    这个压缩包文件“SQL资料”很可能包含了关于SQL的各种学习资源,包括语法讲解、实战练习、数据库设计等方面的内容。在SQL的学习中,我们通常会涉及以下几个核心知识点: 1. **SQL基础**:这是所有SQL学习的起点,...

    sql资料

    SQL资料包含的两个文档,"SQL-Study.doc" 和 "Oracle SQL.doc",分别可能涵盖SQL的基础知识和Oracle数据库中的SQL使用。 首先,让我们深入了解一下SQL的基础知识。SQL主要用于查询、插入、更新和删除数据库中的数据...

    SQL资料大全.zip

    在这个“SQL资料大全.zip”压缩包中,很显然,包含了一系列关于SQL的资源,包括教程、案例和可能的源码,旨在帮助用户深入理解和熟练掌握SQL。 SQL的主要组成部分包括: 1. **数据查询语言(DQL)**:这是SQL中最...

    SQL资料.zip 下载

    文档"SQL资料.docx"可能包含了以下关键内容: 1. **SQL基础**: - 数据类型:了解如何定义列的数据类型,如INT、VARCHAR、DATE等。 - DDL(Data Definition Language):创建、修改和删除数据库结构,如CREATE ...

    SQL资料(sql语言)

    在SQL资料中,你可能会发现以下关键知识点: 1. **SQL基础**:SQL的基础包括数据类型(如整数、字符串、日期/时间)、创建数据库和表的语法、主键和外键的概念,以及如何使用INSERT语句插入数据。 2. **查询数据**...

    数据库SQL资料以及案例参考

    数据库SQL资料以及案例参考是学习和提升SQL技能的重要资源,涵盖了数据库的基础理论、SQL语言的语法、查询优化、事务处理等多个方面。以下是对这些知识点的详细解析: 1. **数据库基础**:数据库是存储和管理数据的...

    SQL资料案例大全.zip

    SQL Server数据库开发经典案例解析.pdf SQL基础学习.doc SQL必须掌握的基础知识.doc SQL数据库.xlsm SQL语言参考大全.chm 《SQL Server 2008技术内幕:T-SQL查询》.pdf 《SQL Server 2008技术内幕:T-SQL语言基础》....

    小白必备自学sql资料包免费限时领取啦

    这个"小白必备自学sql资料包"显然是一个面向初学者的资源集合,旨在帮助大家快速掌握SQL的基础知识和实际应用技巧。 在SQL的学习中,基础部分通常包括以下几个核心概念: 1. 数据类型:了解SQL中的基本数据类型,...

    SQL资料.txt-SQL

    SQL资料SQL资料SQL资料SQL资料SQL资料

    数据库SQL资料打包 课件

    数据库SQL资料打包包含了一系列关于数据库管理和SQL语言的学习资源,这些资源通常用于教学或自我提升目的。SQL(Structured Query Language)是用于管理关系数据库的标准编程语言,涵盖了数据查询、更新、插入和删除...

    SQL 资料 公司内部培训资料

    "SQL 资料 公司内部培训资料"这个标题表明这是一份专为公司员工准备的,旨在提升他们SQL技能的培训材料。这份资料可能包含了SQL的基本概念、常用语法以及在实际工作中的应用。 描述中提到"SQL 数据 库资料,公司...

    Oracle PL\SQL 资料

    在Oracle PL/SQL资料中,我们通常会涵盖以下几个核心知识点: 1. **PL/SQL基础知识**:PL/SQL是由SQL语句、声明部分、控制结构(如循环、条件判断)和异常处理组成的块结构。学习PL/SQL首先要理解其基本语法,包括...

    自己做的sql资料整理

    【标题】"自己做的SQL资料整理"是一份个人编撰的SQL学习资源集合,涵盖了从基础到进阶的多个学习阶段。这份资料可能是为了帮助初学者或者有一定基础的学习者巩固和提升SQL技能而精心编排的。 【描述】中的“有需要...

    SQL资料手册,语句教程,高级查询语句语法

    这份“SQL资料手册”包含了多个学习资源,旨在帮助用户深入理解和熟练掌握SQL的各种功能和高级查询技巧。 首先,"sql高级查询语句语法"这部分可能涵盖的内容包括但不限于子查询、联接(JOIN)、集合操作(UNION, ...

    oracle pl/sql资料

    这个"Oracle PL/SQL资料"包含了深入学习和掌握该语言的关键知识点,特别是"Oracle_PL-SQL Fundamentals"这一文件,很可能是基础教程或者讲义。 1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于处理...

    学习sql资料

    学习SQL资料的目的是为了让读者掌握基本的SQL语句及其用法,并了解在使用过程中需要注意的一些特点,同时通过实例加深理解数据库的基础概念。 首先,SQL语句的基本组成部分包括数据操纵语言(DML)、数据定义语言...

    asp、vb、js、sql资料

    【asp、vb、js、sql资料】这个压缩包包含了丰富的编程资源,主要涵盖了四个关键领域:Active Server Pages(ASP)、Visual Basic(VB)、JavaScript(JS)以及Structured Query Language(SQL)。这些技术是Web开发...

    黑马旅游数据库sql资料

    黑马旅游数据库sql资料

    VB+sql资料主要是连接数据库的

    "VB+sql资料主要是连接数据库的"这个标题暗示了我们要探讨的是如何使用VB来与SQL数据库进行交互,这一过程在开发数据库驱动的应用程序中至关重要。 在描述中提到,这些资料是为了帮助开发者节省在学习VB连接数据库...

Global site tag (gtag.js) - Google Analytics