文档库 最新最全的文档下载
当前位置:文档库 › Oracle常用sql语句整理

Oracle常用sql语句整理

Oracle常用sql语句整理
Oracle常用sql语句整理

Oracle常用sql语句

说明:收集自互联网,仅供学习交流使用!

ORACLE 常用的SQL语法和数据对象

一.数据控制语句(DML) 部分

1.INSERT (往数据表里插入记录的语句)

INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;

字符串类型的字段值必须用单引号括起来, 例如: ‘GOOD DAY‘

如果字段值里包含单引号‘需要进行字符串转换, 我们把它替换成两个单引号??.

字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.

日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒

或者用字符串转换成日期型函数TO_DATE(?2001-08-01‘,‘YYYY-MM-DD‘)

TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.

年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS

INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,

方法借用ORACLE里自带的DBMS_LOB程序包.

INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WITH 1

MAXVALUE 99999 CYCLE NOCACHE;

其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

2.DELETE (删除数据表里记录的语句)

DELETE FROM表名WHERE 条件;

注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.

如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间

TRUNCATE TABLE 表名;

此操作不可回退.

3.UPDATE (修改数据表里记录的语句)

UPDATE表名SET 字段名1=值1, 字段名2=值2, …… WHERE 条件;

如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;

值N超过定义的长度会出错, 最好在插入前进行长度校验..

注意事项:

A. 以上SQL语句对表都加上了行级锁,

确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,

否则改变不一定写入数据库里.

如果想撤回这些操作, 可以用命令ROLLBACK 复原.

B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,

应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.

程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,

其间加上COMMIT 确认事物处理.

二.数据定义(DDL) 部分

1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)

ORACLE常用的字段类型有

CHAR 固定长度的字符串

VARCHAR2 可变长度的字符串

NUMBER(M,N) 数字型M是位数总长度, N是小数的长度

DATE 日期类型

创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面

创建表时可以用中文的字段名, 但最好还是用英文的字段名

创建表时可以给字段加上默认值, 例如DEFAULT SYSDATE

这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间

创建表时可以给字段加上约束条件

例如不允许重复UNIQUE, 关键字PRIMARY KEY

2.ALTER (改变表, 索引, 视图等)

改变表的名称

ALTER TABLE 表名1 TO 表名2;

在表的后面增加一个字段

ALTER TABLE表名ADD字段名字段名描述;

修改表里字段的定义描述

ALTER TABLE表名MODIFY字段名字段名描述;

给表里的字段加上约束条件

ALTER TABLE 表名ADD CONSTRAINT 约束名PRIMARY KEY (字段名); ALTER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);

把表放在或取出数据库的内存区

ALTER TABLE 表名CACHE;

ALTER TABLE 表名NOCACHE;

3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)

删除表和它所有的约束条件

DROP TABLE 表名CASCADE CONSTRAINTS;

4.TRUNCATE (清空表里的所有记录, 保留表的结构)

TRUNCATE 表名;

三.查询语句(SELECT) 部分

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;

字段名可以带入函数

例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,?YYYY-MM-DD HH24:MI:SS?)

NVL(EXPR1, EXPR2)函数

解释:

IF EXPR1=NULL

RETURN EXPR2

ELSE

RETURN EXPR1

DECODE(AA﹐V1﹐R1﹐V2﹐R2….)函数

解释:

IF AA=V1 THEN RETURN R1

IF AA=V2 THEN RETURN R2

..…

ELSE

RETURN NULL

LPAD(char1,n,char2)函数

解释:

字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位

字段名之间可以进行算术运算

例如: (字段名1*字段名1)/3

查询语句可以嵌套

例如: SELECT …… FROM

(SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

两个查询语句的结果可以做集合操作

例如: 并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS, 交集INTERSECT

分组查询

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1

[HAVING 条件] ;

两个以上表之间的连接查询

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE

表名1.字段名= 表名2. 字段名[ AND ……] ;

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE

表名1.字段名= 表名2. 字段名(+) [ AND ……] ;

有(+)号的字段位置自动补空值

查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESC

SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]

ORDER BY字段名1, 字段名2 DESC;

字符串模糊比较的方法

INSTR(字段名, ?字符串‘)>0

字段名LIKE ?字符串%‘ [?%字符串%‘]

每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.

四.ORACLE里常用的数据对象(SCHEMA)

1.索引(INDEX)

CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );

ALTER INDEX 索引名REBUILD;

一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL 语句的分析执行情况,

也可以建立多字段的组合索引和基于函数的索引

ORACLE8.1.7字符串可以索引的最大长度为1578 单字节

ORACLE8.0.6字符串可以索引的最大长度为758 单字节

2.视图(VIEW)

CREATE VIEW 视图名AS SELECT …. FROM …..;

ALTER VIEW视图名COMPILE;

视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.

3.同义词(SYNONMY)

CREATE SYNONYM同义词名FOR 表名;

CREATE SYNONYM同义词名FOR [email protected];

4.数据库链接(DATABASE LINK)

CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ?数据库连接字符串‘;

数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA 里定义.

数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

数据库全局名称可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

查询远端数据库里的表

SELECT …… FROM [email protected];

五.权限管理(DCL) 语句

1.GRANT 赋于权限

常用的系统权限集合有以下三个:

CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)

常用的数据对象权限有以下五个:

ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名

GRANT CONNECT, RESOURCE TO 用户名;

GRANT SELECT ON 表名TO 用户名;

GRANT SELECT, INSERT, DELETE ON表名TO 用户名1, 用户名2;

2.REVOKE 回收权限

REVOKE CONNECT, RESOURCE FROM 用户名;

REVOKE SELECT ON 表名FROM 用户名;

REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;

查询数据库中第63号错误:

select orgaddr,destaddr from sm_histable0116 where error_code=?63?;

查询数据库中开户用户最大提交和最大下发数:select MSISDN,TCOS,OCOS from ms_usertable;

查询数据库中各种错误代码的总和:

select error_code,count(*) from sm_histable0513 group by error_code order

by error_code;

查询报表数据库中话单统计种类查询。

select sum(Successcount) from tbl_MiddleMt0411 where ServiceType2=111 select sum(successcount),servicetype from tbl_middlemt0411 group by servicetype

oracle常用SQL语句

1、连接SQL*Plus system/manager

2、显示当前连接用户SQL> 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

6、查询当前用户下所有对象SQL> select * from tab;

7、建立第一个表SQL> create table a(a number);

8、查询表结构SQL> desc a

