一. 什么是数据库
之前所学,数据要永久保存,比如用户注册的用户信息,都是保存于文件中,而文件只能存在于某一台机器上。
如果我们不考虑从文件中读取数据的效率问题,并且假设我们的程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有问题
但需要考虑的问题是:程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,垂直扩展是有极限的。于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。
需要注意的是,虽然我们将程序的各个组件分布到各台机器,但各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。
于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件,即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。
为了远程访问并处理这台共享机器上的文件,我们必须为我们的程序额外写一段代码,完成如下功能:
1 #1.远程连接 2 #2.打开文件 3 #3.读写(加锁) 4 #4.关闭文件
我们写任何程序都需要有这段代码,于是我们提取这段代码,写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
二. 什么是数据
数据:描述事务的符号记录,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机
在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,如:
1 Nick male 20 豫州 计算机系
单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思:
id name sex age adderess major #字段 1 Nick male 20 豫州 计算机系 #记录
用这样的一条记录来展示一个人的信息,就一目了然.
总结:
数据库,顾名思义就是存放数据的仓库,只不过这个仓库是在计算机存储设备上。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享.
三. 数据库管理系统(DataBase Management System 简称DBMS)
在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键
这就用到了一个系统软件---数据库管理系统
如MySQL、Oracle、SQLite、Access、MS SQL Server
mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
数据库说白了就是文件夹
数据库管理系统就是一个软件
数据库服务器:就是对外专门提供数据的一个机器
♥数据库服务器,数据库管理系统,表与记录的关系(重点理解)
表:student,scholl,class_list(即文件)
数据库:lzsh_info(即文件夹)
数据库管理系统:如mysql(是一个软件)
数据库服务器:一台计算机(对内存要求比较高)
总结:
数据库服务器---运行--->数据库管理软件
数据库管理软件--->管理--->数据库
数据库---组织--->表,即文件夹---组织--->文件
表---存放--->多条记录,即文件---存放--->多行内容
四. mysql安装介绍
MySQL是一个关系型数据库管理系统,MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
mysql是什么?
mysql就是一个socekt服务端
客户端软件
mysql自带
python模块
其他类型的数据库?
sqllite,db2,oracle,access,sql server,MySQL
分两大类:
关系型:sqllite,db2,oracle,access,sql server,MySQL,注意:sql语句通用
非关系型:mongodb,redis,memcache
四-1. windows下安装MySQL步骤:
基于windows7 x64位系统
1.下载mysql数据(本例mysql-5.6.40-winx64),官方下载地址: https://dev.mysql.com/downloads/mysql/5.6.html#downloads
2.把下载的zip包解压到相应的磁盘目录下,例如我解压到D盘根目录下,并改名为mysql5640
3.进入D盘,打开mysql5640下面的bin目录,复制一下目录路径
4.在电脑桌面,找到计算机,右键单击--属性--更改设置--高级--环境变量--系统变量里有个Path,选中Path,点编辑,把光标移到最后,输入一个;(冒号),然后把刚刚复制的目录地址粘贴进去,确定即可.
5打开命令提示符(要使用管理员权限).切换目录到D:mysql5640in.然后输入 mysqld -install 一般都会安装成功.如果不成功,请检查是否切换到mysql下的bin目录里(如果不切换到bin目录下,MySQL服务可能提示 找不到启动文件.)
6.现在MySQL已经是系统服务了.windows+r,输入services.msc,就能看到一个MySQL的服务,点击启动,就可以了.也可以在命令提示符里输入 net start MySQL来启动.
注意:如果报错 3534,则需要初始化 mysqld --initialize
五. 设置和破解MySQL登录密码
默认情况下,mysql中root是没有密码的,首先我们要先设置一个密码
use mysql; update user set password=PASSWORD("密码") where user="root"; flush privileges;
设置远程登录:
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "密码";
修改root密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
#windows下在命令提示符里,linux 在终端里输入 mysqladmin -uroot password "123" # 更改密码 mysqladmin -uroot -p"123" password "456" # 以root用户登录. #msyql -uroot -p"234" 两种登录方式,推荐下面的 msyql -uroot -p
破解MySQL登录密码:
#1.先停止MySQL数据库 net stop MySQL #2. 打开一个命令提示符输入: mysqld --skip-grant-tables; #跳过mysql的启动授权表 #3.再打开一个命令提示符 update mysql.user set authentication_string=password("") where user="root and host="localhost"; #把root密码设置为空 #4.打开新的命令提示符,输入 tasklist |findstr mysqld #mysqld.exe 7848 Console 1 455,620 K taskkill /F /PID 7848 # 终止msyql #5. 启动MySQL net start MySQL #6. 再次登录就需要密码了 mysql -uroot -p
mysql服务指定配置文件
修改统一字符编码,在mysql安装目录下,新建一个my.ini的文件.把下面的内容复制进去.
1 #1. 修改配置文件 2 [mysqld] 3 default-character-set=utf8 4 [client] 5 default-character-set=utf8 6 [mysql] 7 default-character-set=utf8 8 9 #mysql5.5以上:修改方式有所改动 10 [mysqld] 11 character-set-server=utf8 12 collation-server=utf8_general_ci 13 [client] 14 default-character-set=utf8 15 [mysql] 16 default-character-set=utf8