oracle学习笔记day1
oracle数据库
前言      oracle sql
lesson1   Selecting Rows
lesson2   Sorting & Limiting Selected Rows
lesson3   Single Row Functions
lesson4   Displaying Data from Multiple Tables
lesson5   Group Function 
lesson6   Subqueries
lesson7   Overview of Data Modeling and Database Design
lesson8   Creating Tables
lesson9	  Manipulating Data(DML)
lesson10  Altering Tables and Constraints
lesson11  Creating Sequences
lesson12  Creating View
lesson13  Creating Indexes
前言:
	1.一个认知
		认知什么是oracle?
			oracle:商业运用第一的关系型数据库
			实质:关系型数据库
		了解oracle数据库发展历史
	2.二个概念
		数据库:数据存储的仓库
		关系型数据库:数据库中保存的对象之间可以存在一定的关联关系,并非完全独立。主要反映到以后学习的主外键.
	3.三个名词
		sql:结构化的查询语句,操作oracle数据库的语言
		sqlplus:oracle软件自带的可以输入sql,且将sql执行结果显示的终端
		pl/sql:程序化的sql语句,在sql语句的基础上加入一定的逻辑操作,如if for...,使之成为一个sql块,完成一定的功能
	4.四种对象
		table:表格,由行和列组成,列又称字段,每一行内容为表格的一条完整的数据。
		view:  视图,一张表或者多张表的部分或者完整的映射,好比表格照镜子,镜子里面的虚像就是view
		除去常见的table和view两种对象以外,oracle数据库还支持如下四种对象
		sequence:序列
		index:索引,提高数据的访问效率
		synonym:同义,方便对象的操作
		program unit:程序单元,pl/sql操作的对象
	5.五种分类
		sql的五大分类:
		Data retrieval:数据查询
		select
		DML:数据操纵语言(行级操作语言):操作的是表格当中一条一条的数据
		insert update delete
		DDL:数据定义语言(表级操作语言):操作的内容为表格(对象)
		create alter drop truncate rename
		transaction control:事务控制	
		commit rollback savepoint
		DCL:数据控制语言
		grant revoke
delete,truncate区别:
		delete:  删除表中的一条或者多条记录,该操作需要提交事务
		truncate:清空表格,该操作不需要提交事务
oracle数据库环境准备:
	1.安装oracle数据库
		1.1 最好默认按照到C盘
		1.2 安装过程中有一步让输入一个密码,建议使用oracle作为密码,方便记忆
		1.3 安装完成之后,打开系统服务,查看服务是否已经正常启动,具体情况参照文档:oracle系统服务.txt
		1.4 打开cmd,输入sqlplus,然后回车查看是否能执行该命令
		1.5 如果不能执行,则需要把安装目录里面的BIN里面配置到系统环境变了path中,然后重新打开一个cmd窗口即可
2.登录oracle自带的管理系统,新建一个属于自己的账号.
		参照文档:oracle系统服务.txt
3.用户创建好之后,使用sqlplus命令登录到oracle数据库中,然后把之后要使用到的表及其数据导入到数据库中.
		参照文档:导入数据.txt
4.了解导入的三张表以及相互关系
		s_emp		员工表
		s_dept		部门表
		s_region	地区表
5.之后登录或者操作数据库,就可以使用这个新创建的用户了
====================================================================
第一章:select语句,数据查询操作
1.使用select语句查询某张表的所有数据内容
	语法:
	select [distinct] *{col_name1,col_name2,..}
	from tb_name;
	注意:语法中出现的中括号[],表示该部分可有可无
	*:表示所有列,仅仅作为测试和学习使用,在企业用语中不出现,因为效率低下且可读性差
	col_name1:列名,将需要查阅的数据字段列举出来,可以查看多列值,列名之间用,进行分割即可
	s_emp :员工信息表
	s_dept:员工部门表
需求:查看s_dept表中的所有记录
	select *
	from s_dept;
select id,name,region_id
	from s_dept;
练习:查看s_dept表中的所有记录的id和name
	select id,name
	from s_dept;
练习:查看所有员工的id,名字(last_name)和薪资(salary)
	select id,last_name,salary
	from s_emp;
2.select语句可以对指定的列的所有值进行算术运算。
	语法:
	select col_name 运算符 数字
	from tb_name;
需求:查看每个员工的员工id,名字和年薪。
	select id,last_name,salary*12
	from s_emp;
注意:select语句永远不对原始数据进行修改。
练习:查看每个员工的员工id,名字和月薪涨100以后的年薪
	select id,last_name,(salary+100)*12
	from s_emp;
3.给查询的列起别名
	语法:
	select old_column [as] new_column_name
	from tb_name;
需求:查看员工的员工id,名字和年薪,年薪列名为annual
	select id,last_name,salary*12 as annual
	from s_emp;
4.使用||可以使得多列的值或者列和特殊的字符串合并到一个列进行显示
	语法:
	select col_name||'spe_char'||col_name
	from tb_name
	'spe_char':如果一个列的值要跟特殊的字符串连接显示,使用该语法。
需求:查看员工的员工id,全名
	select id,first_name||last_name
	from s_emp;
