主要内容:

》oracle 数据类型

》sql建表和约束

》sql对数九的增删改

》sql查询

》oracle伪例

1、oracle的数据类型

oracle数据库的核心是表,表中常见的数据类型有:

char(length):存储固定长度的字符串,length默认1,最长2000

varchar2(length):存储可变长度的字符串,length默认长度是1,最大4000

number(p,s)存储浮点数或者是整数,p表示的是最大位数(包含小数点),p默认是38,s表示小数位数

date:存储日期和时间

timestamp;存储日期的年月日,时分秒,以及秒后面刘伟,同时包含时区

clob ; 存储大的文本,比如非结构化的XML文档

BLOB 存储二进制对象,如图形,视频,声音等

下面对上面的部分数据类型举例:

(1)number

格式             输入的数字        实际的存储

number         2.3334    2.3334

number(5,2)4.223          4.22

number(5,2)     4.3333334  输入的数字超过了指定的精度,数据库不能存储

对于日期类型,可以使用sysdate的内置函数可以获取当前的系统日期和时间,返回date类型,用systimestamp函数可以返回当前日期、时间和时区

SQL> select sysdate,systimestamp from dual;

SYSDATE
---------
SYSTIMESTAMP
---------------------------------------------------------------------------
20-APR-16
20-APR-16 10.45.35.192191 AM +08:00

注:oracle在查询的时候当查询单行函数的时候,from 后面使用dual 表,dual表在系统中只有一行一列,该表在输出单行函数的时候是为了select语法的完整性而使用的。

2》创建表和约束

代码演示

SQL> create table yizheninfos
  2  (
  3  stuid varchar2(7) not null,
  4  stuname varchar2(10) not null,
  5  gender varchar2(2) not null,
  6  age number(2) not null,
  7  seat number(2) not null,
  8  enrolldate date,
  9  stuaddress varchar2(50) default '地址不详',
 10  classno varchar2(4) not null
 11  )
 12  /

Table created.

SQL> alter table yizheninfos add constraint PK_yizhen primary key(stuid)
  2  /

Table altered.----->这条sql语句的作用是创建一个主键约束,下面的其他sql语句的作用就是创建各种check 约束

SQL> alter table yizheninfos add constraint ck_yizhender check(gender = '男' or gender = '女')
  2  /

Table altered.

SQL> alter table yizheninfos add constraint ck_yizhent check(seat >= 0 and seat <= 50)
  2  /

Table altered.

SQL> alter table yizheninfos add constraint ck_yizhenssno check(classno > '1001' and classno <='1999' or
  2  (classno >='2001' and classno <='2999'))
  3  /

Table altered.

SQL> alter table yizheninfos add constraints un_stuname unique(stuname)
  2  /

Table altered.----》这条sql语句的作用就是创建一个唯一约束,表示该列值是唯一的,列中的值不能重复。

代码解析:

在oracle中,“/” 代表的是执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过的语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/”

现在来举例展示一下外键的约束定义

SQL> create table scores
  2  (
  3  id number,                             ----》ID
  4  term varchar2(2),                   ----》学期为s1或s2
  5  stuid varchar2(7) not null,       ----》学号
  6  examno varchar2(7) not null,   ----》考号
  7  writtenscore number(4,1) not null,  ----》笔试成绩
  8  labscore number(4,1) not null         ----》机试成绩
  9  )
 10  /

Table created.

SQL> alter table scores
  2  add constraint ck_scores_term check(term = 's1' or term ='s2')
  3  /

Table altered.

SQL> alter table scores
  2  add constraint fk_scores_yizheninfos_stuid foreign key(stuid) references yizheninfos(stuid)
  3  /

Table altered.---->这就是外键的约束定义

4.数据操作语言(DML)

DML用于对数据库的表中数据进行添加,修改,删除和select....for ,update等

》》4.1简单查询

数据查询是用select 命令从数据库的表中提取信息

select 列名  from  表名  where  条件  order by 列名

注:order by 要求在查询的结果中排序,默认是升序

》》4.2根据查询结果创建表

create table  表名  as  select 语句

代码演示

SQL> create table yizheninfosss as select * from yizheninfos ;

SQL> create table yizheninfossssss as select * from yizheninfos where 1=2;
第一条命令不存在认得的约束,并且把查询结果一起插入到新表中

