oracle+plsql语句大全

oracle+plsql语句大全
oracle+plsql语句大全

plsql语句的编程手册SQL PLUS

一、SQL PLUS

1 引言

SQL命令

以下17个是作为语句开头的关键字:

alter drop revoke

audit grant rollback*

commit* insert select

comment lock update

create noaudit validate

delete rename

这些命令必须以“;”结尾

带*命令句尾不必加分号,并且不存入SQL缓存区。

SQL中没有的SQL*PLUS命令

这些命令不存入SQL缓存区

@ define pause

# del quit

$ describe remark

/ disconnect run

accept document save

append edit set

break exit show

btitle get spool

change help sqlplus

clear host start

column input timing

compute list ttitle

connect newpage undefine

copy

---------

2 数据库查询

数据字典

TAB 用户创建的所有基表、视图和同义词清单

DTAB 构成数据字典的所有表

COL 用户创建的基表的所有列定义的清单

CA TALOG 用户可存取的所有基表清单

select * from tab;

describe命令描述基表的结构信息describe dept

select *

from emp;

select empno,ename,job

from emp;

select * from dept

order by deptno desc;

逻辑运算符

= !=或<> > >= < <=

in

between value1 and value2

like

%

_

in null

not

no in,is not null

谓词in和not in

有哪些职员和分析员

select ename,job

from emp

where job in ('clerk','analyst');

select ename,job

from emp

where job not in ('clerk','analyst');

谓词between和not between

哪些雇员的工资在2000和3000之间select ename,job,sal from emp

where sal between 2000 and 3000;

select ename,job,sal from emp

where sal not between 2000 and 3000;

谓词like,not like

select ename,deptno from emp

where ename like 'S%';

(以字母S开头)

select ename,deptno from emp

where ename like '%K';

(以K结尾)

select ename,deptno from emp

where ename like 'W___';

(以W开头,后面仅有三个字母)

select ename,job from emp

where job not like 'sales%';

(哪些雇员的工种名不以sales开头)

谓词is null,is not null

没有奖金的雇员(即commision为null)select ename,job from emp

where comm is null;

select ename,job from emp

where comm is not null;

多条件查询

select ename,job

from emp

where deptno=20

and job!='clerk';

表达式

+ - * /

算术表达式

选择奖金高于其工资的5%的雇员

select ename,sal,comm,comm/sal from emp where comm>.05*sal

order by comm/sal desc;

日期型数据的运算

add two days to 6-Mar-87

6-Mar-87 + 2 = 8-Mar-87

add two hours to 6-Mar-87

6-Mar-87 + 2/24 = 6-Mar-87 and 2hrs

add 15 seconds to 6-Mar-87

6-Mar-87 + 15/(24*60*60) = 6-Mar-87 and 15 secs

列名的别名

select ename employee from emp

where deptno=10;

(别名:employee)

select ename,sal,comm,comm/sal "C/S RATIO" from emp

where comm>.05*sal

order by comm/sal desc;

SQL命令的编辑

list or l 显示缓冲区的内容

list 4 显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。change or c 用新的内容替换原来在一行中第一次出现内容

SQL>c/(...)/('analyst')/

input or i 增加一行或多行

append or a 在一行后追加内容

del 删除当前行删除SQL缓冲区中的当前行

run 显示并运行SQL缓冲区中的命令

/ 运行SQL缓冲区中的命令

edit 把SQL缓冲区中的命令写到操作系统下的文本文件,

并调用操作系统提供的编辑器执行修改。

-------------

3 数据操纵

数据的插入

insert into dept

values (10,'accounting','new york');

insert into dept (dname,deptno)

values ('accounting',10);

从其它表中选择插入数据

insert into emp (empno,ename,deptno)

select id,name,department

from old_emp

where department in(10,20,30,40);

使用参数

insert into dept

values(&eptno,&name,&loc);

执行时,SQL/PLUS对每个参数将有提示用户输入

参数对应日期型或字符型数据时,可在参数上加引号,输入时就可不用引号

insert into dept

values(&eptno,'&dname','&loc');

插入空值(NULL)