9、插入新记录SQL> insert into a values(1);

10、查询记录SQL> select * from a;

11、更改记录SQL> update a set a=2;

12、删除记录SQL> delete from a;

13、回滚SQL> roll;SQL> rollback;

14、提交SQL> commit;

——————————————————————————————————————————-

用户授权:GRANT ALTER ANY INDEX TO ―user_id ―GRANT ―dba ‖ TO ―user_id ―;ALTER USER ―user_id ‖ DEFAULT ROLE ALL创建用户:CREATE USER

―user_id ‖ PROFILE ―DEFAULT ‖ IDENTIFIED BY ‖ DEFAULT TABLESPACE

―USERS ‖ TEMPORARY TABLESPACE ―TEMP ‖ ACCOUNT UNLOCK;GRANT ―CONNECT ‖ TO ―user_id ―;用户密码设定:ALTER USER ―CMSDB ‖ IDENTIFIED BY ―pass_word ―表空间创建:CREATE TABLESPACE ―table_space ‖ LOGGING DATAFILE ?C:/ORACLE/ORADATA/dbs/table_space.ora? SIZE 5M ————————————————————————

1、查看当前所有对象

SQL > select * from tab;

2、建一个和a表结构一样的空表

SQL > create table b as select * from a where 1=2;

SQL > create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;

3、察看数据库的大小,和空间使用情况

SQL > col tablespace format a20SQL > select b.file_id文件ID,

b.tablespace_name表空间, b.file_name物理文件名,

b.bytes总字节数,(b.bytes-sum(nvl(a.bytes,0)))已使用,

sum(nvl(a.bytes,0))剩余,sum(nvl(a.bytes,0))/(b.bytes)*100剩余百分比from dba_free_space a,dba_data_files b where

a.file_id=

b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name/dba_free_space –表空间剩余空间状况

dba_data_files –数据文件空间占用情况4、查看现有回滚段及其状态

SQL > col segment format a30SQL > SELECT

SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STA TUS FROM DBA_ROLLBACK_SEGS;

5、查看数据文件放置的路径

SQL > col file_name format a50SQL > select

tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

6、显示当前连接用户

SQL > show user

7、把SQL*Plus当计算器

SQL > select 100*20 from dual;

8、连接字符串

SQL > select 列1 | |列2 from 表1;SQL > select concat(列1,列2) from 表1;

9、查询当前日期

SQL > select to_char(sysdate,?yyyy-mm-dd,hh24:mi:ss?) from dual;

10、用户间复制数据

SQL > copy from user1 to user2 create table2 using select * from table1;

11、视图中不能使用order by,但可用group by代替来达到排序目的

SQL > create view a as select b1,b2 from b group by b1,b2;

12、通过授权的方式来创建用户

SQL > grant connect,resource to test identified by test;

SQL > conn test/test

13、查出当前用户所有表名。

select unique tname from col; ———————————————————————–

/* 向一个表格添加字段*/alter table alist_table add address varchar2(100);

/* 修改字段属性字段为空*/alter table alist_table modify address varchar2(80);

/* 修改字段名字*/create table alist_table_copy as select

ID,NAME,PHONE,EMAIL,QQ as QQ2, /*qq 改为qq2*/ADDRESS from alist_table; drop table alist_table;rename alist_table_copy to alist_table/* 修改表名*/

空值处理有时要求列值不能为空create table dept (deptno number(2) not null, dname char(14), loc char(13));

在基表中增加一列alter table deptadd (headcnt number(3));

修改已有列属性alter table deptmodify 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));

查找未断连接select process,osuser,username,machine,logon_time ,sql_textfrom

v$session a,v$sqltext b where a.sql_address=b.address; —————————————————————–1.以USER_开始的数据字典视图包含当前用户所拥有的信息, 查询当前用户所拥有的表信息:select * from

user_tables;2.以ALL_开始的数据字典视图包含ORACLE用户所拥有的信息,查询用户拥有或有权访问的所有表信息:select * from all_tables;

3.以DBA_开始的视图一般只有ORACLE数据库管理员可以访问:select * from dba_tables;

4.查询ORACLE用户:conn sys/change_on_installselect * from dba_users;conn system/manager;select * from all_users;

5.创建数据库用户:CREATE USER user_name IDENTIFIED BY

password;GRANT CONNECT TO user_name;GRANT RESOURCE TO

user_name;授权的格式: grant (权限) on tablename to username;删除用户(或表):drop user(table) username(tablename) (cascade);6.向建好的用户导入数据表IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER =

USER_NAME FILE = C:/EXPDAT.DMP COMMIT = Y7.索引create index [index_name] on [table_name]( ―column_name ―)intersect运算

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

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

selectjob

fromaccount

intersect

selectjob

fromresearch

intersect

selectjob

fromsales;

minus运算

返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。

有哪些工种在财会部中有,而在销售部中没有?

exp:selectjobfromaccount

minus

selectjobfromsales;

1. oracle安装完成后的初始口令?

internal/oracle

sys/change_on_install

system/manager

scott/tiger

sysman/oem_temp

2. oracle9ias web cache的初始默认用户和密码?

administrator/administrator

3. oracle 8.0.5怎么创建数据库?

用orainst。假如有motif界面,可以用orainst /m

4. oracle 8.1.7怎么创建数据库?

dbassist

5. oracle 9i 怎么创建数据库?

dbca

6. oracle中的裸设备指的是什么?

裸设备就是绕过文件系统直接访问的储存空间

7. oracle如何区分64-bit/32bit 版本???

$ sqlplus ?/ as sysdba?

sql*plus: release 9.0.1.0.0 – production on mon jul 14 17:01:09 2003 (c) copyright 2001 oracle corporation. all rights reserved. connected to:

oracle9i enterprise edition release 9.0.1.0.0 – production

with the partitioning option

jserver release 9.0.1.0.0 – production

sql> select * from v$version;

banner

—————————————————————-

oracle9i enterprise edition release 9.0.1.0.0 – production

pl/sql release 9.0.1.0.0 – production

core 9.0.1.0.0 production

tns for solaris: version 9.0.1.0.0 – production

nlsrtl version 9.0.1.0.0 – production

sql>

8. svrmgr什么意思?

svrmgrl,server manager.

9i下没有,已经改为用sqlplus了

sqlplus /nolog

变为归档日志型的

9. 请问如何分辨某个用户是从哪台机器登陆oracle的?

select machine , terminal from v$session;

10. 用什么语句查询字段呢?

