Oracle

sql: 4天

plsql: 2天

proc: 2天

  1. 数据库介绍

    1.1 数据库简介

    1.1.1 数据管理技术的发展

    人工管理阶段:20世纪50年代中期之前

    文件管理阶段:20世纪的50年代末期到60年代中期

    缺点:数据冗余

    数据的不准确

    数据之间的联系弱

    数据库管理阶段:

    数据库技术诞生的三大标志性事件:

    1968年,IBM公司---> IMS

    1969年,DBTG发布了一系列的报告---> 标准和规范

    1970年,IBM的研究员E.F.Codd 发表了一系列论文

    提出了关系模型

    特点:采用复杂的结构化的数据模型

    最低的冗余度

    数据完整性

    数据库系统为用户提供了方便的接口

    控制功能:

    并发控制

    数据库的恢复

    安全性

    系统更加灵活

    信息处理方式不在以程序为中心,而是以数据为中心

    1.1.2 和数据库相关的几个术语

    数据(data):数据库存储的基本对象,包括文字、图形、声音、视频等

    数据库(database):长期存储在计算机内、有组织、可共享的大量数据的集合

    数据库管理系统(DBMS):是位于操作系统和用户之间的一层应用程序,科学的组织、存储数据,高效的获取和维护数据

    数据库系统(DBS): 由数据库、数据库管理系统、应用程序和数据库管理员(或用户) 组成的系统。

    数据库管理员: DBA

    1.1.3 关系数据库

    用二维表保存数据的数据库

    表头 字段





    字段值

1.2 主流的关系型数据库产品

商业型

Oracle Oracle(甲骨文) 10g 11g 12c

DB2 IBM

sql server 微软

sybase

开源

mysql Oracle

1.3 sql语言

SQL(Structured Query Language): 结构化查询语言

SQL分为:

数据查询语言(DQL): select

用来查询数据中的数据 使用最广泛、语法最灵活

数据操作语言(DML): insert delete update

用来改变数据库中的数据

数据定义语句(DDL): create drop alter

用来创建、删除、修改数据库对象

事务控制语句(TCL): commit rollback savepoint

用来保证数据的一致性

数据控制语句(DCL): grant、revoke、create user

用来执行权限的授予和回收、创建用户等

1.4 远程登录服务器

1.4.1 开发工具

sql*plus

sqlplus:oracle提供,和数据库进行交互的工具

命令提示符下的工具

oracle sqldeveloper: 可视化工具

  1.4.2 远程登录
第一步:远程登录服务器
telnet ip
用户名:
密码: 第二步:使用sqlplus工具
sqlplus
输入用户名:
输入密码: 现场班:
telnet 172.60.5.80 或172.60.5.81
用户:oracle
密码: oracle sqlplus
输入用户名: openlab
输入密码: open123 SQL>
sqlplus命令:可以不以分号结尾
sql语句: 必须以分号结尾(学习的内容)

1.5 描述表结构

sqlplus命令:desc

desc 表名[;]

desc s_emp;

Name Null? Type


ID 员工编号 NOT NULL NUMBER(7)

LAST_NAME 姓 NOT NULL VARCHAR2(25)

FIRST_NAME 名 VARCHAR2(25)

USERID VARCHAR2(8)

START_DATE 入职日期 DATE

COMMENTS VARCHAR2(255)

MANAGER_ID 领导编号 NUMBER(7)

TITLE 职位 VARCHAR2(25)

DEPT_ID 部门编号 NUMBER(7)

SALARY 工资 NUMBER(11,2)

COMMISSION_PCT 提成 NUMBER(4,2)

Name:表中的字段名

Null? 该字段是否允许为空

NOT NULL:不允许为空

Type: 字段的数据类型

number(p,s) 数字类型

p: 有效数字的位数(从第一个非零数字开始)

1<=p<=38 默认38

s: 精度

-84<=s<=127

number ---> number(38,0)

number(p) ----> number(p,0)

