数据库

数据库

数据库的前世今生

1:为什么需要数据库
随着时代的发展,pc互联网时代进入到移动互联时代,目前是5G时代,可持设备越来越多,无时无刻不在制造数据。
目前需要一套可以持久化存储数据的软件/工具,帮助我们去存储海量数据。
截止目前,我们学习过的可以存储数据的有:
变量(单一、内存)->  int num = 10;
对象(多个,多个数据之间存在逻辑关系,内存) User u = new User(no:10,age:15,name:"张三")
数组(多个,多个数据之间存在逻辑关系,内存) User[] users = new User[]{user1,user2.....};
集合(多个,多个数据之间存在逻辑关系,内存) List、Set、Map 

IO流 
File 文件可以将数据存储到磁盘上,持久化存储
ObjectOutputStream 可以将java中一个对象通过对象流序列化到本地文件去

xml
xml 存放数据的一种格式 
<teachers>
    <name>老薛</name>
	<age>18</age>
    <sal>$100000000</sal>
    <students>
    	<student>
        	<name>张二狗</name>
        </student>
        
        <student>
        	<name>憨憨</name>
        </student>
    </students>
</teachers>
<!--解析xml比较费劲  一套xml要编写对一个的解析规则-->
2:数据库解决的实际问题
1:数据的持久化存储
2:维护了数据与数据之间的关系
3:存储的数据量很大
4:各种备份以及回退策略,避免数据的误删除
3:数据库的优缺点
大:存储数据海量
安全:不能出现频繁的数据丢失 最好保证在特定场景下是不可以丢失数据的
检索速度快:要求在极短的时间内要检索到需要查询的数据信息
4:数据库的发展历史
层级结构存储  文件存储  
网状结构存储  有向图
关系型结构存储    二维表格  
	oracle: oracle(神谕)  mysql
	微软:   sqlserver
	IBM:    DB2
	手机:   sqllite
非关系型结构存储  NoSQL not only sql
	MongDB 、 Redis 、 HBase

安装卸载Oracle

前提
1:建议不联网 
2:关闭防火墙
3:安装目录一定不能存在中文以及空格
卸载
1:卸载
2:关闭停止所有和oralce有关的服务
3:删除注册表 
4:找到安装oracle数据库的安装目录 删除目录下的残存文件
安装
1:桌面版
2:密码: sys、system 等他们的密码  建议越简单约好 
3:口令密码: scott 将密码设置为tiger 
检测
--通过命令行:
>sqlplus /nolog
sql> conn sys/密码 as sysdba;
--如果出现已经连接 证明没有问题

>sqlplus /nolog
sql> conn scott/tiger;
--如果出现已经连接 证明没有问题

数据库中的数据存储

数据库中的流程分析

[外链图片转存失败(img-KWXeKzsh-1565012408900)(C:\Users\wawjy\Desktop\system.PNG)]

[外链图片转存失败(img-KlfdWMcu-1565012408903)(C:\Users\wawjy\Desktop\表.PNG)]

[外链图片转存失败(img-L1MxDuB5-1565012408905)(C:\Users\wawjy\AppData\Roaming\Typora\typora-user-images\1564977349237.png)]

实质上:
	客户端给服务器发送sql指令对于当前数据库进行crud操作是通过oracle中的实例完成。
	一个数据库服务器中存在多个库信息,默认情况下会创建一些 用户库、临时库等等
一个库中可以存储多张表,数据实际是存储在表中
一个表中:
	表结构+行记录
表结构:
	列的类型以及列的名称
行记录:
	存储的每行数据信息
	
记住:oracle中的表示隶属于用户的,如果当前用户对于表没有权限 是无法进行操作的。

SQL

命令:
--  连接 连接数据库服务器 免登录
sqlplus /nolog
-- 登录指令
-- conn 用户名/密码@实例
conn sys/123456 as sysdba;-- 通过sys/123456账户使用系统管理员登录

sql语句的语法规则

1:不区分大小写的 (推荐大写)
2:一行sql语句通过`;`结束
3: 为了好看,一般情况下将长的sql语句会折行处理
sql的分类:
DCL: 数据控制语言:
	 对于库、表做CRUD
DDL: 数据定义语言:
	 对于用户以及库进行操作(创建用户、删除用户、给用户授权。。。。)
DML: 数据管理语言:
	 DML:针对于数据的增加、删除、修改   写操作
	 DQL:针对于数据的查询操作   读操作
事务控制:
	提交、回滚、设置回滚点
DCL
--1:创建用户 大权限用户创建用户
--create user 用户名 identified by 密码;
-- 创建一个张三用户 密码是123
create user zs identified by 123;
--2:授权用户 大权限用户授权用户
-- grant 权限1,权限2 to 用户名;
-- 给张三用户授权 连接权限
grant connect to li;
-- 给张三用户授权  表权限
-- grant 权限1,权限2 on 所属人.所属表 to 用户名;
grant select,insert on scott.emp to li;
-- 3:撤销权限
-- revoke 权限1,权限2 from 用户名;
-- 撤销li用户的查看以及插入权限
revoke select,insert on scott.emp from li;
-- 4:删除用户
-- drop user 用户名;
drop user li;
-- 5:对账户加锁 
-- alter user 用户名 account lock;
alter user scott account lock;
-- 6:对账户解锁
-- alter user 用户名 account unlock;
alter user scott account unlock;
DDL
数据类型
数据类型标识符注意事项
数值numbernumber(5)99999 number(5,2)999.99
字符串(固长)charchar(2) ‘a’ --> 'a '实际存储长度小于指定长度通过空格补充长度
字符串(变长)varchar/varchar2varchar(5) ‘a’ --> ‘a’ 根据实际存储长度决定当前串的长度
日期datedate年月日
日期datastamp年月日时分秒
blob二进制数据(不推荐使用)4G
clob文本数据4G (文章)
-- 1:创建表
-- create table 表名(列名1 列类型1,列名2 列类型2.........);
create table tb_user(id number(4),uname varchar(5));
-- 2:查看表
select table_name from all_tables;
-- 3描述表
-- desc 表名(只能看表结构)
desc tb_user;
-- 3: 修改表
-- 前缀:alter table 表名

-- 3-1: 添加列
-- alter table 表名 add 列名 列类型;
alter table tb_user add age number(3);

-- 3-2:删除列
-- alter table 表名 drop column 列名 ;
alter table tb_user drop column age;

-- 3-3:修改列类型
-- alter table 表名 modify 列名 列类型;
alter table tb_user modify name varchar(4);

-- 3-4:修改列名
-- alter table 表名 rename column 旧列名 to 新列名l
alter table tb_user rename coloumn name to uname;

-- mysql 
-- alter table 表名 modify 旧列名 新列名 数据类型;

-- 3-5:修改表名
-- alter table 表名 rename to 新表名;
alter table tb_user rename to t_user;

– 3-4:修改列名
– alter table 表名 rename column 旧列名 to 新列名l
alter table tb_user rename coloumn name to uname;

– mysql
– alter table 表名 modify 旧列名 新列名 数据类型;

– 3-5:修改表名
– alter table 表名 rename to 新表名;
alter table tb_user rename to t_user;




























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值