desc table_name 可以查询表的结构

select field_name,… from … 可以查询字段的值

select * from all_tables where table_name like ?%?

select * from all_tab_columns where table_name=????

11. 怎样得到触发器、过程、函数的创建脚本?

desc user_source

user_triggers

12. 怎样计算一个表占用的空间的大小?

select owner,table_name,

num_rows,

blocks*aaa/1024/1024 ―size m‖,

empty_blocks,

last_analyzed

from dba_tables

where table_name=?xxx?;

here: aaa is the value of db_block_size ;

xxx is the table name you want to check

13. 如何查看最大会话数?

select * from v$parameter where name like ?proc%?; sql>

sql> show parameter processes

name type value

——————————————- ——————————aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 4

log_archive_max_processes integer 1

processes integer 200

这里为200个用户。

select * from v$license;

其中sessions_highwater纪录曾经到达的最大会话数

14. 如何查看系统被锁的事务时间?

select * from v$locked_object ;

15. 如何以archivelog的方式运行oracle。

init.ora

log_archive_start = true

restart database

16. 怎么获取有哪些用户在使用数据库

select username from v$session;

17. 数据表中的字段最大数是多少?

表或视图中的最大列数为1000

18. 怎样查得数据库的sid ?

select name from v$database;

也可以直接查看init.ora文件

19. 如何在oracle服务器上通过sqlplus查看本机ip地址?

select sys_context(?userenv?,?ip_address?) from dual;

假如是登陆本机数据库,只能返回127.0.0.1,呵呵

20. unix 下怎么调整数据库的时间?

su -root

date -u 08010000

21. 在oracle table中如何抓取memo类型字段为空的数据记录?

select remark from oms_flowrec where trim(? ? from remark) is not null ;

22. 如何用bbb表的数据去更新aaa表的数据(有关联的字段)

up2003-10-17 aaa set bns_snm=(select bns_snm from bbb where

aaa.dpt_no=bbb.dpt_no) where bbb.dpt_no is not null;

23. p4计算机安装方法

将symcjit.dll改为sysmcjit.old

24. 何查询server是不是ops?

select * from v$option;

假如parallel server=true则有ops能

25. 何查询每个用户的权限?

select * from dba_sys_privs;

26. 如何将表移动表空间?

alter table table_name move tablespace_name;

27. 如何将索引移动表空间?

alter index index_name rebuild tablespace tablespace_name;

28. 在Linux,unix下如何启动dba studio?

oemapp dbastudio

29. 查询锁的状况的对象有?

v$lock, v$locked_object, v$session, v$sqlarea, v$process ;

查询锁的表的方法:

select s.sid session_id, https://www.wendangku.net/doc/1512946059.html,ername, decode(lmode, 0, ?none?, 1, ?null?, 2, ?row-s (ss)?, 3, ?row-x (sx)?, 4, ?share?, 5, ?s/row-x (ssx)?, 6, ?exclusive?, to_char(lmode)) mode_held, decode(request, 0, ?none?, 1, ?null?, 2, ?row-s (ss)?, 3, ?row-x (sx)?, 4, ?share?, 5, ?s/row-x (ssx)?, 6, ?exclusive?, to_char(request)) mode_requested,

https://www.wendangku.net/doc/1512946059.html,bzzp||?.?||o.object_name||? (?||o.object_type||?)?, s.type lock_type, l.id1 lock_id1, l.id2 lock_id2 from v$lock l, sys.dba_objects o, v$session s where l.sid = s.sid and l.id1 = o.object_id ;

30. 如何解锁?

alter system kill session ?sid,serir#‘;

31. sqlplus下如何修改编辑器?

define _editor=‖‖ —必须加上双引号

来定义新的编辑器,也可以把这个写在$oracle_home/sqlplus/admin/glogin.sql里面使它永久有效。

32. oracle产生随机函数是?

dbms_random.random

33. Linux下查询磁盘竞争状况命令?

sar -d

33. Linux下查询cpu竞争状况命令?

sar -r

34. 查询当前用户对象?

select * from user_objects;

select * from dba_segments;

35. 如何获取错误信息?

select * from user_errors;

36. 如何获取链接状况?

select * from dba_db_links;

37. 查看数据库字符状况?

select * from nls_database_parameters;

select * from v$nls_parameters;

38. 查询表空间信息?

select * from dba_data_files;

39. oracle的interal用户要口令?

修改sqlnet.ora

sqlnet.authentication_services=(nts)

40. 出现Java.exe的解决办法?

一般是将oracleorahomexihttpserver改成手工启动可以的

x是8或9

41. 如何给表、列加注释?

sql>comment on table 表is ?表注释?;

注释已创建。

sql>comment on column 表.列is ?列注释?;

注释已创建。

sql> select * from user_tab_comments where comments is not null;

42. 如何查看各个表空间占用磁盘情况?

sql> col tablespace format a20

sql> select

b.file_id 文件id号,

b.tablespace_name 表空间名,

b.bytes 字节数,

(b.bytes-sum(nvl(a.bytes,0))) 已使用,

sum(nvl(a.bytes,0)) 剩余空间,

sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比

from dba_free_space a,dba_data_files b

where a.file_id=b.file_id

group by b.tablespace_name,b.file_id,b.bytes

order by b.file_id

43. 如把oracle设置为mts或专用模式?

#dispatchers=‖(protocol=tcp) (service=sidxdb)‖

加上就是mts,注释就是专用模式,sid是指你的实例名。

44. 如何才能得知系统当前的scn号?

select max(ktuxescnw * power(2, 32) + ktuxescnb) from x$ktuxe;

45. 请问如何在oracle中取毫秒?

9i之前不支持,9i开始有timestamp.

9i可以用select systimestamp from dual;

__________________

风起云涌,一锅稀饭。

人生苦闷,开心就行。

向版主反映这个帖子| ip: 已记录

10-13-03 01:20

开心果

资深会员

注册日期: aug 2003

来自: 福建

发帖数: 525

大家在应用oracle的时候可能会碰到很多看起来不难的问题, 非凡对新手来说, 今天我简单把它总结一下, 发布给大家, 希望对大家有帮助! 和大家一起探讨, 共同进步!

对oracle高手来说是不用看的.

46. 如何在字符串里加回车?

select ?welcome to visit?||chr(10)||?https://www.wendangku.net/doc/1512946059.html,? from dual ;

47. 中文是如何排序的?

oracle9i之前,中文是按照二进制编码进行排序的。