第二条命令只是复制一个表结构,没有任何的数据(因为1=2的这个条件不成立)

》》4.3  数据的插入----insert

insert into 表名(列1,列2,列3......) values (值1,值2,值3.....)

语法解析:

(1)这里的列名是可以省略的,当省略列名的时候,默认是表中的所有列名,列名顺序为表定义中列的先后手顺序。

(2)这里的值的数量和顺序要和列名的数量和顺序一致,值的类型和列名的类型一致。

在 Oracle 中,日期是国际化的,不同的区域安装的数据库,默认的日期格式不同,

因此为了程序便于移植,日期的输入要使用 TO_DATE 函数对日期格式化后输入,采
用格式化字符串对日期进行格式化时,格式化字符串中字符不区分大小写,常见的
格式化字符如下:
1. yyyy 表示四位年份
2. mm 表示两位月份,比如 3 月表示为 03
3. dd 表示两位日期
4. hh24 表示小时从 0-23, hh12 也表示小时从 0-11。
5. mi 表示分钟
6. ss 表示秒
③ 在遇到存在默认值的列时,可以使用 default 值代替。
④ commit 是把用户操作(添加、删除、修改操作)提交,只有提交操作后,数据才
能真正更新到表中,否则其他用户无法查询到当前用户操作的结果。
在 Oracle 中,一个 INSERT 命令可以把一个结果集一次性插入到一张表中。使用的语句
是: INSERT INTO

比如说:

insert into info infos2 select * from yizheninfos;

这种情况,infos2和yizheninfos这两张表中的数据类型必须每一类的数据类型一致,这样就可以把yizheninfos表中的数据全部的插入到infos2这个表中

(这里也可以再后面的select 语句中添加条件,把符合一定条件的内同插入到infos2这个表中)

》》4.4更新数据

语法结构:

update  表名  set   列名1=值1,列名2=值2.....where  条件

这里执行完update,或者insert等之后需要执行commit 操作,具体原因参考:http://www.cnblogs.com/smail-bao/p/5431193.html

》》4.5 删除数据

删除数据的语法是:

delete  from 表名 where 条件

还有一条删除命令       truncate

truncate 命令可以把表中的所有数据一次性全部删除

语法结构:

truncate table   表名

truncate  和  delete  都可以把表中的数据全部删除,他们的区别是:

(1)truncate 是 DDL命令,删除的数据不可恢复,delete命令是DML命令,删除后的数据可以通过日志文件来恢复

(2)如果一个表中的数据记录了很多,truncate 相对delete命令速度快(确定没用的情况下,慎用,慎用。。。。。)

5.操作符

》》算术运算

》》关系运算

》》逻辑运算

》》5.1 算术运算

oracle 的算术运算只有+,—,*,/这四个,其中的除号“/”的结果是浮点数,其余的运算只能借助函数,比如说

MOD(x,y)返回的是x除以y的余数

》》5.2关系运算和逻辑运算

oracle 中where 字句经常见到关系运算和逻辑运算,常见的关系运算有:=   、 <   、 > 、 !=等

逻辑运算符有三个,and、or、not

》》5.3字符串连接操作符(||)

在oracle中,字符串的连接用   ||   表示

注:oracle中字符串可以用单引号,也可以用双引号,当别名中存在空格的时候,必须用双引号,在表名、列名是用双引号

6.高级查询

 》》6.1消除重复行

在查询中如果出现若干行相同的情况,那么可以使用distinct 消除重复行

语法:select distinct  stuname from EMP;

 》》6.2NULL操作

如果某一条记录上缺少数据值,就是控制(NULL值),空值不等于0或者空格,空值是指未赋值,未知或者是不可用的值,任何数据类型的列都可以包括

NULL值,除非该列被定义为非空或者是主键

条件查询的时候如果要查NULL值的则:....where name is null

 》》6.3 in操作

where条件查询的时候可以使用in操作来查询其列值在指定的列表中的行

比如说:

where  job  in  (‘salesman’,'president','analyst')

同理,也可以使用    not in,用法一样

 》》6.4  between.....and....指定的范围

比如说

where  age >20 and age < 50

也可以使用:

where age between 20 and 50

》》6.5   like   模糊查询

模糊查询结合字符匹配来检索所需要的数据行,字符匹配可以使用通配符

% :  表示一个或者多个任意字符

_:     代表一个任意字符

