Oracle基本语句
oracle基础语句

oracle基础语句
Oracle是一种关系型数据库管理系统,它支持SQL语言。
在Oracle中,SQL语言被用来操作数据库中的数据。
以下是Oracle基础语句:
1. SELECT:用于从表中获取数据。
2. INSERT:用于向表中插入一条新的记录。
3. UPDATE:用于更新表中的记录。
4. DELETE:用于从表中删除记录。
5. CREATE:用于创建新表,视图或索引。
6. DROP:用于删除表,视图或索引。
7. ALTER:用于修改表的结构。
8. TRUNCATE:用于清空表中的所有数据。
9. COMMIT:用于将更改保存到数据库中。
10. ROLLBACK:用于撤消已进行的更改。
以上是Oracle基础语句,掌握这些语句可以让初学者熟练操作Oracle数据库。
- 1 -。
oracle数据库基本语句

oracle数据库基本语句oracle 数据库是一种常用的关系型数据库管理系统,常用的oracle数据库包括oracle10g、oracle11g和oracle12c。
要掌握oracle的基本用法,必须掌握其基本的语句。
oracle的常用基本语句有:一、数据定义语言(DDL)1、创建数据表:CREATE TABLE 表名(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);2、修改数据表: ALTER TABLE 表名 ADD(字段名数据类型[完整性约束条件],字段名数据类型[完整性约束条件],……);3、删除数据表: DROP TABLE 表名;4、创建索引:CREATE [UNIQUE] INDEX 索引名ON 表名[字段名[,字段名];5、删除索引: DROP INDEX 索引名;三、数据控制语言(DCL)1、建立用户: CREATE USER 用户名 IDENTIFIED BY 密码;2、删除用户: DROP USER 用户名;3、授权:GRANT 权限 ON 对象 TO 用户[WITH GRANT OPTION];4、回收授权: REVOKR 权限 ON 对象 FROM 用户;5、控制事务: COMMIT/ROLLBACK;四、数据库控制语言(DBCL)1、创建数据库:CREATE DATABASE 数据库名;2、删除数据库: DROP DATABASE 数据库名;3、创建表空间:CREATE TABLESPACE 表空间名 SEGMENT SPACE MANAGEMENT 自动;4、删除表空间: DROP TABLESPACE 表空间名;5、管理会话: ALTER SYSTEM KILL SESSION ['会话号'];。
Oracle导入的常见语句

Oracle导⼊的常见语句登录sql > sqlplus / as sysdba创建表空间sql > create tablespace TABLESPACE datafile 'e:\tables1.dbf' size 1m segment space management auto;赋予⾃动增长sql > alter database datafile 'e:\tables1.dbf' autoextend on;删除表空间及删除⽂件sql > drop tablespace TABLESPACE including contents and datafiles;创建⽤户sql > create user USERNAME identified by hanweb default tablespace TABLESPACE;权限赋予sql > grant connect,resource,dba,unlimited tablespace to USERNAME with admin option;sql > grant sysdba to USERNAME with admin option;删除⽤户sql > drop user USERNAME cascade;退出数据库:Ctrl+C 或 sql > quit/exitimp导⼊数据imp USERNAME/PASSWORD@ORCL file='D:\backup\DMPNAME.dmp' log='d:\backuplog\DMPNAME.log' ignore=y full=y impdp导⼊数据创建.dmp⽂件所在⽂件夹容器并需电脑⼿动创建sql > create directory DIRDP as 'd:\backup';退出数据库执⾏:impdp USERNAME/PASSWORD@ORCL directory=DIRDP dumpfile='DMPNAME.dmp' logfile='DMPNAME.log' full=y其它SQL语句查看各表空间分配情况sql > select tablespace_name, sum(bytes) / 1024 / 1024 from dba_data_files group by tablespace_name;关闭表空间⾃增长sql > alter database datafile 'e:\mytables1.dbf' autoextend off;查看表空间状态sql > select tablespace_name tb_n,file_name f_n,autoextensible auto from dba_data_files;查看各表空间空闲情况sql > select tablespace_name, sum(bytes) / 1024 / 1024 from dba_free_space group by tablespace_name;更改数据表⼤⼩(10G)sql > alter database datafile 'e:\DBFNAME.dbf' resize 10240m;。
oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句ORACLE 常用的SQL语法和数据对象一.数据控制语句(DML) 部分1.INSER T (往数据表里插入记录的语句)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()还有很多种日期格式, 可以参看OR ACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WI TH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999 INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.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 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAUL T SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMAR Y KEY2.AL TER (改变表, 索引, 视图等)改变表的名称AL TER TABLE 表名1 TO 表名2;在表的后面增加一个字段AL TER TABLE表名ADD 字段名字段名描述;修改表里字段的定义描述AL TER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件AL TER TABLE 表名ADD CONSTRAINT 约束名PRIMAR Y KEY (字段名);AL TER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区AL TER TABLE 表名CACHE;AL TER 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=NULLRETURN EXPR2ELSERETURN EXPR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULLLPAD(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, 降序是DESCSELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象 (SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );AL TER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况, 也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;AL TER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;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 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSER T ON 数据对象名, AL TER 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 orderby error_code;查询报表数据库中话单统计种类查询。
oracle数据库常用检测语句

1、--查询每台电脑的连接数select username, t.MACHINE,t.PROGRAM, t.STATUS, count(username)from v$session twhere username is not nullgroup by username, t.MACHINE,t.PROGRAM, t.STATUSorder by username, t.MACHINE,t.PROGRAM, t.STATUS;2--查询可用连接数和已经用了的连接数select RESOURCE_NAME as A,--资源名,CURRENT_UTILIZATION as b,--资源的当前使用量,MAX_UTILIZATION as c,--资源使用达到的最大值,INITIAL_ALLOCATION as d,--初始化值一般等于limit_value,LIMIT_VALUE as e--系统设置的资源值from v$resource_limitwhere resource_name in ('sessions', 'processes');3--查询数据库内存select * from v$sga;select * from v$sgastat;4--查询耗时最长的sql,采用这个语句在业务高峰监控那个查询语句耗时长,占用数据库连接不释放select *from (select SQL_TEXT,SQL_FULLTEXT,round(ELAPSED_TIME / 1000000, 2) ccc,--总时长,EXECUTIONS dd,--执行次数,round(ELAPSED_TIME / 1000000 / EXECUTIONS, 3) ee,--每次时长,trunc((elapsed_Time - cpu_time) * 100 / elapsed_Time, 2) aa,--等待时间占比,round((elapsed_Time - cpu_time) / 1000000, 2) ff,--等待时长,round(USER_IO_WAIT_TIME / 1000000, 2) gg,--IO等待时间,buffer_gets bb,--读取缓冲区次数,disk_reads hh,--读盘次数,hash_value, --SQL的hash_value,以备获取完整SQLsql_id,SORTS --排序次数from (select *from v$sqlareawhere executions > 10and PARSING_SCHEMA_NAME = '***' --注意修改schema名称order by ELAPSED_TIME desc)where rownum < 500)order by ee desc;5--数据库分区表最大分区检查---查询结果当前最大分区要比当前日期提前半年以上。
Oracle_基本建表语句

Oracle_基本建表语句--创建⽤户create user han identified by han default tablespaceusers Temporary TABLESPACE Temp;grant connect,resource,dba to han; //授予⽤户han开发⼈员的权利--------------------对表的操作----------------------------创建表create table classes(id number(9) not null primary key,classname varchar2(40) not null)--查询表select * from classes;--删除表drop table students;--修改表的名称rename alist_table_copy to alist_table;--显⽰表结构describe test --不对没查到-----------------------对字段的操作-------------------------------------增加列alter table test add address varchar2(40);--删除列alter table test drop column address;--修改列的名称alter table test modify address addresses varchar(40;--修改列的属性alter table test modicreate table test1(id number(9) primary key not null,name varchar2(34))rename test2 to test;--创建⾃增的序列create sequence class_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;select class_seq.currval from dual--插⼊数据insert into classes values(class_seq.nextval,'软件⼀班')commit;--更新数据update stu_account set username='aaa' where count_id=2;commit;--创建唯⼀索引create unique index username on stu_account(username); --唯⼀索引不能插⼊相同的数据--⾏锁在新打开的对话中不能对此⾏进⾏操作select * from stu_account t where t.count_id=2 for update; --⾏锁--alter table stuinfo modify sty_id to stu_id;alter table students drop constraint class_fk;alter table students add constraint class_fk foreign key (class_id) references classes(id);--外键约束alter table stuinfo add constraint stu_fk foreign key (stu_id) references students(id) ON DELETE CASCADE;--外键约束,级联删除alter table stuinfo drop constant stu_fk;insert into students values(stu_seq.nextval,'张三',1,sysdate);insert into stuinfo values(stu_seq.currval,'威海');select * from stuinfo;create table zhuce(zc_id number(9) not null primary key,stu_id number(9) not null,zhucetime date default sysdate)create table feiyong (fy_id number(9) not null primary key,stu_id number(9) not null,mx_id number(9) not null,yijiao number(7,2) not null default 0,qianfei number(7,2) not null)create talbe fymingxi(mx_id number(9) not null primary key,feiyong number(7,2) not null, //共7位数字,⼩数后有两位 class_id number(9) not null}create table card(card_id number(9) primary key,stu_id number(9) not null,money number(7,2) not null default 0,status number(1) not null default 0 --0表可⽤,1表挂失)--链表查询select c.classname||'_'||s.stu_name as 班级_姓名,si.address from classes c,students s , stuinfo si where c.id=s.class_id and s.id=si.stu_id;insert into students values(stu_seq.nextval,'李四',1,sysdate); insert into stuinfo values(stu_seq.currval,'南京');--函数select rownum,id,stu_name from students t order by id asc;--中间表实现多对多关联--(1 1, 1 n,n 1,n n )--1 n的描述 1的表不作处理 n的表有1表的字段--1 1的描述主外键关联--n n的描述中间表实现多对多关联create table course(course_id number(9) not null,couser_name varchar2(40) not null)alter table course to couse;create table stu_couse(stu_couse_id number(9) primary key,stu_id number(9) not null,couse_id number(9) not null)create unique index stu_couse_unq on stu_couse(stu_id,couse_id); --唯⼀学⽣create sequence stu_couse_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;create sequence couses_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE;insert into course values(couses_seq.nextval,'计算机原理');insert into course values(couses_seq.nextval,'编译原理');insert into course values(couses_seq.nextval,'数据库原理');insert into course values(couses_seq.nextval,'数据结构');insert into course values(couses_seq.nextval,'计算机基础');insert into course values(couses_seq.nextval,'C语⾔初步');commit;insert into stu_couse values(stu_couse_seq.nextval,1,1);insert into stu_couse values(stu_couse_seq.nextval,1,3);insert into stu_couse values(stu_couse_seq.nextval,1,5);insert into stu_couse values(stu_couse_seq.nextval,1,5);insert into stu_couse values(stu_couse_seq.nextval,2,1);commit;select * from stu_couse;select * from course;--select s.stu_name,sc.couse_id, c.couser_name from students s,course c,stu_couse sc where stu_id=1--select couse_id from stu_couse where stu_id=1select cl.classname,s.stu_name,c.couser_name from stu_couse sc, students s,course c,classes cl where s.id=sc.stu_id and sc.couse_id=c.course_id and s.class_id=cl.id and s.id=1;--班级——姓名select c.classname,s.stu_name from students s,classes c wheres.class_id=c.id and s.id=2;select * from students s where s.id=2--班级——姓名——课程select cl.classname,s.stu_name,c.couse_name from stu_couse sc,students s,classes cl,couse c where sc.stu_id=s.id and sc.couse_id=c.couse_id and s.id=26;--sql 语句的写法,现写出关联到的表,然后写出要查找的字段,第三写出关联条件,记住在写关联到的表时先写数据多的表,这样有助于提⾼sql的效率select c.couser_name,s.stu_name from stu_couse sc,students s,course c where c.course_id=1 and c.course_id=sc.couse_id and sc.stu_id=s.id;select s.stu_name from students s,stu_couse sc where s.id=sc.stu_id group by s.id,s.stu_name;select c.classname,count(sc.couse_id) from stu_couse sc,studentss,classes c where s.class_id=c.id and s.id=sc.stu_id group byc.classname;select s.stu_name, count(sc.couse_id) from stu_couse sc,studentss,classes cl where s.id=sc.stu_id group by s.id,s.stu_name having count(sc.stu_couse_id)>3;班级学⽣选课数量select cl.classname,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where s.id=sc.stu_id ands.class_id=cl.id group bycl.classname;--班级学⽣选课数量select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where s.id=sc.stu_id and s.class_id=cl.id group by s.stu_name;select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc ,students s,classes cl where sc.stu_id=s.id and s.class_id=cl.id group by s.id;select cl.classname,s.stu_name,count(sc.stu_couse_id) from stu_couse sc,students s,classes cl where sc.stu_id=s.id and s.class_id=cl.id group by s.stu_name;--班级学⽣所选课程id 所选课程名称--创建试图⽬的把表联合起来然后看成⼀个表,在与其他的联合进⾏查询create view xsxk as select cl.classname,s.stu_name,c.couse_id,c.couse_name from stu_couse sc,students s,classes cl,couse c where sc.stu_id=s.id and sc.couse_id=c.couse_id and s.class_id=cl.id;select * from xsxkcreate view classstu as select s.id,c.classname,s.stu_name from students s,classes c where c.id=s.class_id;drop view classstu; --删除视图select * from classstu;create view stu_couse_view as select s.id ,c.couse_name from stu_couse sc,students s,couse c where s.id=sc.stu_id and sc.couse_id=c.couse_id; select * from stu_couse_view;create view csc as select cs.classname,cs.stu_name,scv.couse_name from classstu cs,stu_couse_view scv wherecs.id=scv.id;select * from csc;select * from classes cross join students; --全连接,相当于select * from classes,students;select * from classes cl left join students s on cl.id=s.class_id; --左连接不管左表有没有都显⽰出来select * from classes cl right join students s on cl.id=s.class_id; --右连接select * from classes cl full join students s on cl.id=s.class_id; --全连接insert into classes values(class_seq.nextval,'软件四班');create table sales(nian varchar2(4),yeji number(5));insert into sales values('2001',200);insert into sales values('2002',300);insert into sales values('2003',400);insert into sales values('2004',500);commit;select * from sales;drop table sale;select s1.nian,sum(s2.yeji) from sales s1,sales s2 wheres1.nian>=s2.nian group by s1.nian order by s1.nian desc;select s1.nian,sum(s2.yeji) from sales s1,sales s2 wheres1.nian>=s2.nian group by s1.nian;s年年业绩总和2001 2002002 5002003 9002004 1400create table test1(t_id number(4));create table org(org_id number(9) not null primary key,org_name varchar2(40) not null,parent_id number(9));create sequence org_seq increment by 1 start with 1 MAXVALUE 999999 NOCYCLE NOCACHE; drop sequence org_seq;insert into org values(1,'华建集团',0);insert into org values(2,'华建集团⼀分公司',1);insert into org values(3,'华建集团⼆分公司',1);insert into org values(4,'华建集团财务部',1);insert into org values(5,'华建集团⼯程部',1);insert into org values(6,'华建集团⼀分公司财务处',2);insert into org values(7,'华建集团⼀分公司⼯程处',2);select * from org;--不正确不能实现循环select /doc/5e8716366.html_id , /doc/5e8716366.html_name ,b.parent_id from org a,org b where/doc/5e8716366.html_id=7 and a.parent_id=/doc/5e8716366.html_id;select * from org connect by prior parent_id=org_id start with org_id=7 order by org_id;select * from org connect by prior org_id=parent_id start with org_id=1 order by org_id;create table chengji(cj_id number(9) not null primary key,stu_cou_id number(9) not null,fen number(4,1));insert into chengji values(1,1,62);insert into chengji values(2,2,90);insert into chengji values(3,3,85);insert into chengji values(4,4,45);insert into chengji values(5,5,68);insert into chengji values(6,6,87);commit;select * from chengji;select * from stu_couse;--在oracle 中好像不适⽤ alter table chengji change stu_cou_idstu_couse_id;alter table shop_jb change price1 price double;学⽣姓名平均分select s.stu_name,avg(cj.fen) from stu_couse sc,chengji cj,students s where s.id=sc.stu_id andsc.stu_couse_id=cj.stu_couse_id group bys.id,s.stu_name;select s.stu_name from students s,stu_couse sc,chengji cj wheres.id=sc.stu_id and sc.stu_couse_id=cj.stu_couse_id group bys.id,s.stu_name;select s.stu_name,cj.fen from students s,stu_couse sc,chengji cj where s.id=sc.stu_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen>60;学⽣姓名科⽬成绩select s.stu_name,c.couse_name,cj.fen from stu_couse sc,studentss,couse c,chengji cj where sc.stu_id=s.id and sc.couse_id=c.couse_id and sc.stu_couse_id=cj.stu_couse_id and cj.fen>60 order by=;select * from stu_couse;--集合运算--选择了课程3的学⽣ union 选择了课程5的学⽣并集--选择了课程3 或者选择了课程5的学⽣select s.stu_name from students s,couse c,stu_couse sc wheres.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=3unionselect s.stu_name from students s,couse c,stu_couse sc wheres.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=5--选择了课程3,5,2 的学⽣ intersect 选择课程1,2,4的学⽣交集--求选择了课程 2 并且选择了课程 3 的学⽣交集select s.stu_name from students s,couse c,stu_couse sc wheres.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=2intersectselect s.stu_name from students s,couse c,stu_couse sc wheres.id=sc.stu_id and sc.couse_id=c.couse_id and c.couse_id=3;--选择了课程3,5,8的学⽣ minus 选择了课程1,7,8的学⽣ --差集-- 求所有课程的成绩都⼤于 60 的学⽣差集select distinct(s.stu_name) from stu_couse sc,students s,couse c,chengji cj where sc.stu_id=s.id andsc.couse_id=c.couse_id andsc.stu_couse_id=cj.stu_couse_id and cj.fen>60minusselect distinct(s.stu_name) from stu_couse sc,students s,couse c,chengji cj where sc.stu_id=s.id andsc.couse_id=c.couse_id andsc.stu_couse_id=cj.stu_couse_id and cj.fen<60;⼀、何謂分區表(索引)?分區表是⼀種數據庫的物理存儲機制,它將⼀個表的數據存儲在不同的存儲⽚段中,這些不同的存儲⽚稱為區(partition)。
oracle登录语句

oracle登录语句1. 使用Oracle登录语句Oracle是一种常用的关系型数据库管理系统,登录到Oracle数据库需要使用合适的登录语句。
以下是一些常见的Oracle登录语句:1) 使用用户名和密码登录:```sqlplus 用户名/密码@数据库实例名```其中,用户名是登录Oracle数据库的用户名,密码是对应的密码,数据库实例名是Oracle数据库的实例名。
2) 使用用户名和密码登录,指定连接端口:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SID=数据库实例名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号。
3) 使用用户名和密码登录,指定连接服务名:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SERVICE_NAME=服务名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号,服务名是Oracle数据库的服务名。
4) 使用用户名和密码登录,指定连接SID:```sqlplus 用户名/密码@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=T CP)(HOST=主机名或IP)(PORT=端口号)))(CONNECT_DATA=(SID=数据库实例名)))```其中,主机名或IP是Oracle数据库所在的主机名或IP地址,端口号是Oracle数据库监听程序的端口号,数据库实例名是Oracle数据库的实例名。
ORACLE基本SQL语句-用户及建表篇

