数据库学习
数据库
数据库的基本概念:
数据库(DB):长期储存,有组织的、可共享的数据集合。
数据库技术:能科学的组织和存储数据,高效的获取和处理数据的技术。
数据库管理系统(DBMS):是负责管理数据库的软件,负责数据库的建立、操作和管理以及维护的软件系统。
数据库管理人员(DBA):对数据库进行建立、调整、维护、改善。
数据库系统是
DBS=DBMS+DBA+DB(包含关系)
数据库模型
早期流行的三种:层次数据库、网络式数据库、关系型数据库
常用的两种:
关系数据库:把复杂的数据结构归结为简单的二元关系。(二维表格形式)
非关系数据库:(NO SQL:not only)
数据库的特点:
数据结构化
数据的共享性高,冗余度低
有数据安全性和完整性保障
数据的高独立性
数据由DBMS同一管理和控制
易于使用,便于扩展
数据库管理系统
管理数据库的系统软件是数据库系统的核心,位于用户与操作系统之间的一层数据管理软件。
数据库基本概念
LAMP的定义
Linux(操作系统)、ApacheHTTP 服务器、MySQL (有时也指MariaDB,数据库软件) 、PHP (有时也是指Per |或Python) 的第一 -个字母,一般用来建立web应用平台。
●Linux :是免费开源软件,这意味着源代码可用的操作系统。
●Apache:是使用中最受欢迎的一个开放源码的WEB服务器软件。
●MySQL:是多线程、多用户的SQL数据库管理系统。
●PHP:是-种编程语言最初设计生产动态网站。PHP是主要用于服务器端的应用程序软
件。PerI和Python 类似。
SQL注入攻击黑客对数据库进行攻击的常用手段之一。
SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据
插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。
SQL包含4个部分:
数据查询语言DQL:select
数据操纵语言DML:insert、update、delete、
数据定义语言DDL:创建、修改或删除数据库对象
数据控制语言DCL:grant、revoke、commit、rollback
关系数据库(二维表)
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL、PostgreSQL
非关系型数据库(分布式)
NoSql、Cloudant、MongoDb、redis、HBase
标准数据查询语言SQL是一种基于关系数据库的语言。
关系模型三要素:关系数据结构、关系操作集合、关系完整性约束条件
1972,Codd 奠定了关系数据库的理论模型。《用于大型共享数据库的关系数据模型》
唐-钱伯林:SQL之父
关系数据库
Oracle 数据库
8i中支持面向对象的功能。对象/关系型数据库管理系统。默认端口号:1521
SQL Server
微软公司开发的大型数据库系统。端口号:1433(只在windows下运行)
MySQL 数据库
广泛用于internet上的大中小型网站,默认端口号:3306(开源,免费,运行在多系统)
PostgreSQL 数据库
对象关系型数据库管理系统。默认端口号:5432
DB2 数据库
用于大型应用系统(金融、电信),支持从大型机到单用户环境,默认端口号:5000
Access数据库
小型桌面数据库。
非关系数据库(为了处理海量数据,代替关系型数据库)
缺点:有限的查询功能、不支持SQL、没有标准化
MongoDB
基于分布式文件存储的数据库,由C++语言编写。适用于敏捷开发的数据库。
Redis 数据库
开源的使用ANS | C语言编写、遵守BSD协议、key-VALUE数据库、提供多种语言的API.
被称为数据结构服务器。
MySQL(中小型网站)
主要组件:服务端和客户端组成。共同共用一个配置文件(my.cnf)
MySQL自带的数据库以及系统表
四个数据库:mysql、information_schema、test、perforance_schema
➢mysq|库主要存储各类权限相关信息及帮助信息
➢information_ schema库主要存储数据库对象相关概要(schema)信息。
➢test是一个测试用的空数据库;
➢performance_ schema主要存储配置及性能信息。
三张表:schemata、tables、columns
◆SCHEMATA表: 提供了当前mysq|实例中所有数据库的信息。showdatabases的结果便取之此表。
◆TABLES表: 这个表记录了mysqI中每一个数据库中表所在的数据库、表的名字、表的行数等信息。
◆COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。
数据库
创建数据库:
create database数据库名
删除数据库:
drop database数据库名;
使用数据库:
use数据库名;
数据表
创建表:
create table表名(列名列属性);
删除表:
drop table表名;
数据
添加数据:
insert into表名(列名) values (列值);
删除数据:
delete from表名where条件;
修改数据:
updata表名set列名= '值’ where 条件:
查询数据:
select列名from表名where条件;
mysql 登录参数
-u 用户名
-p 密码
-P 端口号
-h 主机地址
例:mysql -uroot -p
显示帮助命令清单
mysq|>\h
帮助命令
mysqI>help命令;
查询当前安装的MySQL服务器的版本号
mysql> select version();
查看MySQL服务器状态信息(包含版本号,下面两个命令执行效果相同)。
mysql> status
mysql> \s
退出数据库
mysq|> \q
语法
1、官方文档中{}大括号括起来并且中间有个|管道符的代表n选一,必须输入
2、0中括号里括起来的表示可有可无
3、小写字母代表变量,将来可以替换
4、大写字母代表关键字,必须输入
常用命令:
在windows系统下
Mysqladmin -u用户名 -p密码 password新密码
显示所有数据库:show database;
使用数据库: use 数据库名
创建数据库: create database xxx;
创建字符集为utf8的数据库:
create database xxx charset utf8;
create database if not exits xxx charset utf8;
查看mysql中的字符集:show character set; (gbk和utf8为常用字符集)
进入数据库: use xxx
查看xxx数据库下的所有表:show tables;
Mysql数据表的增删改查
定义数据表:create table 表名 (定义字段);
定义字段格式
字段名 数据类型
(Id int primary key);
Insert into (增)
指定列插入数据
INSERT INTO (列1,····列n) VALUSE(值1,····值n);
Insert into student(id,user) values(2,’lisi’);
直接插入数据
INSERT INTO 表明 VALUES (值1,···值n);
Insert into syudent values(1.‘zhangsan’);
Delete (删除)
删除所有数据
Delete from student;
删除表中定义的数据
Delete from 表名 [where 条件];
Delete from student where id=1;
删除数据库
Drop database xxx;
删除数据表
Drop table xxx;
Update (改)
单表修改
Update 表名 set 字段名=字段内容 [where 条件];
Update student set user=‘lisi’;
查看数据
Select * from 表名;
Select * from student;
Oracle介绍
Oracle是一款关系型数据库管理系统,很多时候,我们会把那个承载核心数据的系统笼统地成为数据库服务器,但从严格意义上来讲Oracle是由两个部分组成。
实例:实例是数据库启动时初始化的一-组 进程和内存结构
数据库:数据库则指的是用户存储数据的- -些物理文件
实例:非固定的、基于内存
数据库:固定的、基于磁盘
ORACLE系统提供三种权限: Object对象级、System系统级、Role角色级。
用户权限可以分为两类,系统权限和对象权限:
1、对象权限:某种权限用户对其它用户的表或视图的存取权限,对象权限是针对表或视图而言的,是指用户对数据的操作权,如查、
更新、插入、删除、完整性约束等
2、系统权限:系统规定用户使用数据库的权限,系统权限是对用户而言的,是指对数据库系统及数据结构的操作权,例如创建/
删除用户、表、同义词、索引等
系统权限分类
◆DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
◆RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
◆CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
角色是- -组权限的集合,将角色赋给-一个用户,这个用户就拥有了这个角色中的所有权限。使用角色可以一次把一-组权
限授予用户,或者从用户回收,角色分为系统预定角色和用户自定义角色,用户角色权限是可以被授权和收回的。
Oracle数据库用户可以分为5种类型:数据库管理员(DBA)、 安全管理员、应用管理员、应用开发员、数据库用户
Redis简介
Redis是一个高性能的key-value型存储系统, 但Redis支持的存储value类型相对更多,包括string、 list (链表)、set (集合)和zset(有序集合)等。
在部分场合介意对关系数据库起到很好的补充作用。它提供了python、Ruby、 Erlang、 PHP客户端,使用方便。
Redis优缺点
Redis与其他key - value缓存产品有以下三个特点:
1、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set, zset, hash等数据结构的存储。
3、Redis 支持数据的备份,即master-slave模式的数据 备份。
2019.12.7