number(p,s)

varchar2(n) 变长字符串 n不能省略 1~4000bytes

char(n) 定长字符串 n默认为1 1~2000bytes

        date    日期
  1. select语句

    2.1 几个概念

    选择:选中部分行,全部列

    投影:选中全部行,部分列

    表连接:需要的数据来自于多张表

    2.2 select语句的子句

    基本的查询语句: select..from

    where子句

    order by子句

    单行函数

    表连接

    组函数和分组

    子查询

3.select..from语句

select 字段列表 from 表名;

3.1 列出表中一个字段

select 字段名 from 表名;

-- 列出所有员工的工资

select salary from s_emp;

3.2 列出表中的多个字段

select 字段名,字段名,.... from 表名;

-- 列出员工的编号、名字、职位、工资

select id,first_name,title,salary from s_emp;

3.3 列出表中全部字段
--
select id,last_name,first_name,userid,..... from s_emp;
-- 使用 * 代替所有字段
select * from s_emp; 3.4 算数运算 一般指的是数字类型
+ - * /
-- 列出员工的信息,包括编号、名字、工资、年收入
12*salary + 1000
select id,first_name,salary,12*salary+1000 from s_emp; 3.5 字段或表达式 命名 别名
3.5.1 语法
字段或表达式 [as] 别名
select id,first_name as name,salary,
12*salary+1000 yearsal from s_emp;
3.5.2 使用 ""
-- 屏蔽特殊字符或关键字等
select id,first_name as name,salary,
12*salary+1000 "year sal" from s_emp;
-- 大小写敏感
select id,first_name as name,salary,
12*salary+1000 "YearSal" from s_emp;

3.6 sql中的字符串

3.6.1 字符串的表示方式

单引号:''

'a' 'Hello world'

3.6.2 字符串的拼接

||

-- 把员工的first_name和last_name拼接起来

select id,first_name||last_name as name from s_emp;

-- 把员工的first_name和last_name之间拼接一个 .

select id,first_name||'.'||last_name as name

from s_emp;

-- 把员工的first_name和last_name之间拼接一个 '

使用转义字符:'

