mysql基础

1. 关系型数据库介绍

1.1 数据结构模型

数据结构模型主要有:

  • 层次模型
  • 网状结构
  • 关系模型

关系模型:
二维关系:row(行),column(列)

数据库管理系统:DBMS
关系:Relational,RDBMS

1.2 RDBMS专业名词

常见的关系型数据库管理系统:

  • MySQL:MySQL,MariaDB,Percona-Server
  • PostgreSQL:简称为pgsql
  • Oracle
  • MSSQL

SQL:Structure Query Language,结构化查询语言

      存放方式:结构化数据                                    数据库里存放的数据二维关系云里存放的数据

                        半结构化数据                                 文本文件里面放的都是文字或者数字

                        非结构化数据                                  文件,视频等

约束:constraint,向数据表提供的数据要遵守的限制

  • 主键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。且必须提供数据,不能为空(NOT NULL)。
    • 一个表只能存在一个
  • 惟一键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。允许为空(NULL)
    • 一个表可以存在多个
  • 外键约束:一个表中的某字段可填入数据取决于另一个表的主键已有的数据
  • 检查性约束

索引:将表中的一个或多个字段中的数据复制一份另存,并且这些数据需要按特定次序排序存储

1.3 关系型数据库的常见组件

关系型数据库的常见组件有:

  • 数据库:database
  • 表:table,由行(row)和列(column)组成
  • 索引:index
  • 视图:view
  • 用户:user
  • 权限:privilege
  • 存储过程:procedure
  • 存储函数:function
  • 触发器:trigger
  • 事件调度器:event scheduler

1.4 SQL语句

SQL语句有三种类型:

  • DDL:Data Defination Language,数据定义语言
  • DML:Data Manipulation Language,数据操纵语言
  • DCL:Data Control Language,数据控制语言

 

 

 

SQL语句类型对应操作
DDL CREATE:创建
DROP:删除
ALTER:修改
DML INSERT:向表中插入数据
DELETE:删除表中数据
UPDATE:更新表中数据
SELECT:查询表中数据
DCL GRANT:授权
REVOKE:移除授权

 

2. mysql安装与配置

2.1 mysql安装

mysql安装方式有三种:

  • 源代码:编译安装
  • 二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
  • 程序包管理器管理的程序包:
    • rpm:有两种
      • OS Vendor:操作系统发行商提供的
      • 项目官方提供的
    • deb
    •  
      配置mysql的yum源 [root@localhost ~]# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm [root@localhost ~]# ls anaconda-ks.cfg  mysql57-community-release-el7-10.noarch.rpm  mysql80-community-release-el8-3.noarch.rpm [root@localhost ~]# rpm -ivh mysql57-community-release-el7-10.noarch.rpm     安装 [root@localhost ~]# dnf clean all 33 文件已删除 [root@localhost ~]# dnf makecache  建立缓存

      下载mysql的5个软件包并安装

    •  1 [root@localhost ~]# wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-client-5.7.37-1.el7.x86_64.rpm   2 http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-common-5.7.37-1.el7.x86_64.rpm        3 http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-devel-5.7.37-1.el7.x86_64.rpm   4 http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-libs-5.7.37-1.el7.x86_64.rpm   5 http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-server-5.7.37-1.el7.x86_64.rpm  6    下载5个包  7 [root@localhost ~]# ls  8 anaconda-ks.cfg                                 mysql-community-common-5.7.37-1.el7.x86_64.rpm  mysql-community-libs-5.7.37-1.el7.x86_64.rpm  9 mysql-community-client-5.7.37-1.el7.x86_64.rpm  mysql-community-devel-5.7.37-1.el7.x86_64.rpm   mysql-community-server-5.7.37-1.el7.x86_64.rpm 10 [root@localhost ~]# dnf -y install *.rpm    安装

      2.2 mysql配置

    • 启动
    •  1 [root@localhost ~]# systemctl status mysqld    2 [root@localhost ~]# systemctl enable --now mysqld 立马启动  3 [root@localhost ~]# systemctl status mysqld  4 ● mysqld.service - MySQL Server  5    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)  6    Active: active (running) since Mon 2022-04-18 21:39:24 CST; 1min 14s ago  7      Docs: man:mysqld(8)  8            http://dev.mysql.com/doc/refman/en/using-systemd.html  9   Process: 13448 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS) 10   Process: 13398 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) 11  Main PID: 13450 (mysqld) 12     Tasks: 27 (limit: 11175) 13    Memory: 284.7M 14    CGroup: /system.slice/mysqld.service 15            └─13450 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid 16  17 4月 18 21:39:18 localhost.localdomain systemd[1]: Starting MySQL Server... 18 4月 18 21:39:24 localhost.localdomain systemd[1]: Started MySQL Server.    启动以后端口号默认是3306 19 [root@localhost ~]# ss -antl 20 State             Recv-Q            Send-Q                       Local Address:Port                       Peer Address:Port            Process             21 LISTEN            0                 128                                0.0.0.0:22                              0.0.0.0:*                                   22 LISTEN            0                 128                                   [::]:22                                 [::]:*                                   23 LISTEN            0                 80                                       *:3306                                  *:*    

      设置密码

    • 1 [root@localhost ~]# grep 'password' /var/log/mysqld.log  2 2022-04-18T13:39:20.651583Z 1 [Note] A temporary password is generated for root@localhost: Cl)*gE<si9G/   把临时密码过滤出来 3 [root@localhost ~]# mysql -uroot -p'Cl)*gE<si9G/'-u指定用户名-p指定密码不用空格直接跟 4 mysql> set password = password('RunTime123!'); 5 Query OK, 0 rows affected, 1 warning (0.00 sec) 6 设置新密码要有大小写,特殊字符,数字 7 为避免mysql自动升级,这里需要卸载最开始安装的yum源 8 [root@localhost ~]# rpm -e mysql57-community-release 9 [root@localhost ~]# re -f /etc/yum.repos.d/mysql-community.repo.rpmsave

      3. mysql的程序组成

      • 客户端
        • mysql:CLI交互式客户端程序
        • mysql_secure_installation:安全初始化,强烈建议安装完以后执行此命令
        • mysqldump:mysql备份工具
        • mysqladmin
      • 服务器端
        • mysqld
        • 3.1 mysql工具使用

        •  1 关闭防火墙  2 [root@localhost ~]# systemctl disable --now firewalld  3 Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.  4 Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.  5 [root@localhost ~]# setenforce 0  6 [root@localhost ~]# vi /etc/selinux/config  7 [root@localhost ~]# mysql -uroot -p'RunTime123!'  8 mysql> GRANT all ON *.* TO 'root'@'192.168.149.131' IDENTIFIED BY 'RunTime123!';授权  9 Query OK, 0 rows affected, 1 warning (0.00 sec) 10  11 mysql> flush privileges; 12 Query OK, 0 rows affected (0.00 sec) 13 [root@localhost ~]# mysql -V 14 mysql  Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using  EditLine wrapper   -V显示版本号 15  16 [root@localhost ~]# mysql -uroot -p'RunTime123!' -e 'SHOW DATABASES;'           17 mysql: [Warning] Using a password on the command line interface can be insecure.  18 +--------------------+ 19 | Database           | 20 +--------------------+ 21 | information_schema | 22 | mysql              | 23 | performance_schema | 24 | sys                | 25 +--------------------+   -e不进入查看数据库

          用Navicat连接数据库