insert into dept

values(50,'education',null);

插入日期型数据

日期型数据缺省格式:DD-MON-YY

insert into emp

(empno,ename,hiredate)

values(7963,'stone','07-APR-87');

系统时间:SYSDA TE

insert into emp

(empno,ename,hiredate)

values(7600,'kohn',SYSDATE);

数据更新

update emp

set job='manager'

where ename='martin';

update emp

set job='market rep'

where ename='salesman';

update emp

set deptno=40,job='market rep'

where job='salesman';

数据删除

delete emp

where empno=765;

更新的提交

commit

自动提交方式

set autocommit on

如果状态设为开,则使用inesrt,update,delete会立即提交。

更新取消

rollback

两次连续成功的commit之间的操作,称为一个事务

---------------

4 创建基表、视图

创建基表

create table dept

(deptno number(2),

dname char(14),

loc char(13));

数据字典会自动更新。

一个基表最多254列。

表名列名命名规则:

限制

第一个字符必须是字母,后面可任意(包括$ # _ 但不能是逗号)。

名字不得超过30个字符。

唯一

某一用户的基表名必须唯一,不能是ORACLE的保留字,同一基表的列名互不相同。

使用双引号

如果表名用双引号括起来,则可不满足上述规则;

只有使用双引号,才能区别大、小写;

命名时使用了双引号,在以后的操作也必须使用双引号。

数据类型:

char(n) (不得超过240字符)

number(n,d)

date

long (最多65536字符)

raw (二进制原始数据)

空值处理

有时要求列值不能为空

create table dept

(deptno number(2) not null,

dname char(14),

loc char(13));

在基表中增加一列

alter table dept

add (headcnt number(3));

修改已有列属性

alter table dept

modify dname char(20);

注:只有当某列所有值都为空时,才能减小其列值宽度。只有当某列所有值都为空时,才能改变其列值类型。

只有当某列所有值都为不空时,才能定义该列为not null。例:

alter table dept modify (loc char(12));

alter table dept modify loc char(12);

alter table dept modify (dname char(13),loc char(12));

创建视图

create view managers as

select ename,job,sal

from emp

where job='manager';

为视图列名取别名

create view mydept

(person,title,salary)

as select ename,job,sal

from emp

where deptno=10;

with check option选项

使用with check option,保证当对视图插入或更新数据时,该数据必须满足视图定义中select命令所指定的条件。create view dept20 as

select ename,job,sal,deptno

from emp

where deptno=20

with check option;

在做下述操作时,会发生错误

update dept20

set deptno=30

where ename='ward';

基表、视图的拷贝

create table emp2

as select * from emp;

基表、视图的删除

drop table 表名

drop view 视图名

------------

5 SQL*PLUS报表功能

SQL*PLUS的一些基本格式命令

column deptno heading department

column ename heading name

column sal heading salary

column sal format $99,999.00

ttitle sample report for|hitech corp

btitle strictly confidential

break on deptno

compute sum of sal on deptno

run

表头和表尾

ttitle sample report for|hitech corp

btitle right strictly confidential

“|”表示换行,结尾不必加分号

选项有三种:left right center

使用TTITLE,系统将自动地在每页的顶部显示日期和页号。

TTITLET和BTITLE命令有效,直至重新设置表头或表尾,或退出SQL*PLUS。

下面命令使标题语句失效

TTITLE OFF

BTITLE OFF

列名

column命令定义用于显示列名

若名字为一个单词,不必加引号

column ename heading employee

column ename heading 'employee|name'

(|为换行)

取消栏定义

column ename clear

列的格式

column ename format A15

column sal format $9,999.99

column comm like sal

like子句,使得某一列的格式参照另一列格式,它拷贝列名及其格式

控制记录显示分组顺序

break on deptno

(不显示重复值)

select deptno,ename

from emp

order by deptno;

(ORDER BY子句用于控制BREAK)

显示为

10 clark

niller

20 smith

scott

30 allen

blake

每次只有一个BREAK命令起作用,但一次可以在多个列上使用BREAK命令break on 列名1 on 列名2

记录分组

break on deptno skip 2

select deptno,ename

from emp

order by deptno;

每个deptno之间空两行

clear break(取消BREAK命令)

break on page(每次从一新页开始)

break on report(每次从一新报表开始)

break on page on report(联合使用)

分组计算

break on deptno skip 2

compute sum of sal on deptno

计算每个部门的工资总和

skip子句使部门之间的信息分隔开

其他计算命令

compute avg of sal on deptno(平均值)

count 非空值的总数

MAX 最大值

MIN 最小值

STD 标准偏差

V AR 协方差

NUMBER 行数

使compute命令失效

一旦定义了COMPUTE,则一直有效,直到

关闭COMPUTE(clear compute)

SQL/PLUS环境命令

show 选项

(显示当前参数设置情况)

show all(显示全部参数)

设置参数

set 选项值或开关

set autocommit on

SET命令包括

set autocommit {off|on|immediate}

(自动提交,OFF缺省)

set echo {off|on}

(命令文件执行,是否在终端上显示命令本身,OFF缺省)

set feedback {off|on}

(ON:查询结束时,给出结果,记录数的信息,缺省;

OFF:无查询结果,记录数的信息)

set heading {off|on}

(ON:列的头标在报表上显示,缺省;OFF:不在报表上显示)

set linesize {n}

一行显示的最大字符数,缺省为80

set pagesize {n}

每页的行数,缺省是14

set pause {off|on|text}

(ON:当报表超过一页时,每显示一屏就暂停显示,等待用户打回车键,再接着显示;OFF:页与页不停顿,缺省;text:页与页停顿,并向用户提示信息)

SET BUFFER buffer

设置当头的命令缓冲区,通常情况下,SQL命令缓冲区已为当前缓冲区。

由于SQL命令缓冲区只能存放一条SQL命令,

所以可用其它缓冲区来存放SQL命令和SQL*PLUS命令。

经常用到的设置可放在login.sql文件中。

SET NULL

set null 'no data'

select ename,comm

from emp

where deptno=30;

把部门30中无佣金雇员的佣金显示为“NO DATA”。

set null是SQL*PLUS命令,用它来标识空值(NULL),可以设置为任意字符串。

存盘命令SA VE

save 文件名

input

1 select empno,ename,job

2 from emp

3 where job='analyst'

save research

目录中会增加一个research.sql文件。

编辑命令EDIT

edit

EDIT编辑当前缓冲区中的内容。

编辑一个文件

edit research

调入命令GET

get research

把磁盘上的文件内容调入缓冲区,并显示在屏幕上,文件名尾不必加.sql。

START命令

运行指定的文件

start research

输出命令SPOOL

spool tryfile

不仅可以使查询结果在屏幕上显示,还可以使结果存入文件

停止向文件输出

spool off

把查询结果在打印机上输出,先把它们存入一个文件中,

然后不必使用SPOOL OFF,而用:

spool out

SPOOL OUT关闭该文件并在系统缺省的打印机上输出

制作报表举例

edit tryfile

set echo off

set autocommit on

set pagesize 25

insert into emp (empno,ename,hiredate)

values(9999,'geiger',sysdate);

insert into emp (empno,ename,deptno)

values(3333,'samson',20);

spool new_emp

select * from emp

where deptno=20

or deptno is null

/

spool off

set autocommit off

用start命令执行这个文件

--------

字符型函数

initcap(ename);将ename中每个词的第一个字母改为大写。

如:jack smith--Jack Smith

length(ename);计算字符串的长度。

substr(job,1,4);

其它

lower

upper

least 取出字符串列表中按字母排序排在最前面的一个串

greatest 取出字符串列表中按字母排序排在最后的一个串

日期函数

add_month(hiredate,5) 在雇佣时间上加5个月

month_between(sysdate,hiredate) 计算雇佣时间与系统时间之间相差的月数next_day(hiredate,'FRIDAY') 计算受雇日期之后的第一个星期五的日期

select ename,sal,next_day(sysdate,'FRIDAY') as_of

from emp

where deptno=20;

(as_of是别名)

如果不用to_char函数,日期在ORACLE中的缺省格式是'DD_MON_YY' to_char(date,date picture)

select ename,to_char(hiredate,'Dy Mon dd,yyyy') hired

from emp

where deptno=10;

to_date(字符串,格式)

insert into emp(empno,ename,hiredate)

values(7999,'asms',to_date('070387083000','MMDDYYHHMISS'));

日期型数据的格式

dd 12

dy fri

ddspth twelfth

mm 03

mon mar

month march

yy 87

yyyy 1987

Mar 12,1987 'Mon dd,yyyy'

MAR 12,1987 'MON dd,yyyy'

Thursday MARCH 12 'Day MONTH dd'

Mar 12 11:00am 'Mon dd hh:miam'

Thu,the twelfth 'Dy,"the"ddspth'

算术函数

least(v1,v2)

select ename,empno,mgr,least(empno,mgr) lownum from emp

where empno0

trunc(sal,0)

取sal的近似值(截断)

空值函数

nvl(v1,v2)

v1为列名,如果v1不是空值,nvl返回其列值。v1为空值,返回v2的值。

聚组函数

select sum(comm)

from emp;

(返回一个汇总信息)

不能把sum用在select语句里除非用group by

字符型、日期型、数字型的聚组函数

min max count可用于任何数据类型

select min(ename)

from emp;

select min(hiredate)

from emp;

select min(sal)

from emp;

有多少人有工作?

select count(job)

from emp;

有多少种不同的工种?

select count(distinct job)

from emp;

count distinct 计算某一字段中不同的值的个数

其它聚组函数(只用于数字型数据)

avg 计算平均工资

select avg(sal)

from emp;

stddev 计算工资的平均差

select stddev(sal)

from emp;

sum 计算总工资

select sum(sal)

from emp;

group by子句

select deptno,sum(sal),avg(sal)

from emp

group by deptno;

按多个条件分组

每个部门的雇员数

select deptno,count(*)

from emp

group by deptno;

每个部门的每个工种的雇员数

select deptno,job,count(*)

from emp

group by deptno,job;

满足条件的分组

(where是针对select的,having是针对group by的)

哪些部门的工资总和超过了9000

select deptno,sum(sal)

from emp

group by deptno

having sum(sal)>9000;

select小结

除去职员,哪些部门的工资总和超过了8000

select deptno,sum(sal)

from emp

where job!='clerk'

group by deptno

having sum(sal)>8000

order by sum(sal);

---------

7 高级查询

等值联接

select empno,ename,job,emp.deptno,dname

from emp,dept

where emp.deptno=dept.deptno;

外联接

select ename,dept.deptno,loc

from emp,dept

where emp.deptno(+)=dept.deptno;

如果在dept.deptno中有的数值,在emp.deptno中没有(如deptno=40),则作外联接时,结果中会产生一个空值

自联接:同一基表的不同行要做联接,可使用自联接

指出每个雇员的经理名字

select worker.ename,manager.ename manager

from emp worker,emp manager

where worker.mgr=manager.empno;

非等值联接

哪些雇员的工资属于第三级别

select ename,sal

from emp,salgrade

where grade=3

and sal between losal and hisal;

(基表salgrade:grade losal hisal)

集合运算

行的连接

集合运算把2个或多个查询结果合并为一个

union-set union

Rows of first query plus of second query, less duplicate rows

intersect-set intersection

Rows both queries have in common

minus-set difference

rows unique to the first query

介绍几个视图

account view

ename sal job

sales view

ename sal job

research view

ename sal job

union运算

返回一个查询结果中有但又不重要的行,它将基表或视图中的记录合并在一起所有部门中有哪些雇员工资超过2000

对应列的数据类型必须相同

select ename,sal

from account

where sal>2000

union

select ename,sal

from research

where sal>2000

union

select ename,sal

from sales

where sal>2000;

intersect运算

返回查询结果中相同的部分

各个部门中有哪些相同的工种

select job

from account

intersect

select job

from research

intersect

select job

from sales;

minus运算

返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。有哪些工种在财会部中有,而在销售部中没有?

select job from account

minus

select job from sales;

子查询

slect ename,deptno

from emp

where deptno=

(select deptno

from emp

where ename='smith');

多级子查询

select ename,job,sal

from emp

where job=

(select job

from emp

where ename='clark')

or sal>

(select sal

from emp

where ename='clark');

多个基表与子查询

select ename,job,sal

from emp,dept

where loc='new york'

and emp.deptno=dept.deptno

and sal>

(select sal

from emp

where ename='scott');

子查询中使用聚组函数

select ename,hiredate

from emp

where hiredate=

(select min(hiredate)

from emp);

8 授权

系统权限

DBA 所有权限

RESOURCE 注册,创建新的基表CONNECT,注册,查询

只有DBA才有权创建新的用户

grant connect to scott

identified by tiger;

DBA或用户自己可以改变用户口令

grant connect to scott

identified by leopard;

基表权限1

有两种方法获得对基表操作的权限

创建自己的基表

获得基表创建用户的许可

grant select,insert

on emp

to scott;

这些权限有

select insert update delete alter index

把所有权限授于他人

grant all on emp to scott;

同义词

select *

from scott.emp

创建同义词

为用户allen的EMP基表创建同义词employee create synonym employee

for allen.emp

基表权限2

你可以使其他用户有这样的权力,即其他用户可以把你的基表权限授予他人grant all

on emp

to scott

with grant option;

收回权限

系统权限只有被DBA收回

基表权限随时都可以收回

revoke insert

on emp

from scott;

---------

9 索引

建立索引

create index emp_ename

on emp(ename);

删除索引

drop index emp_ename;

关于索引

只对较大的基表建立索引(至少50条记录)

建立索引之前插入数据

对一个基表可建立任意多个索引

一般是在作为主键的列上建立索引

建立索引之后,不影响SQL命令的执行

建立索引之后,ORACLE自动维护和使用索引

保证数据唯一性

提高执行速度的同时,索引还可以保证每个记录中的每个列值是不重复的。create unique index emp_empno

on emp(empno);

--------

练习和答案

有没有工资比奖金多的雇员?如果有,按工资的降序排列。

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加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、使用外连接

SQL中的case-when,if-else实例

create database EXAM go create table student (stuName varchar(10)not null, stuNO int primary key not null, stuSex char(2)check(stuSex='男'or stuSex='女'), stuAge int, stuSeat int, stuAddress varchar(40) ) GO insert into student values('张秋丽','25301','女','21','1','北京海淀'), ('李文才','25302','男','25','2','天津'), ('张三','25303','男','22','3','北京海淀'), ('红尘','25304','女','21','4','湖南长沙'), ('段林希','25305','女','20','5','江西赣州'), ('魏晨','25306','男','23','6','河北石家庄'), ('郑爽','25307','女','20','7',''), ('张杰','25308','男','21','8',''), ('王洁','25309','女','23','9','湖南怀化'), ('刘欣','253010','女','21','10','北京') create table exam (ExamNO int primary key, stuNO int not null, WrittenExam int, LabExam int ) GO insert into exam values(01,250301,86,89), (02,250302,67,78), (03,250303,76,80), (04,250304,79,56), (05,250305,56,63), (06,250306,67,60), (07,250307,90,83), (08,250308,80,79), (09,250309,92,90), (10,250310,55,58)

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 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 definitio n 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 运算符

SQL查询语句大全集锦

SQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname 字段和email字段。 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺 序相同。

代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n 行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是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、说明: 删除新表: 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 注:索引是不可更改的,想更改必须删除重新建。

项目开发中常用到的SQL语句

项目开发中常用到的SQL语句1、循环示例 循环示例代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 DECLARE @i int DECLARE @name varchar(10) DECLARE @password varchar(10) Set @i = 1000 WHILE @i < 1200 BEGIN Set @i =@i +1 SET @name = RIGHT('0000' + CAST(@i AS varchar(10)),4) set @password = @name select @name insert into dbo.LocomotiveTeminalBase (li_ID,t_ID,lt_IDNumber,lt_MiM,lt_FuWQIP,lt_FuWQDKH,lt_CreatedBy) values('d82575c0-2d21-4c47-a406-7771d7d2c80a','fb5d9a7b-9cd6-4a55-9e90-881706eaf @name,@password,'192.168.1.187','2000','9015c234-e185-4e15-96c6-f53426dd6690') END 2、数据库缓存依赖中用到的SQL语句代码示例: ? 1 2 3 4 5 6 7 8 --查看状态 Select DATABASEpRoPERTYEX('soft_LocomotiveRM_DB','IsBrokerEnabled') --启用broker ALTER DATABASE soft_LocomotiveRM_DB SET NEW_BROKER WITH ROLLBACK IMMEDIATE ALTER DATABASE soft_LocomotiveRM_DB SET ENABLE_BROKER --添加用户

sql查询语句大全

SQL查询语句大全 《SQL语句的基本语法》 一.Select语句的完整语法为: Select[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [Where…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明: 用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。 1 FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或 由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。 例:下列SQL语句返回所有有定单的客户: Select orderID,Customer.customerID FROM orders Customers Where orders.CustomerID=Customers.CustomeersID 2 ALL、DISTINCT、DISTINCTROW、TOP谓词 (1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:Select ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 (3) DISTINCTROW 如果有重复的记录,只返回一个 (4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定货额最大的定单 Select TOP 5 PERCENT* FROM [ order Details] orDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。 例:返回FirstName字段取别名为NickName Select FirstName AS NickName ,LastName ,City

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.360docs.net/doc/ed13725056.html,O=https://www.360docs.net/doc/ed13725056.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

Oracle-SQL简单查询语句处理

Oracle-SQL简单查询语句处理笔记一 数据处理及进展–数据:是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据处理:是指对各种形式的数据进行收集、储存、加工和传播的一系列活动的综合。 其目的是从大量的、原始的数据中抽取、推导出对人们有价值的信息。 数据处理的3个阶段: ?人工管理阶段 ?文件系统阶段 ?数据库系统阶段 关系型数据库 ?数据模型–是数据库系统中,用于抽象、表示、处理现实世界中数据的一种形式架构。 ?数据模型三层次 概念模型:是现实世界到信息世界的第一层抽象,常用E-R 图表示。逻辑模型:是用户从数据库所看到的模型,是具体的DBMS 所支持的数据模型,常用的包括层次模型、网状模型、关系模型。

物理模型:是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且 V1.0 还与操作系统和硬件有关 关系型数据库 ?关系模型 关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成的。 关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。 在用户看来,关系就是一张由行和列组成的二维数据表。 关系操作:包括:选择、投影、连接、增加、删除、修改等。 关系完整性约束:包括实体完整性、参照完整性和用户定义的完整性。 算术运算符? 算术运算符优先级 乘除优先于加减 相同优先权的表达式按照从左至右的顺序依次计算 括弧可以提高优先权,并使表达式的描述更为清晰 空值NULL

?空值NULL –空值是指一种无效的、未赋值、未知的或不可用的值。 空值不同于零或者空格。 列别名 好处:方便查看 用来重新命名列的显示标题,如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。 ?使用列别名的方法 方式1:列名列别名 方式2:列名 AS 列别名 ?以下三种情况列别名两侧需要添加双引号 列别名中包含有空格 列别名中要求区分大小写 列别名中包含有特殊字符 连接操作符使用 || 去连接,相当于java中的 + 号呢。 消除重复行使用DISTINCT 关键字 习题整理一:简单的查询语句(查询oracle已经创建的表格,使用用户scott普通用户登陆) 说明:

DB2常用SQL语句集

DB2常用SQL语句集 1、查看表结构: describe table tablename describe select * from tablename 2、列出系统数据库目录的内容: list database directory 3、查看数据库配置文件的内容: get database configuration for DBNAME 4、启动数据库: restart database DBNAME 5、关闭表的日志 alter table TBLNAME active not logged inially 6、重命名表 rename TBLNAME1 to TBLNAME2 7、取当前时间 select current time stamp from sysibm.sysdummy1 8、创建别名 create alias ALIASNAME for PRONAME(table、view、alias、nickname) 9、查询前几条记录 select * from TBLNAME fetch first N rows 10、联接数据库 db2 connect to DB user db2 using PWD 11、绑定存储过程命令 db2 bind BND.bnd 12、整理优化表 db2 reorgchk on table TBLNAME db2 reorg table TBLNAME db2 runstats on table TBNAME with distribution and indexes all 13、导出表 db2 export to TBL.txt of del select * from TBLNAME db2 export to TBL.ixf of ixf select * from TBLNAME 以指定分隔符‘|’下载数据: db2 "export to cmmcode.txt of del modified by coldel| select * from cmmcode”14、导入表 db2 import from TBL.txt of del insert into TBLNAME db2 import from TBL.txt of del commitcount 5000 insert into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 insert into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 insert_update into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 replace into TBLNAME db2 import from TBL.ixf of ixf commitcount 5000 create into TBLNAME (仅IXF) db2 import from TBL.ixf of ixf commitcount 5000 replace_create into TBLNAME (仅 IXF) 以指定分隔符“|”加载:

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_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

sql循环语句的写法

sql循环语句的写法 SQL循环语句 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end --------------- while 条件 begin 执行操作 set @i=@i+1 end WHILE 设置重复执行SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用BREAK 和CONTINUE 关键字在循环内部控制WHILE 循环中语句的执行。语法WHILE Boolean_expression { sql_statement | statement_block } [ BREAK ] { sql_statement | statement_block } [ CONTINUE ] 参数

Boolean_expression 返回TRUE 或FALSE 的表达式。如果布尔表达式中含有SELECT 语句,必须用圆括号将SELECT 语句括起来。{sql_statement | statement_block} Transact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字BEGIN 和END。BREAK 导致从最内层的WHILE 循环中退出。将执行出现在END 关键字后面的任何语句,END 关键字为循环结束标记。CONTINUE 使WHILE 循环重新开始执行,忽略CONTINUE 关键字后的任何语句。注释 如果嵌套了两个或多个WHILE 循环,内层的BREAK 将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。示例 A. 在嵌套的IF...ELSE 和WHILE 中使用BREAK 和CONTINUE 在下例中,如果平均价格少于$30,WHILE 循环就将价格加倍,然后选择最高价。如果最高价少于或等于$50,WHILE 循环重新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过$50,然后退出WHILE 循环并打印一条消息。USE pubs GO WHILE (SELECT A VG(price) FROM titles) < $30 BEGIN

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/ed13725056.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

实验10 T-SQL语言编程基础

实验十 T-SQL语言编程基础 姓名:学号: 专业:网络工程班级: 同组人:无实验日期:2012-4-19【实验目的与要求】 1.熟练掌握变量的定义和赋值。 2.熟练掌握各种运算符。 3.熟练掌握流程控制语句,尤其是条件语句和循环语句。【实验内容与步骤】 10.1. 变量的定义与输出 1.变量的定义和赋值 1) 局部变量的声明: DECLARE @variable_name DataType 例如: declare @stuname varchar(20)--声明一个存放学员姓名的变量stuname. declare @stuseat int--声明一个存放学员座位号的变量stuseat 2) 局部变量的赋值: 局部变量的赋值有两种方法: a) 使用Set语句 Set @variable_name=value b) 使用Select语句 Select @variable_name=value 实验: 运行以下程序段,理解变量的使用。

--局部变量的赋值与使用 declare @customer_name varchar(20)--声明变量用来存放客户名称 set @ customer_name ='家电市场'--使用SET语句给变量赋值 select* from xss where客户名称=@customer_name --通过局部变理向sql语句传递数据 请给出运行结果: 练习: 创建一名为 Product_name的局部变量,并在SELECT语句中使用该变量查找“冰箱”的”价格”和”库存量”。 给出相应的语句 declare @Product_name varchar(20) set @Product_name ='冰箱' select价格,库存量 from CP where产品名称= @Product_name 请给出运行测试结果:

相关文档
最新文档