注:匹配的字符串中,escape后面的“字符”作为转义字符。

比如说:

’%30\%%‘ escape '\'    :指的就是包含%30的之歌字符串,“\”,表示的是转义字符,“\%”在字符串中表示一个字符“%”

’_s%‘:表示的是第二个字符为   s   的字符串

sql语句举例:

select  ENAME,JOB,SAL   from   yizheninfos   where  ENAME like 'B%S'

这就是找出ENAME 是以    B    开头的    S    结尾的所有ENAME,JOB,SALENAME,JOB,SAL信息

》》6.6 集合运算

注释:集合运算就是将两个或者多个结果集组合成为一个结果集,集合运算包括:

》intersect(交集):

》union all(并集):返回各个查询的所有记录,包括重复记录
》union(并集):返回各个查询的所有记录,不包括重复记录

》minus(补集):返回第一个查询检索出来的记录减去第二个查询检索出的记录之后剩余的记录

注:: 当使用集合操作的时候,要注意:查询所返回的列数以及列的类型必须匹配,列名可以
不同。

举例说明:

select depinfo from DEPT

minus(这里或者使用union,interset等等)

select depinfo from EMP

上面举例说的是并集

注:这里我们可以使用insert into .......select 把一个结果集插入到另一张表结构相同的表中,因为可以使用union把若干条查询记录一次性插入到一张表中

举例:

insert into yizheninfos

select 50,'公关部','台湾' from dual

union

select 60,'研发部','韩国' from dual

union

select 70,'市场部','香港' from dual

/

》》6.7连接查询

oracle  中对两个表或者若干张表之间的外联接使用   (+)   表示

内联接(inner join)

案列:查询出员工工资大于30000的员工姓名,部门,工作,工资
,部门名称在dept表中,其他的信息在emp中,需要内联接才能完成

select e.ename,e.job,e.sal,d.dname

from emp e,dept d

where e.deptid=d.deptid

and e.sal>30000

使用内连接的代码如下所示:

select e.ename,e.job,e.sal,d.dname

from emp e INNER JOIN dept d ON e.deptid=d.deptid

where e.sal>3000

这里的INNER JOIN中,关键字INNER可以省略

案列:查询出每个部门下的员工姓名,工资案例分析:EMP表使用外键deptno引用Dept表中的deptno,在Dept表中如果有某些部门没有员工,那么用内联接,则没有员工的部门将无法显示,所以必须以Dept表为基准的外联接

select e.ENAME,e.JOB,e.SAL,d.DNAME

from EMP e.DEPT d

where e.DEPTNO(+)=d.DEPTNO

代码解析:这里的(+)表示的是Oracle专用的外联接符号,在条件中出现在左边就叫右外联接,出现在右边就叫做左外联接

上面的嗲吗也可以使用标准写法:

select e.ENAME,e.JOB,e.SAL,d.DNAME

FROM EMP e RIGHT OUTER JOIN DEPT d

ON e.DEPTNO=d.DEPTNO

关键字OUTER可以省略,和内连接差不多,推荐使用这种标准写法

本章学习总结:

 Oracle SQL 语句中有数据操纵语言( DML)、数据定义语言( DDL)、数据控制语言
( DCL)、事务控制语言( TCL)等等。
 DML 语句包括增删改查语句, DDL 语句包括数据库对象创建、修改和删除语句,数
据控制命令包括 GRANT、 REVOKE 等,事务控制命令有 COMMIT、 ROLLBACK 等。
 数据库中建表常用的类型有:数字类型 number ( p,s),可变字符串 varchar2 ( length),
日期 date。
 Oracle 中 default 是一个值,在 Oracle 中不存在 default 约束。
 Oracle 的增删改语句与 SQL Server 基本一致,都是使用 INSERT、 UPDATE、 DELETE
完成。
 Oracle 高级查询中要注意: DISTINCT、 NULL、 IN、 BETWEEN…AND…。
 集合操作有: UNION、 UNION ALL、 INTESECT、 MINUS。

