当前位置:文档之家› oracle基本语法(增删改查)

oracle基本语法(增删改查)

oracle基本语法(增删改查)
oracle基本语法(增删改查)

安装PL/SQL Developer

前提:必须安装Oracle的客户端

卸载:

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

Command Window --> SQLPLUS

SQL Window -->用来开发SQL程序

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

数据库

增删改--> 30%

查--> 70%

------------------------------------------------------------------------------ 创建表:

create table 表名(

列1 类型,

列2 类型

);

字符类型

char -->定长字符串

name char(10)

-->保存一个值到name

'abc' --实际存储后的结果是--> 'abc '

varchar2 -->变长字符串

name varchar2(10)

-->保存一个值到name

'abc' --实际存储后的结果是--> 'abc'

clob -->保存超大文本4G

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

数字类型

所有的数字(整数,浮点数)都是number

定义一个工资的保存列

sal number(5,2)

-999.99 ~ 999.99

年龄

age number(2)

-99 ~ 99

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

日期类型

date -->保存年月日,时分秒

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

二进制类型

BLOB -->最大不能超过4G;

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

表结构的基本操作:

0、查看表结构

desc表名

1、添加一个字段

alter table 表名add(列类型);

2、修改字段类型

alter table 表名modify(列类型);

3、删除一个字段

alter table 表名drop column 列名;

4、修改表的名字

rename student to stu

5、删除表

drop table 表名

** 如果需要修改列的名字

新增一个字段,然后迁移数据,最后删除原字段

或者使用图形化工具

如果有值,这种删除,是没有办法恢复的。。

上述修改表结构相关的语句叫做DDL ,修改,是没有办法恢复的

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

插入数据

create table test(

id number,

name varchar2(20),

age number(2)

);

1)

insert into 表名values(所有列的值);

insert into test values(1,'zhangsan',20);

2)

insert into 表名(列) values(对应的值);

insert into test(id,name) values(2,'lisi');

insert into test(name,age) values('wangwu',20);

-------------------------------------------------------------------------------------------------- 更新语句

update 表set 列=新的值[where 条件] --》更新满足条件的记录

update test set name='zhangsan2' where name='zhangsan'

update 表set 列=新的值--》更新所有的数据

update test set age =20;

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

**删除数据:

几种删除方式:

1)

delete from 表名where 条件-->删除满足条件的记录

delete from test where id = 1;

delete from test ; -->删除所有

commit; -->提交数据

rollback; -->回滚数据

delete方式可以恢复删除的数据,但是提交了,就没办法了

delete删除的时候,会记录日志--》删除会很慢很慢

2)

truncate table 表名

删除所有数据,不会影响表结构,不会记录日志,数据不能恢复--》删除很快

3)

drop table 表名

删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复-->删除很快

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

如何查看一个SQL执行了多长时间?

set timing on

小技巧:

如何快速的复制数据?

1、insert into test select * from test;

2、create table 表名select * from test;

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

查询:基本查询,复杂查询

1、导入数据

sqlplus状态下:

@文件名

基本查询

select 列from 表名

select * from 表名--》所有列

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

1、去除重复的显示

select distinct列from 表名

2、算术运算,不能把NULL参与运算

nvl(列,值) --》如果列为空,则用“值”替换NULL

nvl(comm,0) --->如果comm为空,返回0

每一个列都可以取别名

3、如何连接字符串||

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

日期类型:

to_date(字符串1,字符串2) -->字符串1 是日期的字符串,字符串2 是格式,返回一个日

期类型。

to_date('1990-1-1','yyyy-mm-dd') -->返回日期类型的1990-1-1

to_date('1990-1-1 13:30:10','yyyy-mm-dd hh24:mi:ss') -->返回日期类型的1990-1-113:30:10 SQL的模糊查询:

like :匹配字符%:0到多个字符_:表示单个字符

如果涉及到NULL

判断is NULL , is not null

查询结果需要排序

order by 字段

select * from emp order by sal --》order by后面,默认升序

asc升序

desc降序

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

Oracle的复杂查询,统计函数,分组

sum, count ,avg, max, min

----分组:

student

name sex class score

zhangsan男10 90

李四男10 60

zhang女10 86

王五女20 90

统计每个班的最高分

max(score)

10

zhangsan男10 90 --> 90

李四男10 60

20

王五女20 90 --> 90

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

统计每个班的男生和女生分别的最高分

分组:

class sex

max(score)

10 男

zhangsan男10 90 --> 90

李四男10 60

10 女

zhang女10 86 --> 86

20 女

王五女20 90 -->90

统计函数不能跟在where条件后面

-

group by 和having子句

group by 字段-->按照指定的字段进行分组

having 字句--》对分组后的结果进行筛选输出

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

一般来说,group by后面的字段,最好出现在select后面统计函数统计的是每一个分组的结果!!!

----------

关键字出现的顺序

select ???from ....where ... group by ... having ... order by ....

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

笛卡尔积

两个集合相乘的结果

14* 4 =56

有对的记录,有错的记录,必须加条件筛选正确的记录-------------------------

Oracle基本语法

Oracle的历史 ?Oracle 公司( 甲骨文) 创始人: Larry Ellison 32岁,公司提供数据库服务. ?公司成立于1977 年, 83 年公司更名为Oracle ,原名为”软件开发实验室”. ?Oracle 数据库适用于大型企业 ?竞争对手 –微软的SQLServer –IBM 的DB2 ?目前的版本 – 2.0~7.0 , 8.0 , 8i , 9i , 10g Oracle的服务: 我的电脑右键选择管理--服务和应用程序—服务 -----是数据库或例程的系统标识符 ------是Oracle主目录名称 这几个服务之间的关系: 启动顺序:1、OracleTNSListener必须启动 2、OracleServer必须启动 3、OracleDBConsole启动依赖于OracleServer SqlPlus SqlPlus是Oracle任何版本都自带的数据库操作工具,使用它可以完成大部分的数据库操作。 SqlPlus可以“开始→程序→Oracle”启动,也可以命令行启动(互动) 1.命令行启动sqlPlus sqlplus 用户名/密码@orcl

或 sqlplus 用户名@orcl 如果用户是管理员要在sqlplus 用户名/密码@主机字符串as sysdba “/”是用户名和密码分隔符号 “@”是密码和数据库的分隔符号 “orcl”是数据库的名称,在安装时指定 常用命令(互动) connect 切换用户 show user 显示当前用户 set linesize 1000 设置行显示长度 set pagesize 1000 设置分页长度 desc dept 查看表结构 select table_name from user_tables 查询当前用户的表 / 运行上一条SQL语句 clear screen 清除屏幕 edit 编辑 spool d:/a 保存输出结果到某个位置 spool off 保存结束 quit 退出 list 查看最后一条语句 @ 文件名.sql 运行外部文件中的SQL语句

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

ORACLE 11g SELECT 语句基础语法

一、SELECT语句基础语法 SELECT [ALL |DISTINCT TOP N [PERCENT] WITH TIES SELECT_LIST #SELECT 子句,用于指定由查询返回的列。 [INTO [new_table_name]] #INTO子句,将检索结果存储到新表或视图中。 FROM {table_name|view_name} [(optimizer_hints)],... #FROM子句,用于指定引用的表或视图,需指定多个表或视图,用“,”分开即可。[WHERE search_condition] #WHERE子句,用于指定限制返回的行的搜索条件,若无此子句,则默认表中的所有行都满足条件。 [GROUP BY group_by_expression] #GROUP BY子句,指定用来放置输出行的组,并且如果SELECT子句中