select id,first_name||''''||last_name as name

from s_emp;

3.7 NULL值的处理

-- 计算员工的年收入,考虑提成

12salary + 12salarycommission_pct/100

12
salary(1+commission_pct/100)

-- 下面语句的结果集是错误的

select id,first_name,title,

12
salary*(1+commission_pct/100) as yearsal

from s_emp;

NULL值参与运算的表达式的结果为空

  使用函数 nvl 处理NULL值
nvl(par1,par2) : 当par1不为空,返回par1
放par1为空,返回par2
nvl(12*salary*(1+commission_pct/100),12*salary)
12*salary*(1+nvl(commission_pct,0)/100) select id,first_name,salary,
12*salary*(1+nvl(commission_pct,0)/100) as yearsal
from s_emp;

3.8 排重 distinct

-- 列出员工的职位

select distinct title from s_emp;

-- 多列排重

select distinct title,dept_id from s_emp;

  1. where子句

    select ...

    from ..

    where 条件;

    4.1 作用

    根据条件对表中的数据进行筛选,挑选出符合条件的行

    4.2 数字类型的条件

    -- 列出工资大于1400的员工的信息

    select id,first_name,salary from s_emp

    where salary>1400;

    4.3 字符串类型的条件

    -- 列出名字为'Ben'的员工的信息

    select id,first_name,salary from s_emp

    where first_name = 'Ben'; -- 有一行结果

    select id,first_name,salary from s_emp

    where first_name = 'ben'; -- 没有结果

    -- sql中没有 ==

    -- sql中不区分大小写,但是字符串的值是区分的

    4.4 比较运算符

    > < >= <= = !=(<> ^=)

    4.5 sql提供的运算符

    4.5.1 表示一个闭区间 [a,b]

    between a and b

    -- 列出工资在[1100,1550] 之间的员工的信息

    select id,first_name,salary from s_emp

    where salary between 1100 and 1550;

    4.5.2 表示一个列表

    in(值1,值2,...)

    address in('北京','上海','广州')

    -- 列出部门编号为 31,42,50的员工的信息

    select id,first_name,dept_id from s_emp

    where dept_id in(31,42,50);

    4.5.3 模糊查询
    like '包含通配符的字符串' 通配符:
    %: 任意长度的任意字符
    _: 一位任意字符 StuName like '李_%' -- 列出first_name首字母为'M'的员工的信息
    select id,first_name from s_emp
    where first_name like 'M%';
    -- 列出first_name第二个字母为'a'的员工的信息
    select id,first_name from s_emp
    where first_name like '_a%'; user_tables: 数字字典 保存当前用户的所有表的信息
    desc user_tables;
    -- 列出user_tables中以'S_'开头的表的信息
    select table_name from user_tables
    where table_name like 'S_%';
    -- 使用转义字符 escape
    select table_name from user_tables
    where table_name like 'S\_%' escape '\';

    4.5.4 空值的判断

    is null

     -- 列出manager_id为空的员工的信息
    select id,first_name,title from s_emp
    where manager_id = null;
    select id,first_name,title from s_emp
    where manager_id != null;
    -- 使用=或!=判断null值,结果永远为假 select id,first_name,title from s_emp
    where manager_id is null;

    4.6 sql中的逻辑运算符

    and or not

    -- 使用and改写 between and 案例

    列出工资在[1100,1550]之间的员工的信息

    select id,first_name,salary from s_emp

    where salary between 1100 and 1550;

    select id,first_name,salary from s_emp

    where salary>=1100 and salary<=1550;

    -- 使用or改写 in 案例

    列出编号为31,42,50的部门的员工的信息

    select id,first_name,dept_id from s_emp

    where dept_id in(31,42,50);

    select id,first_name,dept_id from s_emp

    where dept_id=31 or dept_id=42 or dept_id=50;

    对立面:
    > <=
    < >=
    = !=(<> ^=) between and not between and
    in not in(注意NULL值)
    like not like
    is null is not null -- 列出有提成的员工的信息
    select id,first_name,commission_pct from s_emp
    where commission_pct is not null;
  2. order by子句

    5.1 总是出现在一条select语句的最后

    select 字段列表

    from 表名

    where 子句

    ......

    order by子句;

    5.2 语法

    order by 排序标准 排序方式

    排序方式:

    asc 升序 (自然顺序、字典顺序) 默认排序方式

    desc 降序

    5.3 按照工资降序排序,列出dept_id为31,32,33的员工的信息

    select id,first_name,salary,dept_id from s_emp

    where dept_id in(31,32,33)

    order by salary desc;

    5.4 多列排序

    select id,first_name,salary from s_emp

    order by salary;

     order by 排序标准1 排序方式,排序标准2 排序方式

    select id,first_name,salary from s_emp

    order by salary,id desc;

    -- 多列排序时,每一个排序标准的排序方式是自己定义的

    5.5 排序时,默认按照最大值处理

    -- 根据manager_id排序,列出员工的信息

    select id,first_name,manager_id from s_emp

    order by manager_id desc;

    -----------------------------------------------------------------总结

    1.数据库介绍

    sql语言

    sqlplus的命令:desc

    数据类型

    2.select语句

    3.select...from

    4.where子句

    比较运算符:> < >= <= = !=(<> ^=)

    sql提供的运算符

    between and

    in

    like

    is null

    sql中的逻辑运算符

    and or not

  3. order by子句


练习:

  1. 查看s_dept和s_region表的表结构
  2. 查询s_dept和s_region表中的数据
  3. 计算员工的年收入,列出年收入大于15000的员工的信息,

    并对年收入进行降序排序。

Context、Select(day01)的更多相关文章

  1. Python之路-python(Queue队列、进程、Gevent协程、Select\Poll\Epoll异步IO与事件驱动)

    一.进程: 1.语法 2.进程间通讯 3.进程池 二.Gevent协程 三.Select\Poll\Epoll异步IO与事件驱动 一.进程: 1.语法 简单的启动线程语法 def run(name): ...

  2. Esper系列(九)NamedWindow语法create、Insert、select

    功能:用于存储一种或多种类型的事件的集合,并能对所存储的事件进行增删改查操作. CreateNameWindow 根据已有的数据源构造 格式: 1  [context context_name]  2 ...

  3. [转]jQuery操作radio、checkbox、select 集合.

    1.radio:单选框 html代码 <input type="radio" name="radio" id="radio1" val ...

  4. JS/JQuery针对不同类型元素的操作(radio、select、checkbox)

    一.select下拉框 I:javascript方法 1:获取选中的值 F1:   var  myselect=document.getElementById("test");或者 ...

  5. Linux平台延时之sleep、usleep、nanosleep、select比较

    Linux平台延时之sleep.usleep.nanosleep.select比较 标签: 嵌入式thread线程cpu多线程 2015-05-05 15:28 369人阅读 评论(0) 收藏 举报 ...

  6. 第十天 多进程、协程(multiprocessing、greenlet、gevent、gevent.monkey、select、selector)

    1.多进程实现方式(类似于多线程) import multiprocessing import time,threading def thread_run():#定义一个线程函数 print(&quo ...

  7. css取消input、select默认样式(手机端)

    IOS端: background-color:transparent; border-color:transparent; andorid端: 仅仅使用上面的代码还不够,可以发现select框在某些浏 ...

  8. Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html

    Jquery 操作Html 控件 CheckBox.Radio.Select 控件   在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio ...

  9. input、select等表单元素的对齐问题

    今天在写页面时,发现了一个问题,当INPUT.SELECT及用图片做的button放在一起(并排放一起)时,没法子对齐,自己以不愿再加其他代码.也不愿使用JS来实现图片button的效果,试好半天,发 ...

随机推荐

  1. HDU 5435

    数位DP题,然而不会做.设dp[i][j]表示前i位异或和为j的时候的个数.先dp出所有的可能组合使得异或和为j的个数,然后按位进行枚举.对于dp[i][j],其实不止是前i位,对于后i位的情况同样适 ...

  2. 编程之美初赛第二场AB

    题目1 : 扑克牌 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一副不含王的扑克牌由52张牌组成,由红桃.黑桃.梅花.方块4组牌组成,每组13张不同的面值.现在给定52 ...

  3. tabBar颜色改动

    //未点击的颜色 [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKey ...

  4. SolrCloud 分布式集群部署步骤

    https://segmentfault.com/a/1190000000595712 SolrCloud 分布式集群部署步骤 solr solrcloud zookeeper apache-tomc ...

  5. 完美解决 linux sublime 中文无法输入

    感谢oschina 中几位前辈的分享 下面是我结合自己的情况所配置的具体步骤: 系统环境: ubuntu 12.10 输入法:fcitx fcitx 安装 apt-get install fcitx ...

  6. 两个向量之间的欧式距离及radial-basis-functions(RBF)

    template <class DataType1, class DataType2>double EuclideanDistance(std::vector<DataType1&g ...

  7. 603E

    LCT维护MST+子树信息 看了好长时间题解 editorial 结论:像做最小生成树一样,当每个连通块都是偶数个点就停下来. 每次复杂度mlogm 口胡 首先我们发现奇数个点是不满足每个点度数为奇数 ...

  8. 87.Ext_菜单组件_Ext.menu.Menu

    转自:https://blog.csdn.net/lms1256012967/article/details/52574921 菜单组件常用配置: /* Ext.menu.Menu主要配置项表: it ...

  9. 机器人走迷宫(dfs)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1590 #include <stdio.h ...

  10. IP Address

    http://poj.org/problem?id=2105 #include<stdio.h> #include<string.h> int main() { ]; ] = ...