在oracle9i中新增了按照拼音、部首、笔画排序功能。设置nls_sort值

schinese_radical_m 按照部首(第一顺序)、笔划(第二顺序)排序

schinese_stroke_m 按照笔划(第一顺序)、部首(第二顺序)排序

schinese_pinyin_m 按照拼音排序

48. oracle8i中对象名可以用中文吗?

可以

49. 如何改变win中sql*plus启动选项?

sql*plus自身的选项设置我们可以在$oracle_home/sqlplus/admin/glogin.sql中设置。

50. 怎样修改oracel数据库的默认日期?

alter session set nls_date_format=?yyyymmddhh24miss?;

or

可以在init.ora中加上一行

nls_date_format=?yyyymmddhh24miss?

51. 如何将小表放入keep池中?

alter table xxx storage(buffer_pool keep);

52. 如何检查是否安装了某个patch?

check that orainventory

53. 如何使select语句使查询结果自动生成序号?

select rownum,col from table;

54. 如何知道数据裤中某个表所在的tablespace?

select tables pace_name from user_tables where table_name=?test?;

select * from user_tables中有个字段tablespace_name,(oracle);

select * from dba_segments where …;

55. 怎么可以快速做一个和原表一样的备份表?

create table new_table as (select * from old_table);

55. 怎么在sqlplus下修改procedure?

sel ect line,trim(text) t from user_source where name =‘a‘ order by line;

56. 怎样解除procedure被意外锁定?

alter system kill session ,把那个session给杀掉,不过你要先查出她的session id or

把该过程重新改个名字就可以了。

57. sql reference是个什么东西?

是一本sql的使用手册,包括语法、函数等等,oracle官方网站的文档中心有下载.

58. 如何查看数据库的状态?

unix下

ps -ef | grep ora

windows下

看服务是否起来

是否可以连上数据库

59. 请问如何修改一张表的主键?

alter table aaa

drop constraint aaa_key ;

alter table aaa

add constraint aaa_key primary key(a1,b1) ;

60. 改变数据文件的大小?

用alter database …. datafile …. ;

手工改变数据文件的大小,对于原来的数据文件有没有损害。

61. 怎样查看oracle中有哪些程序在运行之中?

查看v$sessions表

62. 怎么可以看到数据库有多少个tablespace?

select * from dba_tablespaces;

63. 如何修改oracle数据库的用户连接数?

修改initsid.ora,将process加大,重启数据库.

64. 如何查出一条记录的最后更新时间?

可以用logminer 察看

65. 如何在pl/sql中读写文件?

utl_file包答应用户通过pl/sql读写操作系统文件。

66. 怎样把―&‖放入一条记录中?

insert into a values (translate (?at{&}t?,?at{}?,?at?));

67. exp如何加query参数?

exp user/pass file=a.dmp tables(bsempms)

query=?‖where emp_no=‖?s09394″?‖‖ ﹔

68. 关于oracle8i支持简体和繁体的字符集问题?

zhs16gbk可以支

69. data guard是什么软件?

就是standby的换代产品

70. 如何创建spfile?

sql> connect / as sysdba

sql> select * from v$version;

sql> create pfile from spfile;

sql> creat e spfile from pfile=?e:‖ora9i‖admin‖eygle‖pfile‖init.ora?;文件已创建。

sql> create spfile=?e:‖ora9i‖database‖spfileeygle.ora? from

pfile=?e:‖ora9i‖admin‖eygle‖pfile‖init.ora?;

文件已创建。

71. 内核参数的应用?

shmmax

含义:这个设置并不决定究竟oracle数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。

设置方法:0.5*物理内存

例子:set shmsys:shminfo_shmmax=10485760

shmmin

含义:共享内存的最小大小。

设置方法:一般都设置成为1。

例子:set shmsys:shminfo_shmmin=1:

shmmni

含义:系统中共享内存段的最大个数。

例子:set shmsys:shminfo_shmmni=100

shmseg

含义:每个用户进程可以使用的最多的共享内存段的数目。

例子:set shmsys:shminfo_shmseg=20:

semmni

含义:系统中semaphore identifierer的最大个数。

设置方法:把这个变量的值设置为这个系统上的所有oracle的实例的init.ora

中的最大的那个processes的那个值加10。

例子:set semsys:seminfo_semmni=100

semmns

含义:系统中emaphores的最大个数。

设置方法:这个值可以通过以下方式计算得到:各个oracle实例的initsid.ora 里边的processes的值的总和(除去最大的processes参数)+最大的那个processes×2+10×oracle实例的个数。

例子:set semsys:seminfo_semmns=200

semmsl:

含义:一个set中semaphore的最大个数。

设置方法:设置成为10+所有oracle实例的initsid.ora中最大的processes的值。

例子:set semsys:seminfo_semmsl=-200

72. 怎样查看哪些用户拥有sysdba、sysoper权限?

sql>conn sys/change_on_install

sql>select * from v_$pwfile_users;

73. 如何单独备份一个或多个表?

exp 用户/密码tables=(表1,…,表2)

74. 如何单独备份一个或多个用户?

exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件

75. 如何对clob字段进行全文检索?

select * from a where dbms_lob.instr(a.a,?k?,1,1)>0;

76. 如何显示当前连接用户?

show user

77. 如何查看数据文件放置的路径?

col file_name format a50

sql> select tablespace_name,file_id,bytes/1024/1024,file_name from

dba_data_files order by file_id;

78. 如何查看现有回滚段及其状态?

sql> col segment format a30

sql> select segment_name,ccbzzp,tablespace_name,segment_id,file_id,status from dba_rollback_segs

79. 如何改变一个字段初始定义的check范围?

sql> alter table xxx drop constraint constraint_name;

之后再创建新约束:

sql> alter table xxx add constraint constraint_name check();

80. oracle常用系统文件有哪些?

通过以下视图显示这些文件信息:v$database,v$datafile,v$logfile v$controlfile v$parameter;

81. 内连接inner join?

select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;

82. 如何外连接?

select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);

select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;

83. 如何执行脚本sql文件?

sql>@$path/filename.sql;

84. 如何快速清空一个大表?

sql>truncate table table_name;

85. 如何查有多少个数据库实例?

sql>select * from v$instance;

86. 如何查询数据库有多少表?

sql>select * from all_tables;

87. 如何测试sql语句执行所用的时间?

sql>set timing on ;

sql>select * from tablename;

88. chr()的反函数是?

ascii()

select char(65) from dual;

select ascii(?a?) from dual;

89. 字符串的连接