练习:查看员工的员工id,全名和职位名称,全名和职位名称合并成一列显示,且格式为:姓 名,职位名称
	select id,first_name||' '||last_name||','||title as name
	from s_emp;
5.对null值得替换运算
	nvl()函数
	语法:
	select nvl(col_name,change_value)
	from tb_name;
需求:查看所有员工的员工id,名字和提成,如果提成为空,显示成0
	select id,last_name,nvl(commission_pct,0) commission_pct
	from s_emp;
6.使用distinct关键词,可以将显示中重复的记录只显示一条
	语法:
	select distinct col_name,col_name...
	from tb_name;
注意1:distinct关键词只能放在select关键词后面
	如:select id,distinct title
	    from s_emp;
	该语句语法错!!!!!
	注意2:如果distinct关键词后面如果出现多列,表示多列联合去重,即多列的值都相同的时候才会认为是重复的记录。
	test表:
	id	id2
	1	2
	1	3
	2	4
	3	4
	3	4
	select distinct id,id2
	from test;
	显示结果为:
	id	id2
	1	2
	1	3
	2	4
	3	4
需求:查看所有员工的职位名称和部门id,同职位同部门的只显示一次
	select distinct title,dept_id
	from s_emp;
7.sqlplus命令
   sqlplus 登录之后,可以使用buff(缓存)来存储/执行/修改要执行的sql语句 
   这里的buff的特点:
      1.buff中只能存储一条sql语句(但是这条sql语句可能有很多行)
      2.每次放入新的sql语句,会把之前的覆盖掉
      3.每次执行sql语句,都会把这个sql语句放到buff里面
l   查看缓存中的sql语句
	a   在[定位]的那一行后面追加新的内容
	i   在[定位]的那一行下面插入新的一行
	c   替换[定位]的那一行中的某些字符串 
		c/老的字符串/新的字符串
	del 删除[定位]的那一行内容
	n   后面加内容可以重写这一行
	!   后面接终端命令 !clear:清屏 windows中使用$符号 例如:$cls
	/   执行缓存sql命令
clear buffer:清空当前缓存的命令
save  test.sql  buff中的sql语句保存在test.sql文件中
	get   test.sql  把test.sql中的内容在加载到buff中,但是没有运行
	start test.sql  把test.sql中的内容在加载到buff中并且执行
	@test.sql       把test.sql中的内容在加载到buff中并且执行
	edit file_name  使用系统默认编辑器去编辑文件
spool file_name 将接下来的sql语句以及sql的运行结果保存到文件中
		sql1
		result1
		sql2
		result2
		...
	spool off  关闭spool功能
	exit:退出
8.select id,last_name,first_name, salary, dept_id
  from s_emp
  Where rownum <=10;
结果不好看,通过column使我们的显示界面好看。
COLUMN last_name FORMAT a15;
	可以简写为:
	col last_name for a15;
	COLUMN first_name FORMAT a15;
第二章:排序和限制查询
1.排序:所谓排序,就是根据某个字段的值按照升序或者降序的情况将记录查询出来
	语法:
	select col_name,...
	from tb_name
	order by col_name [asc|desc],...
	注意:1.排序使用order by字句,该子句只对查询记录显示调整,并不改变查询结果,所以执行权最低,即最后执行。
	2.排序关键词:
		asc:升序(默认,默认的意思是不加关键词的时候默认为生序排序)
		desc:降序
	3.如果有多个列排序,后面的列排序的前提是前面的列排好序以后有重复(相同)的值。
例子:
	id	id2
	1	2
	2	3
	3	4
	4	1
	4	2
语句:
	select id,id2
	from test
	order by id,id2 desc;
结果:
	id	id2
	1	2
	2	3
	3	4
	4	2
	4	1
	注意:先排第一列,如果第一列有重复的值再排第二列,以此类推
需求:查看员工的id,名字和薪资,按照薪资的降序排序显示。
2.限制查询,即指定查询条件进行查询
	语法:
	select col_name,...
	from tb_name
	where col_name 比较操作表达式
	逻辑操作符
	      col_name 比较操作表达式
	...
	注意:
	1.限制查询条件,使用where子句
	2.条件可以多个,使用逻辑操作符和()进行条件的逻辑整合
	3.where子句的优先级别最高
	4.比较操作表达式由操作符和值组成
		常见的操作:
		1》逻辑比较操作符
		=  >  <  >=  <=  !=
		2》不等于:三个都表示不等于的意思(经常用的是!=)
		!=   <>   ^=
需求:查看员工工资小于1000的员工id和名字
	select id,last_name,salary
	from s_emp
	where salary < 1000;
2》sql比较操作符
		between and:在什么范围之内
需求:查看员工工资在700 到 1500之间的员工id,和名字
	select id,last_name,salary
	from s_emp
	where salary between 700 and 1500;
		in(list):在一个列表中
需求:查看员工号1,3,5,7,9员工的工资
	select id,last_name,salary
	from s_emp
	where id in (1,3,5,7,9);
		like:模糊查询,即值不是精确的值的时候使用
		通配符,即可以代替任何内容的符号
		% :通配0到多个字符
		_ : 当且仅当通配一个字符
