一:为什么要使用数据库?
基于之前所学,数据要想永久保存,都是保存在文件中的,这就存在几个问题:
1.程序所有的组件就不可能运行在一台机器上
#因为这台机器一旦挂掉则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的,受限于目前的硬件水平,就一台机器的性能垂直进行扩展是有极限的。 #于是我们只能通过水平扩展来增强我们系统的整体性能,这就需要我们将程序的各个组件分布于多台机器去执行。
2.数据安全问题
#根据1的描述,我们将程序的各个组件分布到各台机器,但需知各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的。但每台机器上的组件都只能操作本机的文件,这就导致了数据必然不一致。 #于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件,共享则意味着竞争,会发生数据不安全,需要加锁处理。。。。
3.并发
根据2的描述,我们必须写一个socket服务端来管理这台机器(数据库服务器)上的文件,然后写一个socket客户端,完成如下功能: #1.远程连接(支持并发) #2.打开文件 #3.读写(加锁) #4.关闭文件
也就是说: #我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。
二:什么是数据库?
2.1什么是数据?
描述事物的符号记录称为数据,描述事物的符号可以是数字,也可以是文字,图片,图像,声音,语言等,数据有多种表现形式,它们都可以经过数字化后存入计算机。
2.2什么是数据库?
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。
数据库是长期存放在计算机内、有组织、可共享的。
数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并且可以为各种用户共享。
2.3数据库与文件存储数据区别
数据库本质上是通过文件来存储数据的,数据库的概念即使通过系统的管理存储数据的文件。
三:数据库管理系统(DataBase Management System简称DBMS)
1.数据库介绍
数据库服务器端:存放数据库的主机集群
数据库客户端:可以连接数据库的任意客户端
数据库管理员:DBA
#socket套接字的C/S架构应用
2.数据库分类
2.1关系型数据库:
1.有表的概念
2.以表中一条条记录存储数据
MySQL,Oracle,SQL sever,access,db2
MySQL主要用于大型门户,例如搜狗,新浪等,主要优势是开放源代码,因为开放源代码整个数据库是免费的,是甲骨文公司产品。
Oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高,也是甲骨文公司的产品
SQL server是微软公司的产品,主要应用于大中型企业,如联想、方正等。
2.2非关系型数据库
1.没有表的概念
2.通过key-value键值对方式存储数据
mongodb,redis,memcache
3.数据库服务器,数据库管理系统,数据库,表与记录的关系
记录:多个字段的信息组成一条记录,即文件中的一行内容
表:多条记录构成一张表,本质就是文件
数据库:多张表构成一个数据库,本质就是文件夹
数据库管理系统:例如MySQL,就是一个软件
数据库服务器:一台计算机(对内存要求较高)
四:MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下公司。其最流行的就是关系型数据库管理系统,在web应用方面MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
1.下载安装
官网:http://dev.mysql.com/downloads/mysql
2.解压到安装的指定目录
3.添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】(或者:前往数据库安装路径,bin文件夹下,cmd执行mysqld启动mysql服务器端,前往数据库安装路径,bin文件夹下,cmd执行mysql启动mysql客户端连接服务器端)
4.初始化
mysql --install
5.将mysql服务器添加到系统服务
在系统服务中启动mysql,mysqld --install,进入系统服务: win+r => services.msc => 找到mysql服务手动启动或关闭
6.连接数据库
mysql -hlocalhost -P3306 -uroot -p
通过最高权限进入数据库,要采用root用户进入,连接本地数据库:mysql -uroot -p
查看mysql版本:select version()
查看当前用户:select user()
查看mysql下的(当前用户可以操作)所有数据库:show databases;
7.密码操作
7.1知道旧密码的情况下
修改密码:mysqladmin -uroot -p旧密码 password"新密码"
7.2遗忘旧密码的情况下
1.绕过授权表启动服务(安全认证的服务停止): mysqld --skip-grant-tables;
2.以任意密码登录root用户: mysql -uroot -P任意
3.更新密码: update mysql.user set password=password("新密码") where user=root and host="localhost"
4.刷新权限: flush privileges;
8.统一字符编码(为mysql服务指定配置文件)
在mysql的解压目录下,新建my.ini文件(在cmd里面创建的命令:type nul>文件名.文件后缀)
设置配置信息并保存:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
重启服务
查看修改结果:s
五:库的基本操作
前提:连接上数据库 1.增,创建数据库 采用默认编码集: create database db1; # db1为数据库名 自定义编码集: create database db1 charset="gbk"; 2.查,查看数据库全部信息 纵观所有的数据库:show databases; 详细信息:show create database db1; 3.改,修改数据库编码集 alter database db1 charset="utf8" 4.删,移除数据库 drop database db1;
六:表的基本操作
前提:在具体的某个库下创建表 进入指定的数据库:use db1 确定当前使用的数据库:select database(); 1.增,创建表(字段1,类型,... ,字段n 类型) create table t1(name char,age int); 2.查,查看表信息 纵观所有的数据库:show tables; 详细信息:show create table t1; 表字段结构信息:desc t1; 3.改 修改字段属性:alter table t1 modify name char(20); 修改字段名:alter table t1 change name usr char(16); 修改表名:alter table t1 rename t2; 4.删,移除表 drop table t1;
七:字段的基本操作
前提:知道具体操作的是哪张表 1.增,添加字段 insert into t1(usr,age) values ("aa",18),("bb",8); 2.查 select * from t1; 3.改 update t1 set age=28 where usr="aa"; 4.删 delete from t1 where age>8;