• MySQL基础


    一、关于数据库

    1、什么是数据库


    如果一个项目是动态(通过网页的后缀.jsp .php .html)内容的话,数据库是必不可少的一个环节。

    2、MySQL简介

      MySQL是一个关系型数据管理系统,由瑞典MySQL AB公司开发,2008年被SUN公司收购,目前属于Oracle旗下。MySQL是最流行的数据库管理系统之一。

    3、常见的其他数据库软件

      目前市场上还有:Oracle(重量级的数据库)、MS SQL Server(微软的)、Access(微软的)、PostgreSQL、DB2、Mariadb(MySQL分支,完全兼容MySQL)。

    二、MySQL的安装与初始化

    操作之前先确保计算机时间准确。

    1、Linux下的软件安装方式(初步)

    a.源码包
    优点
      开源,如果有足够的能力可以修改源代码
      编译安装,更加适合自己的系统稳定高效
    缺点:
      安装步骤较多,容易出错
      编译过程时间较长
    案例:使用源码编译方式安装ncurses(一种常用的数据库)

    扩展:解包
    常用语法:
        #tar -zxvf *.tar.gz   //gzip压缩的文件
        #tar -jzvf *.ter.bz2   //bzip2压缩的文件
    选项含义:
        -z或--gzip或--ungzip:通过gzip指令处理文件;
        -x或--extract或--get:从文件中还原文件
        -v:显示操作过程;
        -f或--file:指定一个文件;
        -j:支持bzip2解压文件;
    

    ①先将软件包通过文件传输工具传输到服务器上“/usr/local/src”
    ②解压需要安装的源码包,解压完成以后就可以看到一个文件夹
    #tar -zxvf ncurses-6.1.tar.gz
    ③切换到源码文件夹,然后执行后续操作

    #cd ncurses-6.1
    

    配置(config/configure/bootstrap)->编译(make/bootstrapd)->安装(make install/bootstrapd install)
    配置操作主要是指定软件的安装目录、需要的依赖在什么地方、指定不需要可选依赖、配置文件的路径、通用数据存储位置等。
    指定安装的路径:-prefix=路径
    需要依赖的路径:-with-PACKAGE名=包所在的路径
    不需要依赖:--without-PACHAGE 名

    [root@xia~]# ./configure --prefix=/usr/local/ncurses   //回车后开始安装
    

    [root@xia~]# make
    

    [root@xia~]# make install
    


    成功之后查看目录(可选):

    b.二进制包(rpm)

      优点:包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载
      缺点:经过编译,不再可以看到源代码
    回顾rpm相关指令:

    #rpm -galgrp 关键词
    #rpm -e 关键词 [--nodeps]
    #rpm -ivh 完整名称
    #rpm -Uvh 完整名称
    #rpm -qf 文件路径   //查询指定文件属于哪个包
    [root@xia /]# rpm-qf /etc/cups 
    cups-1.6.3-43.e17.×8664
    paps-0.6.8-28.e17.1.×8664
    

    案例:使用二进制包安装lynx(一款纯命令行的浏览器)

    例如查看百度:#lynx --dump www.baidu.com
    c、yum等傻瓜式安装
      优点:安装简单、快捷
      缺点:完全失去了自定义性
    如果不更改软件来源的情况下,是需要联网才能使用yum的。
    常用的yum指令:

    #yum list   //列出当前已经装的和可以装的软件(全部)
    #yum search 名   //搜索指定的关键词的包
    #yum [-y] install 包名   //安装某个包(有-y表示不需要确认直接安装)
    #yum [-y] update [包名]   //扫描需要更新和没有安装的包(包名可选)然后进行安装和更新
    #yum [-y] remove 包名   //卸载指定的包
    

    案例:使用yum卸载火狐浏览器
    #yum remove firefox

    案例:使用yum安装火狐浏览器
    #yum install firefox

    2、安装MySQL(重点)

    注:此处安装以yum安装为例
    #yum install mysql-server

    完成后:

    2.2、MySQL初始化
    #service mysqld start

    查看端口号(默认端口号)

    #mysql_secure_installation
    Enter current password for root(enter for none):请输入当前root用户的密码,如果没有按回车,注意此root密码并非Linux的root用户。
    Set root password?是否设置密码
    New password新密码
    Remove anonymous users?是否移除匿名用户,选择移除(Y)
    Disallow root login remotely?是否允许远程登录(默认不允许)
    Remove test database and access to it ?是否移除测试数据库(建议先不要移除)
    Reload privilege tables now?是否重新加载权限表
    (当我们修改了MySQL用户的信息之后,建议去重新加载权限)

    2.3、MySQL的启动控制
    语法:service masql start/stop/restart
    进入mysql的方式:

    #mysql -u 用户名 -p
    


    进入以后就可以使用MySQL语句了
    退出MySQL到Linux命令行:
    mysql>exit
    2.4、默认目录/文件位置(了解)
    数据库存储目录:/var/lib/mysql
    配置文件:/etc/my.cnf

    三、mysql的基本操作

    1、名词介绍

    以excel文件为例
      数据库:整个excel文件
      数据表:Excel的工作表
      行(记录):可看作是工作表中的一行
      列(字段):可看作是工作表中的一列

    2、库操作

    以下命令在mysql终端命令行中执行(大小写均可)

    show databases;   //显示当前MySQL中全部的数据库
    create database 库名;   //创建一个数据库
    drop database 库名;   //删除数据库
    use 库名;    //切换数据库
    

    show databases效果

    创建yunwei数据库

    切换数据库

    3、表操作

    show tables    //显示当前数据库中所有的表名(必须先use数据库)
    create table 表名称     //在当前数据库下创建数据表
    (
    列名称1数据类型[not null auto_increment],
    列名称2数据类型,
    列名称3数据类型,
    ....,
    PRIMARY KEY(主键)
    );
    常见的数据类型:int(整型)、char(定长字符)、varchar(不定长字符)
    主键一般具有唯一性比如id
    desc 表名;   //描述一个数据表(查看表结构)
    drop table [if exists] 表名;   //删除一个数据表
    

    案例:使用上述语法
    查看所有的数据表

    创建数据表(去test库中创建)
    要求:表名xg,要求有字段如下:
      id字段,11位整型,不为空,自增,主键
      username字段,varchar类型,20长度
      password字段,char类型,32长度
    SQL语句:

    Create table xg(
        id int(11) not null auto increment,
        username varchar(20),
        password char(32),
        primary key(id)
    );
    


    查看表结构

    删除数据表

    4、记录/字段操作(重点)

    4.1、增加记录

    语法1:INSERT INTO 表名称 VALUES (值1,值2,..值n);
    语法2:INSERT INTO 表名称 (列1,列2....)VALUES(值1,值2...);
    

    案例:往数据表xg表中新增一个记录username为zhangsan,password为123456(加密结果是E10ADC3949BA59ABBE56E057F20F883E)
    sql语句:insert into xg('username','password') values('zhangsan','E10ADC3949BA59ABBE56E057F20F883E');

    要求前面的列名与值一一对应
    4.2、更新记录
    语法:UPDATE 表名称 SET 列名1=新值1,列名2=新值2...WHERE 列名称 = 某值;
    案例:使用更新语句更新id大于等于2的记录,将其密码改为:12345678
    sql语句:
    update xg set password='12345678' where id>=2;

    以后在执行影响行数的sql操作时,一定要注意条件写错或者漏写
    4.3、查询记录

    SELECT 列名1,列名2...,FROM 表名称 WHERE 条件;
    SELECT * FROM 表名称 WHERE 条件;
    

    案例:查询用户名和密码,并且是id=2的:
    select username,password from xg where id=2;

    查询全部:
    select username,password from xg;

    4.4、删除记录
    DELETE FROM 表名称 WHERE 列名称=值;
    案例:删除id为2的记录
    sql语法:
    delete from xg where id=2;

    5、备份

    5.1、备份

    全量备份(数据+结构):#mysqldump -uroot -p123456 -A > 备份文件路径
    指定库备份(数据+结构):#mysqldump -uroot -p123456 库名 > 备份文件路径
    多个库备份(数据+结构):#mysql -uroot -p123456 --databases db1 db2 > 备份文件路径
    xxx.sql    xxx.tar.gz
    

    命令执行不需要进入MySQL,在Linux下进行
    案例:备份整个数据库
    指令:mysqldump -uroot -pqhabofhlluB9 -A > /root/sql_201804061609.sql

    案例:每一分钟备份一次test数据库
    指令:新建shell脚本文件

    进入#crontab -e
    计划任务编写:

    等待一会观察目录变化:

    5.2、还原(导入)
    还原部分分(1)mysql命令行source方法和(2)系统命令行方法

    1.还原全部数据库
    (1)mysql命令行:mysql> source 备份文件路径
    (2)系统命令行:mysql -uroot -p12345 < 备份文件路径
    2、还原单个数据库(需要指定数据库)
    (1)mysql命令行:mysql> use 库名
                     mysql> source 备份文件路径
    (2)系统命令行:mysql -uroot -p12345 库名 < 备份文件路径
    3、还原单个数据库中的多个表(需指定数据库)
    (1)mysql命令行:mysql> use 库名
                     mysql> source 备份文件路径
    (2)系统命令行:mysql -uroot -p12345 库名 < 备份文件路径
    4、还原多个数据库,(一个备份文件里有多个数据库,此时不需要指定)
    (1)mysql命令行:mysql> source 备份文件路径
    (2)系统命令行:mysql -uroot -p12345 < 备份文件路径
    

    案例1:人为删除xg表(模拟数据表丢失),然后通过最后一次的备份还原出数据表
    先删除数据表:

    还原数据表:

    案例2:需要还原sql文件到test库(modile.sql 31万条数据)

    查看数据库时有些字符不能正常显示,需设置MySQL连接字符集:
    mysql> set names utf-8; //三码一致,服务器端+传输过程中+客户端

    四、扩展

    1、mysql远程管理工具

    分为两大类:B/S架构、C/S架构
    B/S:B是指浏览器,S是指服务器,例如:百度搜索应用就属于BS架构的软件
    C/S:C是指客户端,S是指服务器,例如:QQ,电脑端微信等应用程序
    在BS中,MySQL有个典型的管理工具:PMA(phpMyAdmin)

    在CS架构中,典型的软件有:navicat、mysql workbrach

    要解决的问题:允许mysql远程登录

    a、先进入数据库选择mysql数据库;
    b、执行sql语句:select host,user from user

    c、将其中一个记录的host值改为“%”,表示可以允许任何地方登录

    d、刷新权限表或者重启mysql
      刷新权限:mysql> flush privileges;

    e、navicat登录成功

  • 相关阅读:
    Django 各个 app 存放在同一文件夹下
    Django 的登录验证装饰器
    001语言基础
    004 系列:元组,列表和字符串
    003数值类型
    002程序流程控制
    WPF事件
    C++中extern关键字的作用
    C/C++中extern关键字详解
    运算符重载,是成员函数还是友元函数
  • 原文地址:https://www.cnblogs.com/xiaxiangming/p/15142802.html
Copyright © 2020-2023  润新知