select concat(col1,col2) from table ;

select col1||col2 from table ;

90. 怎么把select出来的结果导到一个文本文件中?

sql>spool c:‖abcd.txt;

sql>select * from table;

sql >spool off;

91. 怎样估算sql执行的i/o数?

sql>set autotrace on ;

sql>select * from table;

or

sql>select * from v$filestat ;

可以查看io数

92. 如何在sqlplus下改变字段大小?

alter table table_name modify (field_name varchar2(100));

改大行,改小不行(除非都是空的)

93. 如何查询某天的数据?

select * from table_name where trunc(日期字段)=

to_date(?2003-05-02?,?yyyy-mm-dd?);

94. sql 语句如何插入全年日期?

create table bsyear (d date);

insert into bsyear

select to_date(?20030101?,?yyyymmdd?)+rownum-1

from all_objects

where rownum

95. 假如修改表名?

alter table old_table_name rename to new_table_name;

96. 如何取得命令的返回状态值?

sqlcode=0

97. 如何知道用户拥有的权限?

select * from dba_sys_privs ;

98. 从网上下载的oracle9i与市场上卖的标准版有什么区别?

从功能上说没有区别,只不过oracle公司有明文规定;从网站上下载的oracle产品不得用于商业用途,否则侵权。

99. 怎样判定数据库是运行在归档模式下还是运行在非归档模式下?

进入dbastudio,历程–〉数据库—〉归档查看。

100. sql>startup pfile和ifile,spfiled有什么区别?

pfile就是oracle传统的初始化参数文件,文本格式的。

ifile类似于c语言里的include,用于把另一个文件引入

spfile是9i里新增的并且是默认的参数文件,二进制格式

startup后应该只可接pfile

101. 如何搜索出前n条记录?

select * from employee where rownum

102. 如何知道机器上的oracle支持多少并发用户数?

sql>conn internal ;

sql>show parameter processes ;

103. db_block_size可以修改吗?

一般不可以﹐不建议这样做的。

104. 如何统计两个表的记录总数?

select (select count(id) from aa)+(select count(id) from bb) 总数from dual;

105. 怎样用sql语句实现查找一列中第n大值?

select * from

(select t.*,dense_rank() over (order by sal) rank from employee)

where rank = n;

106. 如何在给现有的日期加上2年?(

select add_months(sysdate,24) from dual;

107. used_ublk为负值表示什么意思?

it is ―harmless‖.

108. connect string是指什么?

应该是tnsnames.ora中的服务名后面的内容

109. 怎样扩大redo log的大小?

建立一个临时的redolog组,然后切换日志,删除以前的日志,建立新的日志。

110. tablespace 是否不能大于4g?

没有限制.

111. 返回大于等于n的最小整数值?

select ceil(n) from dual;

112. 返回小于等于n的最小整数值?

select floor(n) from dual;

113. 返回当前月的最后一天?

select last_day(sys2003-10-17) from dual;

114. 如何不同用户间数据导入?

imp system/manager file=aa.dmp fromuser=user_old touser=user_new rows=y indexes=y ;

115. 如何找数据库表的主键字段的名称?

sql>select * from user_constraints where constraint_type=?p? and

table_name=?table_name?;

116. 两个结果集互加的函数?

sql>select * from bsempms_old intersect select * from bsempms_new;

sql>select * from bsempms_old union select * from bsempms_new;

sql>select * from bsempms_old union all select * from bsempms_new;

117. 两个结果集互减的函数?

sql>select * from bsempms_old minus select * from bsempms_new;

118. 如何配置sequence?

建sequence seq_custid

create sequence seq_custid start 1 incrememt by 1;

建表时:

create table cust

{ cust_id smallint not null,

…}

insert 时:

insert into table cust

values( seq_cust.nextval, …)

日期的各部分的常用的的写法

119>.取时间点的年份的写法:

select to_char(sys2003-10-17,?yyyy?) from dual;

120>.取时间点的月份的写法:

select to_char(sys2003-10-17,?mm?) from dual;

121>.取时间点的日的写法:

select to_char(sys2003-10-17,?dd?) from dual;

122>.取时间点的时的写法:

select to_char(sys2003-10-17,?hh24?) from dual;

123>.取时间点的分的写法:

select to_char(sys2003-10-17,?mi?) from dual;

SQL学习总结

SQL学习 2.1 SQL 简介 当面对一个陌生的数据库是,通常需要一种方式与它进行交换,以完成用户所需要的各种工作,这个时候,就要用到SQL语言了,由于SQL 语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成多种平台进行交互操作的底层会话语言。 2.2 SQL 使用入门 2.2.1 SQL分类 SQL 语句主要可以划分为以下3个类别 1)、DDL (Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。 2)、DML(Data Manipulation Languagr)语句:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。 3)、DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别、主要的语句关键字包括grant、revoke等。 2.2.2 DDL 语句 DDL是数据定义语言的缩写,是对数据库内部的对象进行创建(create)、删除(drop)、修改(alter)的操作语言,它和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表定义,结构的修改,更不会涉及其它的对象,DDL语句更多地被数据库管理员(DBA)所使用,一般开发人员很少使用。 下面通过一些例子来介绍MySQL中常用的DDL语句的使用方法。 1、创建数据库 因为所有的数据都存储在数据库中,因此需要学习的第一个命令是创建数据库,语法如下:

SQL常用命令汇总

SQL常用命令汇总 SQL是结果化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据定义、数据操纵和数据控制四个部分。SQL简洁、功能齐全,已成为目前应用最广的关系数据库语言。 一、SQL的发展及标准化 1.SQL的发展 SQL是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段; (1)1974年,由Chamberlin和Boyce提出,当时称为SEQUEL(Structured English Query Language); (2)1976年,IBM公司对SEQUEL进行了修改,并将其用于本公司的SYSTEM R关系数据库系统中; (3)1981年,推出了商用关系数据库SQL/DS,并将其名字改为SQL,由于SQL功能强大,简洁易用,因此得到了广泛的应用; (4)今天,SQL广泛应用于各种大型数据库,如Sybase,INFORMIX,SQL Server,Oracle,DB2,INGRES等,也用于各种小型数据库,如FoxPro,Access等。 2.SQL标准化 随着关系数据库系统和日益广泛,SQL的标准化工作也在紧张地进行着,二十多年来已制订了多个SQL标准:SQL-86,SQL-89,SQLL2和SQL-99。 二、SQL的基本概念 1.基本表——一个关系对应一个表。基本表是独立存在的表,不是由其他的表导出的 表。 2.视图——是一个或几个基本表导出的表,是一个虚拟的表。它本身不独立存在于数 据中,数据库中只存放视图对应的数据,这些数据仍存放在导出视图的基本表中。 当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。 三、SQL的主要特点 SQL有如下几个特点。 (1)SQL是类似于英语的自然语言,简洁易用。 (2)SQL是一种非过程语言。 (3)SQL是一种面向集合的语言。 (4)SQL既是自含式语言,又是嵌入式语言;可独立使用,也可以嵌入到宿主语言中。 (5)SQL是数据库查询(Query)、数据定义(Definition)、数据操纵(Manipulation)和数据控制(Control)四种功能。 创建数据表 语法格式:CREA TE TABLE<表名>(<列定义>[{,<列定义>|<表约束>}]) 例:create table s(xingm c(8),xueh c(8),chengj c(3)) 结果:

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,心得体会

