MySQL学习笔记

MySQL学习笔记

1、数据库服务器

数据库服务器:运行数据库管理软件的计算机

2、数据库管理软件

MySQL、Oracle、db2、sqlserver

3、库

库:文件夹

4、表

表:文件

5、记录

记录:事物一系列典型的特征:zhangsan,male,18,Shanxi

6、数据

数据:描述事物特征的符号;

MySQL各种增删改查

  1. 各种增删改查语句
  2. 分组统计、跨表查询
  3. 存储过程、视图、触发器的使用
  4. 事务操作

设计合理的表结构

  1. 如何构建合理的、可扩展的表结构
  2. 真实项目表结构设计实战

数据库的性能优化与安全

  1. 如何加快表的查询速度
  2. 如何确保数据安全不丢失
  3. 数据库集群 & 读写分离
  4. 访问权限

MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于 oracle 旗下公司。MySQL是最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。

  1. mysql是一个基于socket编写的C/S架构的软件

    客户端软件

    ​ mysql自带:如mysql命令,mysqldump命令等;

    ​ python模块:如pymysql

  2. 数据库管理软件分类

    分两大类:

    ​ 关系型:如sqllite,db2,oracle,access,SQL server,MySQL,注意:SQL语句通用;

    ​ 非关系型:MongoDB,redis,memcache

    可以简单的理解为:

    ​ 关系型数据库需要有表结构

    ​ 非关系型数据库是key-value存储的,没有表结构

  3. MySQL安装

    1. Windows安装

      官网下载:https://dev.mysql.com

      解压压缩包,即安装完成,将bin目录添加到系统变量环境即可;

      mysqld启动套接字服务端,mysql启动套接字客户端;

      **注意:**关闭现在已启动mysql服务:tasklist |findstr mysql

      ​ taskkill /F /PID [进程ID]

      以管理员运行CMD:

      mysqld --install 添加系统服务

      mysqld --remove 解除系统服务

      查看系统服务CMD命令:service

    2. Linux安装

      1. centos7:yum -y install mariadb-server mariadb
      2. centos6:yum -y install mysql-server mysql
      3. systemctl start mariadb 启动mysql服务
      4. systemctl status mariadb mysql服务状态
    3. mac系统

      1. MySQL官网下载dmg安装;

      2. 系统偏好设置---->mysql---->启动mysql服务

      3. vim /etc/profile

        PATH=/usr/local/mysql/bin:$PATH

        export PATH

        立即生效:source /etc/profile

  4. select user(); 当前登录账号,默认为ODBC@localhost

    mysql -uroot -p 没有密码可直接登录

  5. MySQL中root用户密码的更改:

    • mysqladmin -uroot -p[“如果有原密码”] password “新的密码”

    • 跳过账号密码表:

      • 查看mysql版本:mysql --version

        mysql Ver 14.14 Distrib 5.7.24, for Win64 (x86_64)

      • 重启mysql服务:net stop MySQL57 (net start MySQL57)

      • mysqld --skip-grant-tables 跳过认证表

      • 如果您有MySQL 5.7.6及更高版本或MariaDB 10.1.20及更高版本,请运行以下命令:

        ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘MY_NEW_PASSWORD’;
        FLUSH PRIVILEGES;

        如果您有MySQL 5.7.5及更早版本或MariaDB 10.1.20及更早版本,请运行以下命令:

        SET PASSWORD FOR ‘root’@‘localhost’ = PASSWORD(‘MY_NEW_PASSWORD’);
        FLUSH PRIVILEGES;

        如果ALTER USER语句不适用于您,请尝试直接修改用户表:

        UPDATE mysql.user SET authentication_string = PASSWORD(‘MY_NEW_PASSWORD’)
        WHERE User = ‘root’ AND Host = ‘localhost’;
        FLUSH PRIVILEGES;

        在这两种情况下,如果一切顺利,您应该看到以下输出:

        Query OK, 0 rows affected (0.00 sec)

      • update mysql.user set password=password(“新密码”) where user=“root” and host=“localhost”;

        设置新的root密码

        flush privileges;

      • 重启mysql服务

    • mysql 连接指定IP与端口:

      mysql -uroot -p密码 -h 127.0.0.1 -P 3306

  6. 统一字符编码:

    1. windows:

      my.ini文件

      [mysqld]

      character-set-server=utf8

      collation-server=utf8_general_ci

      [client]

      default-character-set=utf8

      [mysql]

      default-character-set=utf8

    2. linux:

      vim /etc/my.cnf

      [mysqld]

      character-set-server=utf8

      collation-server=utf8_general_ci

      [client]

      default-character-set=utf8

      [mysql]

      default-character-set=utf8

      重启mysql服务:systemctl restart mariadb

    3. mac

      vim /etc/my.cnf

      [mysqld]

      character-set-server=utf8

      collation-server=utf8_general_ci

      [client]

      default-character-set=utf8

      [mysql]

      default-character-set=utf8

      重启服务:系统偏好设置---->stop mysql server

  7. 初识SQL语句

    • 操作文件夹(库)

      • create database db1 charset utf8;

      • show create database db1;

        show databases;

      • alter database db1 charset gbk;

      • drop database db1;

    • 操作文件(表)

      切换文件夹:use db1;

      查看当前所在文件夹:select database();

      • create table t1(id int,name char);

      • show create table t1;

        show tables;

        desc t1;

      • alter table t1 modify name char(6);

        alter table t1 change name NAME char(7);

      • drop table t1;

    • 操作文件内容(记录)

      • insert t1(id,name) values(1, ‘Alex1’),(2,‘Alex2’),(3,‘Alex3’);

      • select id,name from db1.t1;

        select * from db1.t1;

      • update db1.t1 set name=‘Halo’;

        update db1.t1 set name=‘ALEX’ where id=2;

      • delete from t1;

        delete from t1 where id=2;

  8. SQL语句分类

    1. DDL语句:数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    2. DML语句:数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    3. DCL语句:数据库控制语言:例如控制用户的访问权限GRANT、REVOKE
  9. 系统数据库

    information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等;

    performance_schema:MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象;

    mysql:授权库,主要存储系统用户的权限信息;

    test:MySQL数据库系统自动创建的测试数据库

  10. 创建数据库

    1. 语法(help create database):

      CREATE DATABASE 数据库名 charset utf8;

    2. 数据库命名规则:

      可以由字母、数字、下划线、@、#、$

      区分大小写

      唯一性

      不能使用关键字如 create select

      不能单独使用数字

      最长128位

  11. 存储引擎

    1. 什么是存储引擎

      存储引擎就是表的类型

      MySQL学习笔记_第1张图片

    MySQL学习笔记_第2张图片

    1. 查看MySQL支持的存储引擎

      show engines;

    2. 指定表类型/存储引擎

      create table t1(id int)engine=innodb;

      create table t2(id int)engine=memory;

      create table t3(id int)engine=blackhole;

      create table t4(id int)engine=myisam;

      insert into t1 values(1);

      insert into t2 values(1);

      insert into t3 values(1);

      insert into t4 values(1);

  12. 表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。

    1. 语法

      create table 表名(

      字段名1 类型[(宽度) 约束条件],

      字段名2 类型[(宽度) 约束条件],

      字段名3 类型[(宽度) 约束条件]

      );

      #注意:

      1. 在同一张表中,字段名是不能相同
      2. 宽度和约束条件可选
      3. 字段名和类型是必须的
    2. 查看表

      desc t4;

      show create table t4\G;

    3. 修改表结构

      1. 修改表名

        ALTER TABLE 表名 RENAME 新表名;

      2. 增加字段

        ALTER TABLE 表名

        ​ ADD 字段名 数据类型 [完整性的约束条件…];

        ​ ADD 字段名 数据类型 [完整性的约束条件…];

        ALTER TABLE 表名

        ​ ADD 字段名 数据类型 [完整性约束条件…] FIRST;

        ALTER TABLE 表名

        ​ ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

      3. 删除字段

        ALTER TABLE 表名

        ​ DROP 字段名;

      4. 修改字段

        ALTER TABLE 表名

        ​ MODIFY 字段名 数据类型 [完整性约束条件…];

        ALTER TABLE 表名

        ​ CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

        ALTER TABLE 表名

        ​ CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

      5. 复制表

        表结构和数据:

        create table t1 select host,user from mysql.user;

        只要表结构:

        create table t2 select host,user from mysql.user where 1>5;

        create table t3 like mysql.user;

      6. 删除表

        DROP TABLE 表名;

你可能感兴趣的:(MySQL)