zoukankan      html  css  js  c++  java
  • 1初识数据库mysql

    一、前言

    1.1 什么是数据库(DataBase,简称DB)

    数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库是长期存放在计算机内、有组织、可共享的数据集合

    将所有数据存放到一个第三方的公共位置(数据库),同一个软件凡是需要操作数据的,就必须去这个共享的位置操作。

    数据库集群: 将同一个数据库中的数据,复制到不同的服务器中。

    SQL:结构化查询语言

    1.2 什么是数据库管理系统(简称DBMS)

    如何科学地组织和存储数据,如何高效获取和维护数据成了关键。如MySQL,Oracle,Access等
    数据库管理软件分类:
    1. 关系型数据库: MySQL、postgreSQL、Oracle、DB2、sql server、.... 注意:sql语句通用
    关系型数据库需要有表结构

    • 1)表结构
      - 需要哪些字段
      - 字段是什么类型

    • 2)字段与字段类型
      - name ---> 'tank' ----> 字符串
      - age ---> 17 ---> 整型

    2. 非关系型数据库: redis、mongodb...
    非关系型数据库一般以 key:value的形式存储,没有表结构

    二、Mysql数据库

    MySQL数据库: 基于socket编写的 C ---> S架构的软件

    1. mysql数据库本质上就是一个基于网络通信的软件。
    2. 所有基于网络通信的软件,底层都是socket。

    如何安装配置使用Mysql?

    Windows系统下

    1、下载:http://dev.mysql.com/downloads/mysql/
    
    2、解压安装包
    
    3、添加环境变量
    	-【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中】
     
    4.以管理员身份打开CMD,输入mysqld启动服务端,此时会卡住
        
    5.在新建一个cmd,mysql客户端连接服务端,输入mysql -h 127.0.0.1 -P 3306 -p 密码
    
        - mysql初始化时无密码,可以进入游客模式,功能会很少
        - 无密码直接进入 ---》 不需要“-p 密码”
        - bin目录下的: mysql.exe
        	全写: mysql -h 127.0.0.1 -P 3306 -p 密码
        	简写: mysql -uroot -p 密码
        	
    6.退出数据库客户端
        - exit;
        - quit;
    
    
    注意: SQL语句末尾必须加 “;” 号。
    CMD
    mysql -h主机名或IP -u用户名 -p密码
    mysql -hlocalhost -uroot -proot
     
    -h:代表MySQL的主机名或IP地址,如:-h 127.0.01   -hlocalhost
    
    -u:代表MySQL中的用户名,默认是root
    
    -p:代表MySQL中用户的密码,默认是root
    
    1.服务器程序:存取数据是服务器的工作
    
    2.客户端程序:命令服务器来完成存取工作,
    			 客户端将命令发送给服务器,服务器解析执行命令,返回客户端要的数据
    
    - 查看操作系统中是否已经启动mysqld 服务端
    	- tasklist | findstr "mysqld"
           
    - 杀死mysqld进程
    	- taskkill /F /PID pid号
    
    - *****做服务端操作时,必须先以管理员身份打开
    
    - 制作系统服务:
    
        - 1.必须将已启动的服务端mysqld关掉
        - 2.删掉已经启动过的mysqld的进程
        - 3.输入  mysqld --install ----> 安装mysqld系统服务
        - 4.输入 net start mysql
    
    服务器为了保证数据安全需要进行用户认证
    
    默认有一个root 账户,默认没有密码,不安全
    
    - 密码设置及修改(在服务器的终端进行操作):
    
        - 默认没有密码的情况下,设置密码
            - cmd>>>: mysqladmin -uroot password 123
    
        - 有密码的情况下,修改密码
            - cmd>>>: mysqladmin -uroot -p原密码 password修改的密码
            - cmd>>>: mysqladmin -uroot -p123456 password 123
    -修改root密码
    C:Windowssystem32>mysqladmin -uroot -p password 123
    Enter password:
    Warning: Using a password on the command line interface can be insecure. - 破解密码: 当密码忘记时采用 - 1.关闭服务端 - 2.跳过权限启动服务端 - cmd>>>: mysqld --skip-grant-tables - 3.客户端进入游客模式: - cmd>>>: mysql - update mysql库.user表名 set 字段password=字段password('字段值') where 条件(若条件成立,则修改)user="root"; - cmd>>>: update mysql.user set password=password('123456') where user="root"; - 4.重新启动服务端,不要跳过权限认证 - 先kill掉跳过权限认证启动的服务端进程 - 再手动去开服服务中的mysql服务即可

    设置配置文件

       - 1.先在mysql目录下  --》 D:mysql-5.6.40-winx64
    
       - 2.创建一个名为 “my.ini” 的文件,这个是mysql的配置文件
       
    配置文件:
    
    	[mysqld]
    	character-set-server=utf8
    	collation-server=utf8_general_ci
    	
    	# 这个是用python软件连接的客户端
    	[client]
    	default-character-set=utf8
    	
    	# mysql软件的客户端
    	[mysql]
    	# 可写,可不写这样可以不需要用户名与密码直接登录mysql
    	# user='root'
    	# password=123
    	
    	# 设置默认的字符编码
    	default-character-set=utf8
    
       - 3.重启mysql服务,即修改成功!
    

    三、存储引擎

    存储引擎是用于根据不同的机制处理不同的数据。
    
    - 查看mysql中所有引擎:show engines;   
          - myisam: 5.5以前老的版本使用的存储引擎
          - blackhole: 类似于队列中的数据,存进去消失
          - innodb: 默认使用的存储引擎
                - 支持事务
                - 行锁
                - 外键
          - memory: 通电数据存在,断电丢失
    # 存储引擎 -- 存储数据的方式
    # 一张表
        # 数据
        # 表的结构
        # 索引(查询的时候使用的一个目录结构)
    
    # Innodb存储引擎    mysql5.6之后的默认的存储引擎
    # 数据和索引存储在一起 2个文件
        # 数据索引表结构
    # 数据持久化
    # 支持事务   : 为了保证数据的完整性,将多个操作变成原子性操作   : 保持数据安全
    # 支持行级锁 : 修改的行少的时候使用                          : 修改数据频繁的操作
    # 支持表级锁 : 批量修改多行的时候使用                        : 对于大量数据的同时修改
    # 支持外键   : 约束两张表中的关联字段不能随意的添加删除      : 能够降低数据增删改的出错率
    
    
    # Myisam存储引擎    mysql5.5之前的默认的存储引擎
    # 数据和索引不存储在一起  3个文件
        # 数据索引表结构
    # 数据持久化
    # 只支持表锁
    
    # Memory存储引擎
    # 数据存储在内存中, 1个文件
        # 表结构
    # 数据断电消失
    
    # 面试题
    # 你了解mysql的存储引擎么?
    # 你的项目用了什么存储引擎,为什么?
        # innodb
        # 多个用户操作的过程中对同一张表的数据同时做修改
        # innodb支持行级锁,所以我们使用了这个存储引擎
        # 为了适应程序未来的扩展性,扩展新功能的时候可能会用到...,涉及到要维护数据的完整性
        # 项目中有一两张xx xx表,之间的外键关系是什么,一张表的修改或者删除比较频繁,怕出错所以做了外键约束
    
    create table t1(id int)engine=innodb;
    create table t2(id int)engine=myisam;
    create table t3(id int)engine=blackhole;
    create table t4(id int)engine=memory;
    
    插入数据验证引擎的作用:
    insert into t1 values(1);
    insert into t2 values(2);
    insert into t3 values(3);
    insert into t4 values(4);
    
    mysql> select * from t1;
    +------+
    | id   |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
    
    mysql> select * from t2;
    +------+
    | id   |
    +------+
    |    2 |
    +------+
    1 row in set (0.01 sec)
    
    mysql> select * from t3;
    Empty set (0.00 sec)
    
    mysql> select * from t4;
    +------+
    | id   |
    +------+
    |    4 |
    +------+
    1 row in set (0.00 sec)
    # 环境变量
    # python -->python.exe
    # 在任何目录下都能够找到python.exe文件
    # 才能在任意位置输入python命令启动python解释器
    
    # mysqld install  安装mysql服务  mysql服务就被注册到操作系统中
    # net start mysql 启动mysql服务
    # net stop mysql
    #这边启动时结尾不需要加分号
    # 启动客户端连接server
    # mysql -uroot -p123 -h192.168.14.12
    
    # mysql>select user();   查看当前登录的用户
    # mysql>set password = password('123'); 给当前用户设置密码
    #
    # 创建一个其他用户
    # create user 'guest'@'192.168.14.12   一个ip
    # create user 'guest'@'192.168.14.%' identified by '123';  允许什么样的网段(一个班)来访问你
    # 给一个用户授权
    # grant 权限类型 on ftp.* to 'guest'@'192.168.14.%';  #ftp是一个库
    # grant all
    # grant select on day37.* to 'guest'@'192.168.14.%';
    # grant select,insert
    
    
    # 操作数据库
    # 查看所有数据库  show databases;
    # 创建一个数据库  create database 数据库名;
    # 切换到这个库下  use 数据库的名字
    # 查看这个库下有多少表 show tables;
    #drop databases 删除数据库
    #select vserion() 或者命令行中输入mysql --version 查看数据库的版本
    # 操作表 # 创建一张表 # create table student(name char(12),age int); # 查看表结构 # desc student; # 操作数据 # 插入数据 : insert into student values ('wusir',73); # 查询数据 : select * from student; # 修改数据 : update student set age=85 where name='alex'; # 删除数据 : delete from student where name = 'alex'; # # https://www.cnblogs.com/Eva-J/articles/9676220.html # # # #进入mysql客户端 # $mysql # mysql> select user(); #查看当前用户 # mysql> exit # 也可以用q quit退出 # # # 默认用户登陆之后并没有实际操作的权限 # # 需要使用管理员root用户登陆 # $ mysql -uroot -p # mysql5.6默认是没有密码的 # #遇到password直接按回车键 # mysql> set password = password('root'); # 给当前数据库设置密码 # # # 创建账号 # mysql> create user 'eva'@'192.168.10.%' IDENTIFIED BY '123';# 指示网段 # mysql> create user 'eva'@'192.168.10.5' # 指示某机器可以连接 # mysql> create user 'eva'@'%' #指示所有机器都可以连接 # mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限 # # 远程登陆 # $ mysql -uroot -p123 -h 192.168.10.3 # # # 给账号授权 # mysql> grant all on *.* to 'eva'@'%'; # mysql> flush privileges; # 刷新使授权立即生效 # # # 创建账号并授权 # mysql> grant all on *.* to 'eva'@'%' identified by '123' #mysql默认端口 3306

     配置文件my.ini

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8
    [mysqld]
    #设置3306端口
    port = 3306
    # 设置mysql的安装目录
    basedir=D:mysql-5.6.44-winx64
    # 设置mysql数据库的数据的存放目录
    datadir=D:mysql-5.6.44-winx64data
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
  • 相关阅读:
    ThreadLocal
    贪心算法
    KMP
    多线程设计模式
    String 为什么是不可变的
    6-Ubuntu—截屏与截取选定区域
    5-Ubuntu—查看进程并关闭进程
    4-python基础—查看模块所在位置(适应于任何操作系统)
    4-Ubuntu—终端下重启与关机
    3-python基础—enumerate()
  • 原文地址:https://www.cnblogs.com/wddxx/p/13735366.html
Copyright © 2011-2022 走看看