sql,心得体会 篇一:数据库SQL2000实验总结与心得体会 《数据库系统概论(第四版)》 体 会 学号:姓名:班级:教师: 学 期实验总结与心得 【实验名称】数据库的创建【实验内容】1、新建SQL注册表。2、新建数据库。主数据文件:逻辑文件名为Student_data,物理文件名为Student.mdf, 初始大小为10mB,最大尺寸为无限大,增长速度为10%; 数据库的日志文件:逻辑名称为Student_log,物理文件名为Student.ldf,初始大小为1mB,最大尺寸为5mB,增长速度为 1mB 3、修改已注册的SQLServer属性为使用SQLserver身份验证。 【实验名称】数据库的附加、分离、导入导出及分离【实验内容】 1.数据库文件的附加与分离 2.数据库文件的导入和导出 3..数据库的删除

4.修改数据库 【实验名称】数据库的创建(书中作业)【实验内容】 1.在数据库STUdEnT中创建一个学生基本信息表 1.用企业管理其创建表 2.用查询分析器创建表 2.SQLServer20XX的系统数据类型分为哪几类?常用的数据类型有哪些? 答:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间。常用的数据类型有:字符串类型、整型、长整型、短整型、浮点数类型、定点数类型、日期、时间 3.在数据库STUdEnT中创建一个名为t_couse(课程信息表) 1.用企业管理其创建t_course表 2.用查询分析器创建t_course 4.在数据库STUdEnT中创建一个名为t_score(学生成绩)的表 5.SQLServer20XX中有多少种约束?其作用分别是什么 答:非空约束,作用指定某一列不允许空值有助于维护数据的完整性,因为这样可以确保行中的列永远保护数据。 主键约束,作用可以保证实体的完整性,是最重要的一种约束。 唯一约束,作用指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值。 检查约束,作用对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。

oracle中常用函数大全

oracle中常用函数大全 1、数值型常用函数 函数返回值样例显示 ceil(n) 大于或等于数值n的最小整数select ceil(10.6) from dual; 11 floor(n) 小于等于数值n的最大整数select ceil(10.6) from dual; 10 mod(m,n) m除以n的余数,若n=0,则返回m select mod(7,5) from dual; 2 power(m,n) m的n次方select power(3,2) from dual; 9 round(n,m) 将n四舍五入,保留小数点后m位select round(1234.5678,2) from dual; 1234.57 sign(n) 若n=0,则返回0,否则,n>0,则返回1,n<0,则返回-1 select sign(12) from dual; 1 sqrt(n) n的平方根select sqrt(25) from dual ; 5 2、常用字符函数 initcap(char) 把每个字符串的第一个字符换成大写select initicap('mr.ecop') from dual; Mr.Ecop lower(char) 整个字符串换成小写select lower('MR.ecop') from dual; mr.ecop replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott substr(char,m,n) 取出从m字符开始的n个字符的子串select substr('ABCDEF',2,2) from dual; CD length(char) 求字符串的长度select length('ACD') from dual; 3 || 并置运算符select 'ABCD'||'EFGH' from dual; ABCDEFGH 3、日期型函数 sysdate当前日期和时间select sysdate from dual;

ACCESS数据库中常见的SQL语句汇总教程

ACCESS数据库的SQL语句教学 1、查询所有记录:Select *通常用于快速查看表中的记录。当对表的结构无法确切记忆时,或要快速查看表中的记录时,使用Select *是很方便的。 use 企业销售管理系统 Select * from 职工 2、投影查询:很多时候并不需要将所有列的数据都显示出来。投影查询就是允许用户显示所需要的列。假设显示职工表中职工号、姓名、工资信息,具体操作方法如下。 Select 职工号,姓名,工资 from 职工 在Select查询中,还可以按照实际的需要或自己的喜好安排显示列的顺序,如果要把姓名放到第一列,则代码如下: Select 姓名, 职工号,工资 from 职工 3、条件查询:显示wh1或wh2仓库、性别不为女、工资在1300~2100之间的职工信息。具体操作如下: Select * from 职工号 where(仓库号='wh1' or 仓库号='wh2') And not 性别='女' and 工资>=1300 and 工资<=2100 在这里一定要注意,(仓库号='wh1' or仓库号='wh2')一定要加括号,否则就不是原题的意思。 4、谓词In查询:在查找特定条件的数据时,如果条件较多,就需要用到多个Or运算符,以查找满足其中任一条的记录。但使用多个Or运算符,将使Where子句变得过于冗长,这时使用In就非常清楚。另外,在后面讲解的嵌套查询中,也必须使用In查询。下面以显示zg1、zg2、zg11、zg15的订购单信息为例具体讲解一下。

使用Or运算符 Select * from 订购单 where 职工号='zg1' or 职工号='zg2' Or 职工号='zg11' or 职工号='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 in('zg1', 'zg2', 'zg11', 'zg15') 在Select语句中,还支持In与Not结合使用。假设显示职工号不为zg1, zg2, zg11, zg15的订购单信息,具体代码如下: 使用Or运算符 Select * from 订购单 where 职工号!='zg1' or 职工号!='zg2' Or 职工号!='zg11' or 职工号!='zg15' 使用谓词In Use 企业销售管理系统 Select * from 订购单 where 职工号 not in('zg1', 'zg2', 'zg11', 'zg15') 5、模糊Like查询:有的时候,我们不清楚所要查询的信息,如显示职工信息,但不能确定该职工的姓名,只知道他姓名中含有“王”字,那该如何查找呢?SQL中提供了Like关键字,使用Like进行了查询时,还要指定通配符。 通配符及其含义

