01 数据库—— 概念 下载安装 增删改查

一、数据库介绍

1.数据库(DataBase,简称DB)

数据库 是一个可以在一台机器上独立工作的,并且可以给用户提供高效、便捷的方式对数据进行增删改查的一种工具。

 

如果我们暂且忽略用文件来存取数据的效率问题,并且假设程序所有的组件都运行在一台机器上,那么用文件存取数据,并没有多大问题。

然而,我们不可能把程序的所有组件都放在一台机器上,假如你二币那样做了,风险极大,一旦机器崩溃,老板不得骂哭你,因此需要多台机器来分散风险,一台挂了也影响不大

并且一台机器的执行效率也受制于目前的硬件水平,硬件水平很难提升,所以执行效率就低,但是假如有十台机器那不就是有十个内存十个cpu么,毕竟团结力量大

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

于是我们想到了将数据与应用程序分离:把文件存放于一台机器,然后将多台机器通过网络去访问这台机器上的文件(用socket实现),即共享这台机器上的文件

 

1.程序稳定性 :任意一台服务所在的机器崩溃了都不会影响数据和另外的服务。

2.数据一致性 :所有的数据都存储在一起,所有的程序操作的数据都是统一的,就不会出现数据不一致的现象

3.并发 :数据库可以良好的支持并发,所有的程序操作数据库都是通过网络,而数据库本身支持并发的网络操作,不需要我们自己写socket

4.效率 :使用数据库对数据进行增删改查的效率要远远高出将数据存入文件中

2.数据库管理系统(DataBase Management System 简称DBMS)

2.1 关系型数据库

关系型数据库通常都是表结构,也就意味着你在用关系型数据库的时候,第一步就是确定表结构

mysql    开源,免费主要用于大型门户,例如搜狗、新浪等,他现在是甲骨文公司的产品。
oracle   安全性高,功能强大,但是贼贵,主要用于银行、铁路、飞机场等,也是甲骨文公司的产品。
sql server   是微软公司的产品,主要应用于大中型企业,如联想、方正等。

sqlite         小,轻量级

db2 

数据与数据之间可以有关联和限制的

字段有特定的类型,例如:
            存名字用字符串
            存密码用数字
            存生日用日期

2.2 非关系型数据库

通常都是以k,v键值的形式 存储数据,没有表结构

redis,
mongodb  文档型数据库 非常接近关系型的非关系型数据,爬虫要用
memcache

二、MySQL 数据库管理软件

1.本质就是一款基于网络通信c/s架构的应用软件
  任何基于网络通信的软件 底层都是socket

2.服务端 / 客户端:
        -基于socket通信
        -收发消息
        -SQL语句(是一个公共的标准,IBM公司开发)

ps:   MySQL不单单支持MySQL的客户端来操作 也支持其他编程语言直接操作
        python java c++ php语法都不一样,所以也就出现了共同的沟通语言即SQL语句

 

3.MySQL其实可以把它看成一款支持远程操作文件的软件,

对应文件存储数据:

        库 >>> 文件夹
        表 >>> 文件
        记录 >>> 文件内一行行的数据

表头 就是表格的第一行数据,表头内写的是一个个字段(字段名+字段类型),比如name,password

三、MySQL 下载和配置

1.下载解压 

目前已经出到8.0版本,下载常用的5.6左右即可,IT行业千万不要轻易尝试最新版本,除非老板发话

下载之后 是将MySQL的服务端和客户端都下载了下来


解压即可不用安装,查看文件目录,bin下的mysqld为服务端,mysql微客户端

 

 

 

 2.初次登录

 

2.1  先以管理员打开一个cmd窗口  启动服务端 mysqld:
    1.切换到bin目录下
    2.执行mysqld
    ps:做前期MySQL配置的时候 终端建议你用管理员身份运行
      .windows+r启动的是普通用户
      .搜索 输入cmd 右键以管理员身份运行

mysql在初始登陆的时候 是没有密码的 直接回车即可

mysql中的sql语句 是以分号结束的 不敲分号 默认你没有输入完
客户端还会让你继续输入

 

2.2  再打开一个cmd窗口  打开客户端mysql,并登录管理员
mysql -h 127.0.0.1 -P 3306 -uroot -p
可以简写
mysql -uroot -p

如果不输入用户名和密码 只输入mysql ,默认是访客模式登陆 所能用到的功能很少

 

2.3 基本方法

#客户端退出登陆
exit;
quit;


#查看所有的数据库
show databases;

#cmd中查看或杀死某个进程
tasklist |findstr 名称

