首页 > 数据库技术 > 详细

数据库DataBase 简称DB

时间:2019-03-13 17:39:09      阅读:377      评论:0      收藏:0      [点我收藏+]

一、数据库管理软件的由来

    基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上

  1、程序所有的组件就不可能运行在一台机器上

#因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。

#于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。

 

  2、数据安全问题

#根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。

#于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。

  

  3、并发 

    我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能:

#1.远程连接(支持并发)
#2.打开文件
#3.读写(加锁)
#4.关闭文件

  总结:

技术分享图片
#我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
View Code

 

 

 

二、数据库概述

  1、什么是数据库

      存储数据的仓库(容器)

  2、数据库软件分为两类(关系型数据库、非关系型数据库)

 

      一般搭配使用,把数据量大的 存到关系型中 把经常访问的放到非关系型中提高访问速度

 

    关系型数据库

 

一般都是基于文件实现的
       #优点:容量大 可以永久存储

mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

 

    

    非关系型数据库

以key:value的形式来存储数据
一般基于内存
优点:速度快
问题:断电丢失

MongoDB
redis
memcache

 

 

      



 

三、mysql

  mysql是什么

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一


#mysql就是一个基于socket编写的C/S架构的软件
#客户端软件
  mysql自带:如mysql命令,mysqldump命令等
  python模块:如pymysql

 

 

      

  下载安装

#1、下载:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/

#2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:\mysql-5.7.16-winx64

添加环境变量前如何使用,在命令行中(c或cd mysql路径)
#3、添加环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,用 ; 分割】 #4、初始化 mysqld --initialize-insecure #5、启动MySQL服务 mysqld # 启动MySQL服务 #6、启动MySQL客户端并连接MySQL服务 mysql -u root -p # 连接MySQL服务器

 

  启动查看

技术分享图片
安装完mysql 之后,登陆以后,不管运行任何命令,总是提示这个
mac mysql error You must reset your password using ALTER USER statement before executing this statement.
解决方法:
step 1: SET PASSWORD = PASSWORD(your new password);
step 2: ALTER USER root@localhost PASSWORD EXPIRE NEVER;
step 3: flush privileges;
View Code
服务端:直接在命令行输入mysqld

客户端:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

什么是数据库

   就是存储数据的仓库(容器)

 

存储数据的方式
  1.变量 无法永久存储
  2.文件处理 ,可以永久存储

数据库软件的本质 也就是一个 基于socket(TCP)的C/S结构的程序

如果自己实现一个数据软件 需要解决的几个问题
1.一旦数据共享 就存在竞争问题,需要处理锁
2.不是所有的TCP连接请求都要接受,得加上安全验证
3.文件处理带来的效率问题, 需要想办法来提高处理速度 (索引)

有很多现成数据库软件可以直接使用,又分为两大类
1.关系型数据库
该类型的数据 提供某种机制 可以帮你维护 数据与数据之间的关系
例如 学员数据 和 班级数据 可以通过其中一方 找到另外一方
一般都是基于文件实现的
优点:容量大 可以永久存储
mysql 免费开源,开源支持中小型企业并发

oracle 商用收费,学习免费,功能比mysql强大,用户管理和集群
SQLServer 属于微软生态圈,只能运行于 windows上
mariaDB mysql创始人:韦德纽斯 担心 mysql的前程 于是基于mysql开发了mariaDB 用起来是一模一样
DB2 IBM 360
sqllite 非常轻量级的数据库


共同特征都支持SQL
结构化 查询语言
学习数据库的重点也就是SQL语句

 


2.非关系型数据库
数据与数据之间是独立 不存在任何关联关系
以key:value的形式来存储数据
一般基于内存
优点:速度快
问题:断电丢失

MongoDB
redis
memcache


该使用哪一类数据库?
应该搭配使用,把数据量大的 存到关系型中 把经常访问的放到非关系型中
提高访问速度

数据库相关的概念

数据 本质上一堆带有含义的符号
name = jack

数据记录
多个数据组成了一条完整记录
name,age,sex
jack,38,man
rose,20,woman

表 本质就是一个文件
里面存储一堆数据记录

库 本质就是一个文件夹
里面放一堆表文件

DBMS
data base manager system
数据库管理系统 (TCP的服务器)
负责管理一堆文件夹(即数据库)

数据库服务器
指的是运行有TCP服务器的程序 的计算机

DBMS和服务器 一般运维管
到公司之后会分给你一个账号密码 以及服务器地址

 

mysqld 是服务器主程序
mysqld 警告说:创建文件失败 由于权限不足 用管理员权限运行即可
mysql 是无界面的客户端 需要在CMD运行
mysql连接服务器 需要指定以下参数
-h 主机地址(ip)
-P 端口号
-u 用户名
-p 密码

服务器和客户端在同一台电脑 可以省略主机地址 端口号默认3306 可以省略
如果不指定用户名和密码 以游客模式登陆 什么都看不到

 

mysql 的安装:
1.带界面 一路next
2.压缩包 直接解压
2.1 添加环境变量
2.2 注册系统服务


修改管理员密码
1.如果知道原始密码 mysqladmin -uroot -p password 123
2.不知道原密码 可以在启动服务器时 跳过 授权表
mysqld --skip-grant-tables
无密码登录服务器 执行修改密码的指令
update mysql.user set password = password("新密码") where user = "root" and host = "localhost";


关于库的 语句
创建库
create database 库名称
删除库
drop database 库名称
修改库的属性
alter database 库名称 charset = "新的编码"
查看创建库详细信息
show create database mydb;
查看所有数据库
show databases
选择一个数据库
use 库名称


关于表

create table 表名称(name char,age int);
create table 库.表名(name char,age int);

查看所有表
show tables;
查看表的详细信息
show create table t1;
查看表结构 (字段)
desc t1;


alter table t1 charset = "gbk"; 改编码
alter table t1 add sex char; 添加字段
alter table t1 drop sex; 删除字段
alter table t1 modify age char; 修改字段的类型
alter table t1 change age ages int; 修改字段的名字和类型
rename table t1 to table1; 修改表的名称

删除
drop table table1;

 

数据记录相关操作是重点学习对象
# 一次性插入多条记录
insert into table_name values("陈麻子",20);
# 一次性插入多条记录
insert into table_name values(值1,值2),(值2,值2),...;
上述语法 值的个数必须与字段的个数相同

# 指定要插入数据的字段
insert into t2(name) values("我只有姓名啊")


查看数据
select * from t2; * 表示查看所有字段 多个字段用逗号隔开

修改
update t2 set age = 100; 没有条件则全部修改
update t2 set age = 100 where name = "陈";
update t2 set age = 100,name = "刘铁柱" where name = "陈" ;

删除数据
delete from t2 where name = "刘铁柱";

数据库DataBase 简称DB

原文:https://www.cnblogs.com/pdun/p/10524621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!