SQL学习总结

1、With ties :查出与返回数据的最后一行的相同的数据 2、用法:select top(5) with ties 字段名FROM 表名 3、Over的使用 Over称为窗口函数 用法:sum(valus) over() 其是指对搜索出来的数据进行求和,不需要在进行分组,如果需要有限定条件则sum(valus) over(partition by字段名) 4、数据的计算 在进行数据与字段的乘除的时候,数字后面加一个点,(110.),这样就可以把整数字段隐式的装换为十进制数据进行乘除,否则则会使正式除法,回省略小数5、In 、like 、between的用法 In主要是指在多个数据中选择一个,进字段名的值在in之内 Like主要进行迷糊查询,例:like ‘ %as’ Between 主要是指字段值在两个值之间 6、N 的用法 N 表示国际化(national)用于表示字符串Unicode(nchar、nvarchar) 数据类型numeric是指实数例:numeric(12,2)(12指数据长度,2指小数位数)7、数据的优先级 1、() 2、x 、/、% 3、+ 、-、 4、 5、NOT 6、and 7、between 、in、like、or 8、= 8、case表达式的使用 Select 字段一,case 字段二 When‘条件’then 结果 When ‘条件’then 结果

End as 字段名from 表名 Case 与end是成对出现的 Case与case表达式的区别是,case表达式可以添加条件,但是case不可以While 语句的使用:进行1+2+3+…….+100 declare@sum int set@sum=0 declare@I int SET@I=0 WHILE@I<100 BEGIN SELECT@SUM=@SUM+@I SELECT@I=@I+1 END SELECT (@sum) 求得日期的月份 select MESBUSINESS20.dbo.fun_GetRealYYYYMMByDate(SubmitDat e) 其中fun是函数 9、数据类型 Varchar 和char nvarchar 和nchar 前者是一个字节来保存一个字符,语言只能限定于英语,后者是用两个字节来保存一个字符,不进行语言限制 在进行查询时如果把null值当做空字符串进行连接时,则可以通过一个CONCAT_NULL_YIELDS_NULL 保持OFF状态 语法:SET CONCAT_NULL_YIELDS_NULL OFF 同时也可以使用COALESEC 函数进行转变COALESEC(字段) Nvarchar 和varvhar的区别: Nvarchar在分配内存是可以根结自身的大小进行调整,nvarchar(100),其中一百是自己的最大地址,varchar(100)不会根据自身大小进行调整,100就是其占用的内存,不会改变

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

SQLServer数据库入门学习总结

SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图

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.wendangku.net/doc/1512946059.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

常用sql操作总结_尚硅谷_宋红康

SQL语句的多表查询方式 例如:按照department_id查询employees(员工表)和departments(部门表) 的信息。 方式一(通用型):SELECT ... FROM ... WHERE SELECT https://www.wendangku.net/doc/1512946059.html,st_name,e.department_id,d.department_name FROM employees e,departments d where e.department_id = d.department_id 方式二:SELECT ... FROM ... NATURAL JOIN ... 有局限性:会自动连接两个表中相同的列(可能有多个:department_id和manager_id) SELECT last_name,department_id,department_name FROM employees NATURAL JOIN departments 方式三:SELECT ... JOIN ... USING ... 有局限性:好于方式二,但若多表的连接列列名不同,此法不合适 SELECT last_name,department_id,department_name FROM employees JOIN departments USING(department_id) 方式四:SELECT ... FROM ... JOIN ... ON ... 常用方式,较方式一,更易实现外联接(左、右、满) SELECT last_name,e.department_id,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id --内连接 1) --等值连接 --不等值连接 2) --非自连接 --自连接 --外连接 --左外连接、右外连接、满外连接

数据库应用SQL总结

数据库应用SQL总结 1 数据库的操作 (3) 1.1 数据库的创建 create database name (3) 1.2 数据库的修改 alter database name (3) 1.2.1 修改方式1:修改modify (3) 1.2.2 修改方式2:添加add (4) 1.2.3 修改方式3:删除remove (4) 1.3 数据库的删除 drop database (4) 2 关系表的操作 (5) 2.1 关系表的创建 create table name (5) 2.2 关系表的修改 alter table name (5) 2.2.1 修改方式1:修改alter column (5) 2.2.2 修改方式2:添加add (5) 2.2.3 修改方式3:删除drop column (6) 2.3 关系表的删除 drop table name (6) 3 表数据的操作 (7) 3.1 表数据的录入 insert into table values (7) 3.2 表数据的修改 update table set (7) 3.3 表数据的删除 delete from name (7) 4 数据表查询 (8) 4.1 对列的相关查询 select table_list from table (8) 4.1.1 选择一个表中指定的列 select table_list from table (8) 4.1.2 查询全部列 select * from table (8) 4.1.3 修改查询结果中列标题 select list as list_name from table (8) 4.1.4 替换查询结果中数据select list case when then end from table . 8 4.1.5 查询经过计算的值 select expression from table (9) 4.2 对行的相关查询select table_list from table (9) 4.2.1 消除结果集中的重复行distinct (9) 4.2.2 限制结果集的返回行数 top n percent (9) 4.2.3 查询满足条件的行 select list from table where (9) 4.3 对查询结果排序 order by list_name asc|desc (10) 4.4 使用聚合函数 SUM( )AVG( )MIN( )MAX( )COUNT() (11) 4.5 对查询结果分组 group by (11)

sql 语句大全