oracle-2-sql数据操作和查询的更多相关文章

  1. SQL数据操作和查询

    1.Oracle中可以把查询的结果根据结果集中的表结构和数据形成一张新表. CREATE TABLE 表名 AS SELECT语句,例如: CREATE TABLE INFOS1 AS SELECT  ...

  2. 《MySQL数据操作与查询》- 综合项目 - 学生管理系统

    <MySQL数据操作与查询>综合项目需求 一.系统整体功能 维护学生信息.老师信息和成绩信息. 支持按多种条件组合查询学生信息和成绩信息. 二.系统的信息需求 一个班级有一个讲师一个班主任 ...

  3. [.NET] SQL数据总笔数查询

    [.NET] SQL数据总笔数查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...

  4. SQL 数据操作(实验六)

    SQL 数据操作 emp.dept 目标表结构及数据 INSERT 命令的使用与结果验证 2.1把一名新来雇员信息插入到EMP表中:雇员号:1011 姓名: 王晓明 入职日期:今天 ```insert ...

  5. MySQL数据操作与查询笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...

  6. SQL Server温故系列(2):SQL 数据操作 CRUD 之简单查询

    1.查询语句 SELECT 1.1.查询语句的 SELECT 子句 1.2.查询语句的 FROM 子句 1.2.1.内连接查询 INNER JOIN 1.2.2.外连接查询 OUTER JOIN 1. ...

  7. oracle (6)---SQL 数据关联查询

    SQL 数据关联查询 Structure Query Language 从多(n)张表查询对应记录信息,必须有至少n-1个关联条件,否则会出现笛卡尔积的情况.1. 等值连接:没有连接关系的数据不会被查 ...

  8. SQLite支持的SQL数据操作

    事务处理 Posted on 2013 年 1 月 1 日 by 林溪   事务为一组SQL命令的集合,这些SQL命令在执行时不可进行分割,即要么全部执行这些SQL命令,要么一个都不进行执行,事务操作 ...

  9. sql server操作2:查询数据库语句大全【转】

    注:以下操作均建立在上篇文章sql Server操作1的数据基础之上 一.实验目的 熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询 二.实验内容和要求 使用SQL查询分析器查询数据,练 ...

随机推荐

  1. openfire+asmack搭建的安卓即时通讯(五) 15.4.12

    这一篇博客其实是要昨天写的,但昨天做了作修改就停不下来了,这次的修改应该是前期开发的最终回了,其余的功能有空再做了,下周可能要做一些好玩的东西,敬请期待! 1.修改下Logo:(Just We) ht ...

  2. UVALive 5966 Blade and Sword -- 搜索(中等题)

    题意:给一幅地图,P为起点,D为终点,'*'为传送阵,到达传送阵可以传到任意一个其他的传送阵,传到以后可以正常走或者再传回来,问P->D最短步数. 分析:这题一定要细心,分析要到位才能搞定,错一 ...

  3. Android中Adapter之BaseAdapter使用

    Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法.         Android中Adapte ...

  4. 权限框架 - shiro 授权demo

    之前说了权限认证,其实也就是登录验证身份 这次来说说shiro的授权 shiro可以针对角色授权,或者访问资源授权 两者都行,但是在如今的复杂系统中,当然使用后者,如果你是小系统或者私活的话,前者即可 ...

  5. Auto Clear Unity Console Log

    功能 可以在Editor模式下执行,当然也可以Runtime模式下执行,自动清除 Console的log信息 功能需求 当在制作Editor的一些功能时,常常需要手动的点击Console窗口的Clea ...

  6. ABP入门系列(6)——展现层实现增删改查

    这一章节将通过完善Controller.View.ViewModel,来实现展现层的增删改查.最终实现效果如下图: 一.定义Controller ABP对ASP.NET MVC Controllers ...

  7. ng-bind的使用

    由于JS是单线程的,当HTML页面执行alert的时候,会中断下面代码的运行,所以为了良好的用户体验,当需要在页面使用{{name}}的时候,通常不这样直接输出,而是用ng-bind绑定model数据 ...

  8. U3D physics总结

    物理系统基于collider, 没有collider的物体不会发生任何主动和被动的物理交互,也不会产生trigger相关消息. 当且仅当A和B都有碰撞体时,两者才有可能发生交互,才有可能产生trigg ...

  9. U3D5.3.5f Monodevelop 仅支持到.NET 3.5

    2016年12月2号:发现这个标题是错误的,可以在monodevelop中选择.NET的版本,如下:打开solution,右击 Assembly-CSharp,options, build, gene ...

  10. SignalR 实现web浏览器客户端与服务端的推送功能

    SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话. 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换:它将继 ...