哥也是Oracle数据库的初学者,总结了一份Oracle数据库的的课堂笔记,共享给通道中者。
一.数据库的定义(DataBase:DB)
1.历史
2.数据库产品
Oracle, DB2(IBM), Sybase(Sybase)
sql server(微软), mysql(Oracle)
access
3.数据库是存放数据/访问数据/维护数据的存储仓库.
4.数据库软件由两部分组成:数据存储的仓库/管理系统(DBMS:Database Managment System)
5.数据库中数据的主要载体: 表(Table)
二维表:横向:行,记录(record)
纵向:域,列(column)
二.数据库的简单操作
1.连接数据库的方式
1)远程登录到数据库服务器:
C:>telnet 192.168.0.26
openlab/open123
2)使用数据库的工具sqlplus连接到数据库
$ sqlplus openlab/open123
sqlplus:数据库的客户端命令行工具.
用户和数据库的沟通工具.
2.创建一个用户表,存放考生信息.
SQL> create table users_ninglj(
id number,
password char(4),
name char(20),
phone char(11),
email char(30)
);
1)关键字:create table
2)表名:users_ninglj自定义,不超过30个字符
3)列名:id/password/name/phone/email自定义
4)数据类型:number:数字,char:字符串
5)以分号结束
6)每个列之间用逗号隔开,最后一个列没有逗号.
SQL:Structured Query Language
结构化查询语言
和数据库沟通的途径
3.增加数据到表users_ninglj中.
insert into users_ninglj
values(1001, '1234', 'liucs',
'13600000000','liucs@tarena.com.cn')
;
insert into users_ninglj
values(1002, '1234', 'zhangwuji',
'13700000000','zwj@tarena.com.cn')
;
insert into users_ninglj
values(1003, '1234', 'zhaomin',
'13800000000','zm@tarena.com.cn')
;
insert into users_ninglj
values(1004, '1234', 'tom',
'13900000000','tom@sina.com')
;
4.查询刚刚增加的数据:
select * from users_ninglj;
5.调整格式:
SQL指令,只在sqlplus工具中有用
SQL>column 列名 format 格式
column name format a10 --10位字符
column id format 9999 --四位数字
col id for 9999 --简写形式
而SQL语句(create / insert / select)
在不同数据库中是通用的.
小结:语句的种类:
1.create: 创建语句
2.insert into 表名 values(列数据);
插入语句(新增语句)
3.select * from 表名; 查询语句
查询是否有1001/1234的用户:
select name from users_ninglj
where id = 1001 and password = '1234';
常用的数据类型:
数字类型: number
number(4): 最多4位数字
number(7,2):共7为,2位小数
99999.99
字符类型: char : 定长字符串
char(10)占据10个长度的空间
不管数据多长,都占据10个长度
varchar :变长字符串
varchar(10):根据字符数据的 实际长度决定空间大小.
varchar2:变长字符串
oracle独有的
create table myuser(
id number(4),
name char(10),
email varchar(20)
);
insert into myuser
values(1, 'tom', 'tom@sina.com');
日期:date 7位日期数据
java取系统时间:
Calendar.getInstance();
oracle取系统时间:
select sysdate from dual;
默认格式: 08-OCT-11
DD-MON-RR , 不是YY
当前年: 11年(2011年)
YY RR
08年 2008 2008
95年 2095 1995
当前年: 95年(1995年)
01年 1901 2001
98年 1998 1998
6.创建数据结构,新增数据,为下一步的学习准备数据资料.
CREATE TABLE DEPT_ning (DEPTNO NUMBER(2) PRIMARY KEY,
DNAME VARCHAR2(14) ,LOC VARCHAR2(13) ) ;
INSERT INTO DEPT_ning VALUES(10,'研发部','北京');
INSERT INTO DEPARTMENT_ning VALUES (20,'财务部','上海');
INSERT INTO DEPT_ning VALUES(30,'销售部','广州');
INSERT INTO DEPT_ning VALUES(40,'后勤部','天津');
--删除表结构
drop table emp_ning;
--创建表结构
create table emp_ning(
id number(4),
name varchar2(20),
job varchar2(20),
salary number(7,2),
bonus number(7,2),
hiredate date,
mgr number(4),
deptno number(2)
);
insert into emp_ning values(1001, '张无忌', 'Manager', 10000, 2000, '12-MAR-10', 1005, 10);
insert into emp_ning values(1002, '刘苍松', 'Analyst', 8000, 1000, '01-APR-11', 1001, 10);
insert into emp_ning values(1003, '李翊', 'Analyst', 9000, 1000, '11-APR-10', 1001, 10);
insert into emp_ning values(1004, '郭芙蓉', 'Programmer', 5000, null, '01-JAN-11', 1001, 10);
insert into emp_ning values(1005, '张三丰', 'President', 15000, null, '15-MAY-08', null, 20);
insert into emp_ning values(1006, '燕小六','Manager', 5000, 400, '01-FEB-09', 1005, 20);
insert into emp_ning values(1007, '陆无双','clerk', 3000, 500, '01-FEB-09', 1006, 20);
insert into emp_ning values(1008, '黄蓉','Manager', 5000, 500, '1-MAY-09', 1005, 30);
insert into emp_ning values(1009, '韦小宝','salesman', 4000, null, '20-FEB-09', 1008, 30);
insert into emp_ning values(1010, '郭靖','salesman', 4500, 500, '10-MAY-09', 1008, 30);
--奖金写错了,应该是800, 写成80
--更新数据的语句:
update emp_ning
set bonus = 800 where id = 1008;
--数字数据直接写,不用单引号
--字符和日期,用单引号.
--查询表的全部数据:
select * from emp_ning;
SQL>set linesize 300
SQL>set pagesize 100
SQL>col name for a15
SQL>col id for 9999
--复制表:
--已有表结构,只复制数据(emp_my表已存在,结构和emp_you相同)
SQL>insert into emp_my
select * from emp_you;
--复制表结构和数据(emp_myother表不存在)
SQL>create table emp_myother
as
select * from emp_you;
四.查询语句
1.计算员工的年薪?
select * from emp_ning;
select name, salary from emp_ning;
select name, salary, salary * 12
from emp_ning;
2.计算员工的月收入是多少?
select name, salary, bonus,
salary +
bonus sal_month
from emp_ning;
select name, salary, bonus,
salary + nvl(bonus,0) sal_month
from emp_ning;
nvl(bonus,0)
==> (bonus == null) ? 0 : bonus
使用nvl函数,更正空值计算出现的逻辑错误.
--凡是和空值计算的算术表达式,结果为空.
--数据库中任何数据类型都可以取null值
表示这个数据暂时没有.
insert into emp_ning values(1011, '余则成', null, null, null, null, null, 10);
java:只有引用类型数据,可以取null值
String name = null; //ok
List list = null; //ok
int i = null; //error
boolean f = null; //error
3.员工都分布在哪些部门?
select deptno from emp_ning;
--去除重复记录
select distinct deptno from emp_ning;
员工表中有多少种职位?
select job from emp_ning;--不去重
select distinct job from emp_ning;--去重
4.条件查询.
哪些员工的薪水>1w?
select name, salary from emp_ning
where salary > 10000;
--哪些员工的薪水在5000-10000之间
--闭区间:[5000, 10000]
select name, salary from emp_ning
where salary <= 10000
and salary >= 5000;
--可以简写为:
select name, salary from emp_ning
where salary between 5000 and 10000;
5.把员工按照薪水由低到高排序
--正序排序
select name, salary
from emp_ning
order by salary;
--倒序排序(由高到低) desc = descend
select name, salary
from emp_ning
order by salary desc;
空值被视作最大.
--按员工的入职时间排序,入职越早排在前面
select name, hiredate
from emp_ning
order by hiredate;
6.查询部门10或者部门20的员工
select *
from emp_ning
where deptno = 10
or deptno = 20
or deptno = 30
or deptno = 40
or deptno = 50;
--in:在列表中.
select * from emp_ning
where deptno in (10,20,30,40,50);
列出职位是Analyst或者Programmer的员工
select * from emp_ning
where job = 'Analyst'
or job = 'Programmer';
--或者写成:
select * from emp_ning
where job in ('Analyst','Programmer');
--SQL语句的大小写不敏感,比如:
select和SELECT一样
--数据大小写敏感.比如:
Analyst和analyst不一样
--查询所有的分析员:
select name, job from emp_ning
where lower(job) = 'analyst';
等价于:
select name, job from emp_ning
where upper(job) = 'ANALYST';
lower(job): job='AnaLyst'
==> job = 'analyst
select * from emp_ning
where
lower(job) in('analyst','programmer');
7.哪些员工的职位中包含'sales'?
--模糊查询
select name, job
from emp_ning
where job like '%sales%';
分享到:
相关推荐
关于Oracle数据库管理的文档。涉及Oracle的安装,创建,oracle基本概念。非常适用于初学者
Oracle初学者指南 适用于所有初学者 一开始接触oracle数据库
内容简介 盖国强的这本《循序渐进Oracle:...本书适用于数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员,也可以作为各大中专院校相关专业的参考用书和相关培训机构的培训教材。
适用于初学者看看,最好是有基础,看起来比较省力,边看看边操作熟练起来速度会更快
《循序渐进oracle:数据库管理、优化与备份恢复》适用于数据库管理人员、数据库开发人员、系统维护人员、数据库初学者及其他数据库从业人员,也可以作为各大中专院校相关专业的参考用书和相关培训机构的培训教材。
第一张oracle数据库简介,oracle入门级讲解,适用于初学者,可配套书籍更清晰,首先需要安装数据库,下载oracle软件
非常适用于初学者。结合例子深刻形象的讲解。 第1章 关系数据库与SQL语言环境 第2章 数据查询 第3章 数据操作 第4章 表和视图 第5章 其他数据库对象 第6章 SQL基础 第7章 游标和异常处理 第8章 存储过程、函数和包 ...
功能实现(适用于较初学者) Oracle数据库与eclipse与前台html建立框架 ******************* 用户登录、注册 ******************* 登录: 实现用户登陆验证输入信息与数据库信息进行匹配 ******************* 注册:...
适用于oracle初学者,详细介绍了oracle数据库的建立与开发
oracle dba手册 数据库初学者适用
毕业设计:高校公用设备管理系统(简单、自己编写、java web技术,oracle数据库、struts1.0框架、tomcat服务器),功能简单,适用于初学者
Oracle数据库函数详细说明,初学者适用,也可以当做工具文档查询使用!
Oracle开发经典教程,适用于初学者入门Oracle,内容深入浅出,循循善诱
oracle教程ppt,适用数据库初学者快速入门
初级Oracle数据库技术 适用于初学者学习数据库技术 Oracle高手止步!
有关oracle、sqlserver的数据库教学PPT,包含数据设计、实现、T-SQL、存储过程、程序包、数据备份等,适用于初学者快速人门
Oracle lOg数据库是第一个为企业级网格计算而设计的数据库。Oracle lOg在Oracle 9i的基础上,提供了...本书适用于数据库管理人员、开发人员、Oracle数据库的爱好者,以及大专院校计算机、信息系统、管理专业的师生。
C#数据库编程实战经典《国外计算机科学经典教材:C#数据库编程实战经典》既包含数据库编程的基础知识,又分析和探讨数据库编程的技术,既适用于学生和初学者,也适用于富有经验的程序员。通过完整的示例项目,详细...
讲授 怎么创建数据库!!!比较适用于初学者…………
适用于初学者,实现简单的数据库交互,对于servlet有者通俗的理解,能更好的的帮助新手理解servlet和数据库与前端的交互。