MySQL(一)
一.数据库管理软件的由来
1.程序所有的组建不可能运行在一台机器上
如果运行在一台机器上,那么这台机器出现问题就意味着软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器的性能终归是有限的.
所以我们只能通过水平扩展来增强我们系统的整体性能,着就需要将程序的各个组件分布于多台机器上去执行.
2.数据安全问题
根据上述描述,我们将程序的各个组件分布到各台机器,但需知道各组件仍然是一个整体,言外之意,所有组件的数据还是要共享的,但每台机器上的组件都只能操作本机的文件,这导致了数据必然不一致.
于是想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(使用socket),即共享这台机器上的文件,共享意味着竞争,会发生数据不安全,就需要加锁处理.
3.并发
根据2的描述,我们必须写一个socket服务端来管理这台机器上的文件,然后写一个socket客户端.
总结:
在编写程序之前,都需要事先写好基于网络操作一台主机上文件的程序,于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全稳定性一系列问题,把程序员从数据管理中解放出来,专注于自己的程序逻辑的编写
二.数据库介绍
1.数据(Data)
描述事物的符号记录称为数据,描述事物的符号也可以是数字,可以是文字,图片,语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机.
2.数据库(DataBase,简称DB)
数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一点的格式存放的.
数据库是长期存放在计算机内,有组织,可共享的数据.
数据库中的数据按一定的数据模型组织,描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享.
3.数据库管理系统(DataBase Management System 简称DBMS)
在了解了Data和DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键.
这就用到了一个系统软件数据库管理系统
4.数据库服务器,数据库管理系统,数据库,表与记录的关系
数据库服务器:运行数据库管理软件
数据库管理软件:管理数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多行记录
三.MySQL介绍
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前数据Oracle旗下公司.MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS应用软件之一.
数据库管理软件分类
关系型:db2, oracle, access,sqlserver,MySQL
非关系型:mongodb, redis, memcache
四.下载安装
1.下载
进入MySQL官方网站:https://www.mysql.com/,选择Download,选择免费的社区版
在选择MySQL Community Server,根据自己电脑下载选择需要的版本
2.安装
解压下载好的安装包,根据自己的需要选择解压路径
新增系统环境变量:键名:MYSQL_HOME 值为:之前解压的路径如(D:\MySQL\mysql-5.7.23-winx64)
再在Path中添加:%MYSQL_HOME%\bin,注意Path中不同值之间的'';''符号不能省略
由于我安装的是5.7.23所以准备好配置文件my.ini,之前的版本解压后就会存在mydefault.ini文件,文件内容如下
编辑好文件之后,将my,ini文件放到安装路径下
接下来以管理员身份打开cmd命令窗口,将目录切换到MySQL的安装目录的bin目录下
执行以下语句进行MySQL的安装
mysqld -install
执行命令后提示:Service successfully installed.表示安装成功
执行以下语句进行MySQL的初始化
mysqld --initialize-insecure --user=mysql
执行命令后会在MySQL的安装目录下生成data目录并创建root用户。
执行以下命令以启动mysql服务
net start mysql
执行后会有如下提示:
MySQL服务正在启动...
MySQL服务已经启动成功.
执行net stop mysql 可以关闭MySQL服务
五.mysql软件基本管理
1.登录,设置密码
初始状态下,管理员root,密码为空,默认只允许从本机登录localhost 设置密码 [root@egon ~]# mysqladmin -uroot password "123" 设置初始密码 由于原密码为空,因此-p可以不用 [root@egon ~]# mysqladmin -uroot -p"123" password "456" 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码 命令格式: [root@egon ~]# mysql -h172.31.0.2 -uroot -p456 [root@egon ~]# mysql -uroot -p [root@egon ~]# mysql 以root用户登录本机,密码为空
2.忘记密码.window平台下,5.7版本mysql,破解密码的两种方式
#1 关闭mysql #2 在cmd中执行:mysqld --skip-grant-tables #3 在cmd中执行:mysql #4 执行如下sql: update mysql.user set authentication_string=password('') where user = 'root'; flush privileges; #5 tskill mysqld #或taskkill -f /PID 7832 #6 重新启动mysql
#1. 关闭mysql,可以用tskill mysqld将其杀死 #2. 在解压目录下,新建mysql配置文件my.ini #3. my.ini内容,指定 [mysqld] skip-grant-tables #4.启动mysqld #5.在cmd里直接输入mysql登录,然后操作 update mysql.user set authentication_string=password('') where user='root and host='localhost'; flush privileges; #6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了
六.初始sql语句
数据库服务器中存放的是库(文件夹)表(文件)表里面放的是记录 库相关 创建 create database 数据库名 character set 编码名称; 修改 alter database 数据库名 charset gbk; 查看 show databases; show create database 数据库名; 查看建库语句 删除 drop database 数据库名;
表相关 创建 create table 表名(id int, name char); 修改 修改表结构: alter table 表名 add|drop|modify|change; add 后面跟 字段名 数据类型 drop 后面跟 字段名 modify 后面跟 字段名 数据类型 change 后面跟 旧字段名 新字段名 数据类型 改属性 编码 alter table t1 charset 编码名称; 表名 rename table 旧表名 to 新表名; 查看 show tables; show create table 表名; 查看建表语句 desc 表名; 查看表结构 删除 drop table 表名; truncate table 表名; 重建表 记录相关 创建 insert into 表名 values(值1...),(值1...)... 插入时注意 值的顺序和类型与表结构一致 修改 update 表名 set 字段名 = 新值,字段名 = 新值... where 条件 查看 select *|字段名 from 表名 *表示所有字段 删除 delete from 表名 where 条件
清空表:
delete from t1;如果由自增id,新增的数据,仍然是以删除前的最后一样作为起始
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始
auto_increment 表示:自增
primary key 表示:约束;加速查找