taskkill /F /PID 进程号
例如:
tasklist |findstr mysqld 得到mysqld的进程号为7777
taskkill /F /PID 7777 杀死mysqld

 

#查看系统服务   services.msc

3.添加环境变量、制作系统服务

3.1 添加 mysql 环境变量

每次启动mysql的客户端还有服务端都需要先切换到bin文件夹下,是不是贼烦?

可以将启动文件所在的bin文件夹直接添加到环境变量中,之后打开cmd直接输入mysql或者mysqld就可以了,不用再切换文件夹

注意:配置完之后一段要重新启动mysql服务端及cmd终端

 

 3.2 将mysqld 制作成系统服务 开机自启 

虽然不需要切换路径了但是还有一个问题,每次都需要先启动服务端,也就是要启动两个cmd窗口,是不是也贼烦?

制作系统服务 你的cmd终端一定要是管理员身份

cmd 终端输入 :   mysqld --install

services.msc启动‘服务’,在里面可以看到MYSQL,点击进去选择自动启动,点击启动服务就启动了,以后开机自启,再也不用管了,是不是爽的一批,恩恩??

 

 4. 修改密码

没有密码的情况下
mysqladmin -uroot -p password 123
有密码的情况下
mysqladmin -uroot -p123 password 123456

 

 

5.破解密码

 1.先将已经启动的服务端停掉

2.跳过用户名和密码的验证功能 ,启动服务端,cmd中输入
mysqld --skip-grant-tables 启动服务端 跳过授权表


3.重新启动一个cmd,无密码登录客户端,mysql中修改管理员用户对应的密码
update mysql.user set password=password(123) where user='root' and host='localhost';


4.关闭当前服务端 重新以校验用户名密码的方式启动


5.正常以用户名密码的方式 连接mysql服务端

 

6.配置文件、自动登录

问题一:原本配置编码不统一,需要修改为utf-8

问题二:每次登录管理员都要输 mysql -uroot -p  和 密码 ,我很烦,直接写入配置文件,只后只需要输入mysql自动登录管理员

 

6.1 查看原本配置

\s   查看 mysql服务端简单配置

\c    当命令输入错误的时候 可以用\c取消前面的命令 cancel

 

6.2 编写配置文件  统一编码
通常情况下配置文件的后缀都是ini结尾

mysql自带的配置文件不要修改

但是你可以新建一个配置文件 my.ini,名字必须为my,后缀有可能会隐藏,配置好后记得把属性‘只读’去掉,不然可能不成功
mysql服务端在启动就会自动加载你的my.ini配置文件内的配置

修改了配置文件一定要services.msc重启服务端

 

 

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

[client]
default-character-set=utf8

[mysql]
user='root'
password=123
default-character-set=utf8 

 四、库、表、记录的增查改删

 

数据库的基本操作
    库  类似于文件夹
        增
            create database db1;
        查
            show databases;  查所有
            show create database db1;  查单个
        改
            alter database db1 charset='gbk';  修改编码
        删
            drop database db1;  删库
    表
        在创建表的时候 需要先指定库
            指定库:  use 库名
            查看当前虽在的库: select database()

        增
            create table userinfo(id int,name char);

        查
            show tables;  查看某个库下面的所有的表
            show create table userinfo;
            desc userinfo;    <==> describe userinfo;
        改
            alter table userinfo modify name char(32);
            alter table userinfo change name name1 char(2);
        删
            drop table userinfo;


    记录
        先创建一个库或者指定一个已经存在的库
        切换到该库下 创建表
        然后再操作记录
        create database db1;
        create table userinfo(id int,name char(32),password int);

        增
            insert into userinfo values(1,'jason',123);  插入单条数据
            insert into userinfo values(1,'jason',123),(2,'egon',123),(3,'tank',123);  插入多条数据
        查
            select * from userinfo;  查询所有的字段信息
            select name from userinfo;  查询指定字段信息
            select id,name from userinfo where id=1 or name=tank;  带有筛选条件的字段信息
        改
            update userinfo set name='kevin' where id=1;  修改数据的一个字段信息
            update userinfo set name='jason',password=666 where id=1;  修改数据的多个字段
        删
            delete from userinfo where id =1;  指定删符合条件的数据
            delete from userinfo;  将表中的数据全部删除
            truncate table t1;数据量大,删除速度比上一条快
库、表、记录 的增查改删

 

 

 

 

 

 

posted @ 2019-08-17 22:47  www.pu  Views(320)  Comments(0Edit  收藏  举报