oracle数据库性能监控的SQL 1. 监控事例的等待 SQL> SELECT EVENT,SUM(DECODE(WAIT_TIME,0,0,1)) "PREV",SUM(DECODE(WAIT_TIME,0,1,0)) "CURR",COUNT(*) "TOT" FROM V$SESSION_WAIT GROUP BY EVENT ORDER BY 4; 2. 回滚段的争用情况 SQL> SELECT NAME, WAITS, GETS, WAITS/GETS "RATIO" FROM V$ROLLSTAT A, V$ROLLNAME B WHERE https://www.wendangku.net/doc/1512946059.html,N = https://www.wendangku.net/doc/1512946059.html,N; 3. 监控表空间的 I/O 比例 SQL> SELECT DF.TABLESPACE_NAME NAME,DF.FILE_NAME "FILE",F.PHYRDS PYR, F.PHYBLKRD PBR,F.PHYWRTS PYW, F.PHYBLKWRT PBW FROM V$FILESTAT F, DBA_DATA_FILES DF WHERE F.FILE# = DF.FILE_ID ORDER BY DF.TABLESPACE_NAME; 4. 监控文件系统的 I/O 比例 SQL> SELECT SUBSTR(A.FILE#,1,2) "#", SUBSTR(https://www.wendangku.net/doc/1512946059.html,,1,30) "NAME", A.STATUS,A.BYTES, B.PHYRDS,B.PHYWRTS FROM V$DATAFILE A, V$FILESTAT B WHERE A.FILE# = B.FILE#; 5.在某个用户下找所有的索引 SQL> SELECT USER_INDEXES.TABLE_NAME, USER_INDEXES.INDEX_NAME,UNIQUENESS, COLUMN_NAME FROM USER_IND_COLUMNS, USER_INDEXES WHERE USER_IND_COLUMNS.INDEX_NAME = USER_INDEXES.INDEX_NAME AND USER_IND_COLUMNS.TABLE_NAME = USER_INDEXES.TABLE_NAME ORDER BY USER_INDEXES.TABLE_TYPE, USER_INDEXES.TABLE_NAME, USER_INDEXES.INDEX_NAME, COLUMN_POSITION; 6. 监控 SGA 的命中率 SQL> SELECT A.VALUE + B.VALUE "LOGICAL_READS", C.VALUE "PHYS_READS", ROUND(100 * ((A.VALUE+B.VALUE)-C.VALUE) / (A.VALUE+B.VALUE)) "BUFFER HIT RATIO" FROM V$SYSSTAT A, V$SYSSTAT B, V$SYSSTAT C WHERE A.STATISTIC# = 38 AND B.STATISTIC# = 39 AND C.STATISTIC# = 40; 7. 监控 SGA 中字典缓冲区的命中率 SQL> SELECT PARAMETER, GETS,GETMISSES , GETMISSES/(GETS+GETMISSES)*100 "MISS RATIO",(1-(SUM(GETMISSES)/ (SUM(GETS)+SUM(GETMISSES))))*100 "HIT RATIO" FROM V$ROWCACHE WHERE GETS+GETMISSES <>0 GROUP BY PARAMETER, GETS, GETMISSES; 8. 监控 SGA 中共享缓存区的命中率,应该小于1% SQL> SELECT SUM(PINS) "TOTAL PINS", SUM(RELOADS) "TOTAL RELOADS", SUM(RELOADS)/SUM(PINS) *100 LIBCACHE FROM V$LIBRARYCACHE; SQL> SELECT SUM(PINHITS-RELOADS)/SUM(PINS) "HIT RADIO",SUM(RELOADS)/SUM(PINS)

sql子查询总结

在SQL语言中,当一个查询语句嵌套在另一个查询的查询条件之中时,称为子查询。子查询总是写在圆括号中,可以用在使用表达式的任何地方。如:嵌套在Select 、Insert 、Update 或Delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。 许多包含子查询的 Transact-SQL 语句都可以改用联接表示。在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。 以下示例显示了返回相同结果集的Select子查询和Select联接: Select Name FROM AdventureWor ks.Production.Product Where ListPrice = (Select ListPrice FROM AdventureWor ks.Production.Product Where Name = ’Chainring Bolts’ ) Select Prd1. Name FROM AdventureWor ks.Production.Product AS Prd1 JOIN AdventureWor ks.Production.Product AS Prd2 ON (Prd1.ListPrice = Prd2.ListPrice) Where Prd2. Name = ’Chainring Bolts’ 嵌套在外部Select语句中的子查询包括以下组件: ●包含常规选择列表组件的常规Select查询。 ●包含一个或多个表或视图名称的常规 FROM 子句。 ●可选的 Where 子句。 ●可选的 GROUP BY 子句。 ●可选的 HAVING 子句。 子查询的Select查询总是使用圆括号括起来。它不能包含COMPUTE 或 FOR BROWSE 子句,如果同时指定了 TOP 子句,则只能包含 or DER BY 子句。 子查询可以嵌套在外部 Select,Insert,Update 或 Delete语句的 Where 或 HAVING 子句内,也可以嵌套在其他子查询内。尽管根据可用内存和查询中其他表达式的复杂程度的不同,嵌套限制也有所不同,但嵌套到 32 层是可能的。个别查询可能不支持 32 层嵌套。任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

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.wendangku.net/doc/1512946059.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) VALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) VALUES (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 6、查询当前用户下所有对象 SQL> select * from tab; 7、建立第一个表 SQL> create table a(a number); 8、查询表结构 SQL> desc a 9、插入新记录 SQL> insert into a values(1); 10、查询记录 SQL> select * from a;

经典SQL面试题总结

表 Student(S#,Sname,Sage,Ssex) 学生表 CREATE TABLE student ( sid varchar(10) NOT NULL, sName varchar(20) DEFAULT NULL, sAge datetime DEFAULT '1980-10-12 23:12:36', sSex varchar(10) DEFAULT NULL, PRIMARY KEY (sid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Course(C#,Cname,T#) 课程表 CREATE TABLE course ( cid varchar(10) NOT NULL, cName varchar(10) DEFAULT NULL, tid int(20) DEFAULT NULL, PRIMARY KEY (cid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SC(S#,C#,score) 成绩表 CREATE TABLE sc ( sid varchar(10) DEFAULT NULL, cid varchar(10) DEFAULT NULL, score int(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8; Teacher(T#,Tname) 教师表 CREATE TABLE teacher ( tid int(10) DEFAULT NULL, tName varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 数据:(MySQL) insert into teacher(tid,tName) values (1,'李老师'),(2,'何以琛'),(3,'叶平'); insert into student(sid,sName,sAge,sSex) values ('1001','张三丰','1980-10-12 23:12:36','男'),('1002','张无极','1995-10-12 23:12:36','男'),('1003','李奎','1992-10-12 23:12:36','女'),('1004','李元宝','1980-10-12 23:12:36','女'),('1005','李世明','1981-10-12 23:12:36','男'),('1006','赵六','1986-10-12 23:12:36','男'),('1007','田七','1981-10-12 23:12:36','女'); insert into sc(sid,cid,score) values ('1','001',80),('1','002',60),('1','003',75),('2','001',85),('2','002',70),('3','004',100), ('3','001',90),('3','002',55),('4','002',65),('4','003',60); insert into course(cid,cName,tid) values ('001','企业管理',3),('002','马克思',3),('003','UML',2),('004','数据库',1),('005 ','英语',1); 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于60分的同学的学号和平均成绩;

相关文档