转义字符:
		默认为\,可以指定 指定的时候用escape 符号指明即可,转义字符只能转义后面的一个字符
需求:查看员工名字以C字母开头的员工的id,工资。
	select id,last_name,salary
	from s_emp
	where last_name like 'C%';
练习:查看员工名字长度不小于5,且第四个字母为n字母的员工id和工资
 	select id,last_name,salary
	from s_emp
	where last_name like '___n_%';
需求:查看员工名字中包换一个_的员工id和工资
	select id,last_name,salary
	from s_emp
	where last_name like '%\_%' escape '\';
is null:对null值操作特定义的操作符,不能使用=
需求:查看员工提成为为空的员工的id和名字
	select id,last_name,commission_pct
	from s_emp
	where commission_pct is null;
	3.逻辑操作符
	当条件有多个的时候使用
		and:且逻辑
		or:或逻辑
		注意:and逻辑比or逻辑要高
	not:非逻辑
需求:查看员工部门id为41且职位名称为Stock Clerk(存库管理员)的员工id和名字
	select id,last_name,dept_id,title
	from s_emp
	where dept_id = 41
	and
	      title = 'Stock Clerk';
练习:查看员工部门为41 或者 44号部门 且工资大于1000的员工id和名字
	select id,last_name,dept_id,title
	from s_emp
	where salary > 1000
	and
	      (dept_id = 41
	      or
	      dept_id = 44);
      查看员工部门为41且工资大于1000 或者 44号部门的员工id和名字
	select id,last_name,dept_id,title
	from s_emp
	where salary > 1000
	and
	      dept_id = 41
	or
	      dept_id = 44;
oracle学习笔记day1的更多相关文章
- Oracle学习笔记三 SQL命令
		
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
 - oracle学习笔记第一天
		
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
 - Oracle学习笔记——点滴汇总
		
Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster
 - Oracle学习笔记之四sp1,Oracle 11g的常用函数
		
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
 - Oracle学习笔记之四,SQL语言入门
		
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
 - Oracle学习笔记—数据字典和常用命令(转载)
		
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
 - OpenCV图像处理学习笔记-Day1
		
OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...
 - oracle学习笔记(一)用户管理
		
--oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...
 - sqli-labs学习笔记 DAY1
		
DAY 1 准备工作 安装phpstudy 安装配置sqli-labs 学习笔记 SQL语句的注释:–, # +在URL经过编码后会编码为空格 SQL语句的查询语句:SELECT column_nam ...
 
随机推荐
- TensorFlow(四):手写数字识别
			
一:数据集 采用MNIST数据集:-->官网 数据集被分成两部分:60000行的训练数据集和10000行的测试数据集. 其中每一张图片包含28*28个像素,我们把这个数组展开成一个向量,长度为2 ...
 - ROStopic 通信方式
			
操作演示,对 topic 通信方式的理解请看:点击打开链接 开启终端,运行 roscore 新开一个终端(已经安装好(ros-<distro>-ros-tutorials 包,否则运行 ...
 - Airflow 配置celery+rabbitmq和celery+redis
			
Airflow 配置celery+rabbitmq 1.安装celery和rabbitmq组件 pip3 install apache-airflow[celery] pip3 install apa ...
 - nodeJs 初学案例摘要
			
在学习nodeJs的时候,照着文档做的,但是到最后的上传文件显示图片总是报错, 所用的fs.renameSync出错:Error: EXDEV, cross-device link not permi ...
 - C# 图片进行马赛克处理
			
MosaicHelper.AdjustTobMosaic( @"C:\Users\xxxue\Desktop\QQ图片20180704142029.jpg", @"C:\ ...
 - linux搭建代理服务器+蚁剑配置客户端代理
			
一:linux搭建代理服务器 0x00 介绍 关于搭建代理服务器的方法,我也是刚刚接触,从网上找了一些能够行得通的方法来给大家做个分享: 这里我用的是Tinyproxy作为代理服务软件.这个东西很小, ...
 - Java 面向对象(三)
			
封装 什么是封装 面向对象三大特征之一 1. 把对象的状态和行为看成一个统一的整体,将字段和方法放到一个类中. 2. 信息隐藏:把不需要让外界知道的信息隐藏起来.尽可能隐藏对象功能实现细节,向外界暴露 ...
 - [游戏开发]LÖVE2D(1):引擎介绍
			
什么是LÖVE引擎 Love引擎是一个非常棒的框架,你可以用来在Lua制作2D游戏.它是免费的,开源的,适用于Windows,Mac OS X,Linux,Android和iOS. 怎么安装 在官网下 ...
 - 转: mysql的取整函数
			
一.ROUND()函数用法 ROUND(X) -- 表示将值 X 四舍五入为整数,无小数位 ROUND(X,D) -- 表示将值 X 四舍五入为小数点后 D 位的数值,D为小数点后小数位数.若要 ...
 - LC 991. Broken Calculator
			
On a broken calculator that has a number showing on its display, we can perform two operations: Doub ...