ORACLE基本SQL语句-⽤户及建表篇⼀、⽤户相关SQL语句/*新建⽤户*/create user SA identified by 2013;说明:SA⽤户名,2013密码/*授权connect,resource给⽤户sa*/grant connect,resource to sa;说明:CONNECT⾓⾊: --是授予最终⽤户的典型权利,最基本的。
ESOURCE ⾓⾊: --是授予开发⼈员的/*查询所有的⽤户*/select * from all_users;/*将表STU查询权限授予SA*/GRANT SELECT ON STU TO SA/*将表STU添加权限授予SA*/GRANT INSERT ON STU TO SA/*将表STU更新权限授予SA*/GRANT UPDATE ON STU TO SA/*将表STU删除权限授予SA*/GRANT DELETE ON STU TO SA⼆、建表篇/*建表指定表空间*/create table KC(KC_NO varchar2(10) not null,KC_NAME varchar2(50) not null) tablespace TEST;create table STU(STU_ID varchar2(10) not null,STU_NAME varchar2(50) not null,STU_AGE number(2) not null,STU_SET number(2) not null,KC_NO varchar2(10) not null) tablespace TEST;说明:本⽂使⽤2张表分别为学⽣表STU,课程表KC,两张表分别存在TEST表空间中。
/*创建约束,设置主键*/ALTER TABLE STU ADD PRIMARY KEY(STU_ID)ALTER TABLE KC ADD PRIMARY KEY(KC_NO)/*查看表空间的表*/Select table_name, tablespace_name from dba_tables where tablespace_name='TEST'/*查询所有的表*/select table_name,tablespace_name,temporary from user_tables。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建表create table person(pid number(10),name varchar2(20),salary number(8,2))设置主键alter table personadd constraint person _id primary key (pid)添加字段alter table personadd (grade number,phone varchar2(20))修改字段alter table personmodify (grade number(2),phone varchar2(50))删除字段alter table persondrop (grade, phone)重命名表rename old_name to new_name;rename person to newperson;删除表drop table newpersonDMLInsert插入insert into stuinfo (sid,sname,sex,age,telephone,address) values (1,'张三','男',18,'1351456977','沈阳')更新数据update stuinfoset sname='王五',age=21where sid=1删除数据delete from stuinfo where sid=1删除所有数据delete from stuinfoselect 用法select * from stutestselect sid,sname from stutestdistinct用法select distinct sex from stutestwhere 子句可以使用的操作符号=, <, >, >=, <=, !=not 用法select * from stutest where not sid=7select * from stutest where not(age>=18 and age<=25) and sex=‘女'between用法select * from stutestwhere (grade between 80 and100)and sex=‘男‘In用法select * from stutestwhere sid in(1,3,5,7,9)like模糊查询(‘_’一个字符,‘%’n个字符)select * from stutest where sname like‘郭_'order by排序用法(默认esc升序,sesc降序)select * from 表名order by 字段desc/ascselect * from stutest order by grade asc,sid desc(先按成绩升序,成绩相同后按学号降序排列)联合查询select * from student,lessionwhere student.sclass=lession.sclass and sid=1select * from student join lession on student.sclass=lession.sclasswhere sid=1表别名select * from student s, lession lwhere s.sclass=l.sclass and sid=1聚合函数sum()作用:返回数字列或计算列的总和例:Select sum(sgrade) from gradeavg()作用:返回一个数字列的平均值例:Select avg(sgrade) from grademax()作用:返回一个数字列的最大值例:Select max(sgrade) from grademin()作用:返回一个数字列的最小值例:Select min(sgrade) from grade作用:返回查询的记录数Select count(*) from studentselect count(distinct sex) from studentGroup by 分组查询字段列表中有聚合函数并且有其他字段时,必须使用group by 分组查询select s.sname , sum(sgrade)from student s ,grade gwhere s.sid=g.sid and s.sid=1group by s.sname说明:1.字段列表中除了聚合函数字段外,其他有多少字段,在group by子句列出多少字段2.where条件,group by,order by的顺序Having用法group by 语句中筛选条件中包含聚合函数,使用having 子句select sid, avg(sgrade)from gradegroup by sidhaving avg(sgrade)>90order by sidselect s.sid,s.sname , avg(sgrade) ,sum(sgrade)from student s,grade gwhere s.sid=g.sidgroup by s.sid,s.snamehaving avg(sgrade)>90 and sum(sgrade)>180order by sum(sgrade) desc日期类型系统时间insert into datetest values(sysdate)日期型数据可以直接加或减一个数值,结果仍为日期两个日期型数据可以相减,结果为二者相差多少天select hiredate ,hiredate+10 from emp;select hiredate ,sysdate-hiredate from emp;select sysdate ,add_months(sysdate,2) from bonus;--当月最后一天select sysdate ,last_day(sysdate) from bonus;--相差月份select sysdate,hiredate,months_between(sysdate,hiredate) from emp;--四舍五入select hiredate ,round(hiredate,'month') from emp;select hiredate ,round(hiredate,'year') from emp;--截取select hiredate ,trunc(hiredate,'month') from emp;select hiredate ,trunc(hiredate,'year') from emp;--下星期几的日期select sysdate ,next_day(sysdate, '星期一') from bonus;(yyyy年mm月dd日day星期几am/pm上午/下午hh小时mi分钟ss秒)insert into datetest values(to_date('8-8月-10'));insert into datetest values(to_date('2010-08-08', 'yyyy-mm-dd'));select * from emp where hiredate>‘1-1月-82’;select * from emp where hiredate>to_date('1982-1-1','yyyy-mm-dd');数字->字符串to_char(number)to_char(number,'format_model')select to_char(12345.678901) from BONUS;select to_char(12345.678901, '$99,999.0000') from BONUS;字符串->数字to_number(char)to_number(char,'format_model')select to_number('$1,600.00', '$9,999.00') from BONUS;(1600)NVL(exp1,exp2)函数表达式exp1的值为null,则返回exp2的值,否则返回exp1的值select empno, ename, sal, comm, sal + nvl(comm, 0) from emp;NVL2(exp1, exp2, exp3)函数表达式exp1的值不为null,则返回exp2的值,否则返回exp3的值select empno, ename, sal, comm, nvl2(comm, sal+comm, sal) total from emp;nullif(exp1, exp2)函数表达式exp1与exp2的值相等则返回null,否则返回exp1的值select name 原名, nullif(pen_name, name) 化名from author;coalesce(exp1, exp2, …)函数依次考察各参数表达式,遇到非null值即停止并返回该值select empno, ename, sal, comm, coalesce(sal+comm, sal, 0) 总收入from emp;case表达式用法select empno, ename, sal,case deptno when 10 then '财务部'when 20 then '研发部'when 30 then '销售部'else '未知部门'endFrom emp;DECODE()函数select empno, ename, sal,decode(deptno, 10, '财务部',20, '研发部',30, '销售部','未知部门')部门from emp;数据完整性主键(primary key)约束;非空(not null)约束;外犍(foreign key )约束;唯一(unique)约束;默认值(default)约束;检查(check)约束。
TopN查询select * from(select rownum mynum , a.* from(select * from emp order by sal desc)a)where mynum>=5 and mynum<=10。