精选文章 云计算实战系列十四(MySQL基础)

云计算实战系列十四(MySQL基础)

作者:千锋天云 时间: 2020-07-27 02:38:28
千锋天云 2020-07-27 02:38:28

一、Mysql开篇

1.1、MySQL数据库介绍

  • 什么是数据库DB?

数据库无处不在

DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;

  • 什么是sql?

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

SQL包含三个部分:

DDL 数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。

DML 数据操作语言包含允许更新和查询数据的语句。(在这里查询语言可分为DQL)

DCL 数据控制语言允许授予用户权限访问数据库中特定数据的权限。

  • Mysql是什么?
  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • My是MySQL的联合创始人 - Monty Widenius 的女儿的名字。MySQL是MySQL的组合,这就是MySQL命名的由来。
  • MySQL的官方网址: http://www.mysql.com/ ,MySQL的社区版本下载地址为: http://dev.mysql.com/downloads/mysql/ ,在写本文时,当前的MySQL最新版本是:8.0 。
  • MySQL是一个数据库管理系统,也是一个关系数据库。它是由Oracle支持的开源软件。这意味着任何一个人都可以使用MySQL而不用支付一毛钱。 另外,如果需要,还可以更改其源代码或进行二次开发以满足您的需要。

云计算实战系列十四(MySQL基础)1

 

  • mysql和mariadb的前世今生
  • MySQL的名字,来自Michael Widenius的女儿My,My是Michael Widenius和前妻的女儿。 MariaDB的名字,来自Michael Widenius的小女儿Maria,Maria是Michael Widenius和第二任妻子的女儿。 Michael Widenius和前妻还有个儿子叫Max,当然,这个儿子的名字也没有浪费。在2003年的时候,德国软件公司SAP与MySQL建立合作关系,SAP旗下的数据库产品SAP DB被重新命名为MaxDB,其中的Max正是来自Michael Widenius的儿子的名字。
  • 什么是关系型数据库(SQL)?
  • 关系型数据库是依据关系模型来创建的数据库。
  • 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
  • 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
  • 数据的存储形式:

云计算实战系列十四(MySQL基础)2

 

  • 什么是非关系型数据库(NOSQL)?
  • 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)
  • 非关系型模型比如有:
    ​ 存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,IO很快,主要是一些分布式数据库)

```shell 关系型数据库与非关系型数据库的区别: 1.关系型数据库: 优点: 1、易于维护:都是使用表结构,格式一致; 2、使用方便:SQL语言通用,可用于复杂查询; 3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。 缺点: 1、读写性能比较差,尤其是海量数据的高效率读写; 2、固定的表结构,灵活度稍欠; 3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。 ======================================================================= 2.非关系型数据库 优点: 1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛. 2、速度快:可以使用硬盘或者内存作为载体,而关系型数据库只能使用硬盘; 3、成本低:数据库部署简单,基本都是开源软件。

缺点: 1、不提供sql支持,学习和使用成本较高; 2、无事务处理; ```

关系型数据库:Oralce Mysql DB2 PostgreSQL SqlServer

非关系型数据库:Redis MongDB Memcache

1.2、MySQL安装部署YUM/编译

MySQL部署之yum安装

Mysql开源数据库

https://www.mysql.com //mysql官网

yum安装步骤

云计算实战系列十四(MySQL基础)3

云计算实战系列十四(MySQL基础)4

yum安装

 

云计算实战系列十四(MySQL基础)5

 

 

云计算实战系列十四(MySQL基础)6

 

 

云计算实战系列十四(MySQL基础)7

 

  • 清理环境

shell [root@mysql ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y [root@mysql ~]# userdel -r mysql [root@mysql ~]# rm -rf /etc/my* [root@mysql ~]# rm -rf /var/lib/mysql

  • 下载yum源的rpm安装包
[root@mysql ~]# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@mysql ~]# vim /etc/yum.repos.d/mysql-community.repo
把安装5.7的源打开, 关闭安装8.0的源

 

云计算实战系列十四(MySQL基础)8

 

这里有第二种修改的方法,方便我们使用脚本修改
[root@mysql ~]# yum repolist all |grep mysql
[root@mysql ~]# yum-config-manager --disable mysql80-community
[root@mysql ~]# yum-config-manager --enable mysql57-community
#关闭防火墙和selinux
[root@mysql ~]# sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config && setenforce 0
[root@mysql ~]# systemctl stop firewalld && systemctl disable firewalld

#安装必要的软件包
[root@mysql ~]# yum -y groupinstall "Development Tools"
[root@mysql ~]# yum -y install mysql-community-server
[root@mysql ~]# systemctl start mysqld && systemctl enable mysqld
从日志中找出密码(有可能没有密码)
[root@mysql ~]# grep "password" /var/log/mysqld.log
2018-12-26T22:41:24.218413Z 1 [Note] A temporary password is generated for root@localhost: %i+g10uS.dre

#登陆数据库
[root@mysql ~]# mysql -uroot -p'%i+g10uS.dre'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by "QianFeng@123";
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


补充:
[root@mysql ~]# vim /etc/my.cnf
# 关闭mysql密码强度策略,生产环境切勿尝试,首次启动不可关闭
validate-password=OFF
# 跳过密码进入数据库,用于忘记密码时使用
skip-grant-tables

MySQL部署之源码安装

安装依赖包

注: 相关依赖包的作用

cmake由于从MySQL5.5版本开始弃用了常规的configure编译方法,所以需要CMake编译器,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。

Boost:从MySQL 5.7.5开始Boost库是必需的,mysql源码中用到了C++的Boost库,要求必须安装

源码安装
与二进制(RPM)发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集(utf-8);
e) 同一台主机上面可以安装多个MySQL;

在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
##所需要的依赖及安装mysql的包
[root@mysql_source ~]# yum -y groupinstall "Development Tools"
[root@mysql_source ~]# yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmake
bison Linux下C/C++语法分析器
ncurses:字符终端处理库
[root@mysql_source ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz

##在系统中添加运行mysqld进程的用户mysql
[root@mysql_source ~]# groupadd mysql
[root@mysql_source ~]# useradd -M -g mysql -s /sbin/nologin mysql

##在系统中添加自定义mysql数据库目录及其他必要目录
[root@mysql_source ~]# mkdir -p /usr/local/{data,mysql,log,tmp}
[root@mysql_source ~]# chown -R mysql:mysql /usr/local/{data,mysql,log,tmp}

##将mysql-boost-5.7.24.tar.gz解压到当前目录,并执行部署操作
[root@mysql_source ~]# tar xf mysql-boost-5.7.24.tar.gz
[root@mysql_source ~]# cd mysql-5.7.24
[root@mysql_source mysql-5.7.24]# cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

提示:boost也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/
参数详解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   安装目录
-DSYSCONFDIR=/etc \   配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data \   数据目录   错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man \     帮助文档 
-DMYSQL_TCP_PORT=3306 \     默认端口
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \  sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8 \    默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all \   扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci \  支持的
-DWITH_READLINE=1 \    上下翻历史命令
-DWITH_SSL=system \    使用私钥和证书登陆(公钥)  可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 \   嵌入式数据库
-DENABLED_LOCAL_INFILE=1 \    从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1  默认的存储引擎,支持外键
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]# make -j `lscpu | awk 'NR==4{ print $2 }'`

......
[100%] Built target udf_example
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]# make install

......
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]#
Congratulations Complete!


##初始化MySQL安装配置
1.提升MySQL命令为系统级别命令
[root@mysql_source ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
[root@mysql_source ~]# source /etc/profile

2.拷贝默认配置文件至/etc/my.cnf中
[root@mysql_source mysql]# chown -R mysql.mysql /usr/local/mysql
[root@mysql_source ~]# cd /usr/local/mysql/mysql-test/include
[root@mysql_source include]# cp /etc/{my.cnf,my.cnf.bak}
[root@mysql_source include]# cp default_mysqld.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@mysql_source include]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql                    #安装目录
datadir = /usr/local/data                    #数据存放目录
tmpdir = /usr/local/tmp                      #/tmp缓存目录
socket = /usr/local/tmp/mysql.sock           #指定socket文件的位置
pid_file = /usr/local/tmp/mysqld.pid             #指定pid文件的位置
log_error = /usr/local/log/mysql_error.log   #错误日志的位置
slow_query_log_file = /usr/local/log/slow_warn.log  #慢日志查询

server_id = 1                       #server-id=??
user = mysql                        #指定用户
port = 3306                         #指定端口
bind-address = 0.0.0.0              #监听地址(允许所以ip访问)
character-set-server = utf8         #字符集
default_storage_engine = InnoDB     #引擎

3.执行数据库服务初始化操作
[root@mysql_source mysql]# mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'

4.启动mysqld服务
[root@mysql_source mysql]# mysqld_safe --defaults-file=/etc/my.cnf &
[1] 25705
2019-8-18T09:19:35.334751Z mysqld_safe Logging to '/usr/local/log/mysql_error.log'.
2019-8-18T09:19:35.379829Z mysqld_safe Starting mysqld daemon with databases from /usr/local/data

5.设置mysql.socket软链接到mysql命令指定的目录中
[root@mysql_source ~]# ln -s /usr/local/tmp/mysql.sock /tmp/mysql.sock

6.配置mysqld服务的管理工具(便于启动)
[root@mysql_source support-files]# cd /usr/local/mysql/support-files
[root@mysql_source support-files]# cp mysql.server /etc/init.d/mysqld
[root@mysql_source support-files]# chkconfig --add mysqld
[root@mysql_source support-files]# chkconfig mysqld on

##登录数据库并进行更改密码
[root@mysql_source mysql]# grep "password" /usr/local/log/mysql_error.log
2019-8-18T09:18:34.214401Z 1 [Note] A temporary password is generated for root@localhost: ejhszb2:m3wJ
[root@mysql_source tmp]# mysql -uroot -p"ejhszb2:m3wJ"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by "(Bavdu..1228)";

二、数据库基本操作

1.1、结构化语言SQL介绍

数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词。 数据操作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。 数据控制语言(DCL):(Data Control Language): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 数据定义语言(DDL):(Data Define Language): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

重点掌握:

DQL

数据库服务器:运行着数据库应用的设备

数据库:表的管理单元

表:字段、记录

记录:字段的管理单元

字段:字段名,字段类型、长度,字段约束组成

​ 类型:字符,数字,日期

​ 约束:NULL NOTNULL等

增删改查
     库    存放数据的目录
     表    文件(普通编辑器打不开)

修饰符    

     行叫记录 
     列叫字段    字段名称

     神器     edit    在edit里边编辑,wq保存,出来敲一个分号;  


创建库   
        create database   company;
查看库
        show databases;                  
        show create databse   company; 
进入库  
        use  company;
创建表 
        create table   t1(id int(2),name char(20),age int);
                       字段 类型    字段 类型(长度),字段 类型         (字段后便的就是字段的修饰符(约束条件))
查看表
        (show   desc(describe)   select)   
     查看表名称
                show tables;    
                desc  t1;(表的详细字段信息) 
     查看表创建过程     
                show create table   t1;    <----- 当表特别长的时候;该为\G ,则把表向左旋转90度,可以更清楚看到               
        第一列显示字段名称
        第二列显示记录     
     查看表结构  
            desc  t1;
     查看表记录  
            select   *   from  表名;     
            select   字段,字段  from  表名; 
     查看表状态   
            show  table status  like  '表名' ;


修改表
            (alter) (add  delect  change)
     修改表名   
                    rename table 原表名  to  新表名;         
                    rename table t11 to t9;   alter table t9 rename to t1;
     添加字段   
            alter table 表名  add  字段   修饰符;       
            alter table t1 add gender char(20);     
            alter table t1 add grade char(20) after id;  
            alter table t1 add zhuanye char(20)  first;
     删除字段  
            alter table  表名  drop  字段;  
     修改字段  
            alter table 表名 change  旧字段  新字段 修饰符;   change修改字段名称,类型,约束,顺序
            alter table 表名 modify  字段  属性 修饰符;     modify 不能修改字段名称
            alter table t1 change zhuanye major varchar(20) after gender; 
            alter table t1 modify major  varchar(20)  after age;     

     修改记录                                         
            (inster  update  delete  where)
     添加记录   
            insert into  表名 values  (),(),(),();    
            insert into  表名(字段,字段,字段)  values  (),(),();  
            insert into t1 values(1,'2','yingge',18,'12','male');
            insert into t1(name,grade) values ('wing','1');
            insert into t1(name,grade) values ('youngfit','2'),('houzi','2'); 
            insert into t1 set name='jianjian',grade='1';

     修改记录(更新)
            update 表名  set 字段=' ' where  主键=' ';
            update t1 set grade=4 where name='yingge';  
     删除记录 
            delete from  表名 where  主键字段=' ';     
            delete from 表名;       
            delete from  t1 where id=5;         

     删除表  drop table  表名;
            drop table  t1;
     删除库  drop  databse 库名;  
            drop database  company;    


各种查询
    select id,name from employee5 where id<=5;
    select id,dep_id,id*dep_id from company.employee5  where id<=5;
    select id*dep_id as "id and dep_id's sum" from company.employee5  where id<=5;

MySQL存储引擎(拓展)

MySQL引擎:
可以理解为,MySQL的“文件系统”,只不过功能更加强大。

MySQL引擎功能:
除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。和磁盘打交道,mysql中组织。

1.什么是外键:外键的主要作用是保持数据的一致性、完整性。
2.什么是索引:索引相当于书中的目录,可以提高数据检索的效率,降低数据库的IO。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的
3.什么是事务:事务是由一步或几步数据库操作这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolatio >)和持续性(Durability)。这四个特性也简称ACID性。
        (1)原子性:事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分>的特征一样。事务是应用中不可再分的最小执行体。(最小了,不可再分了)
        (2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态>。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性
来保证的。(说罢了就是白狗变成了黑狗,不能出现斑点狗!)
        (3)隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都>是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间
不能相互影响。(说白了,就是你做你的,我做我的!)
        (4)持续性:持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录>到永久存储器中,通常是保存进物理数据库。(说白了就是一条道跑到黑)

4.什么是行锁与锁表:可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的
同时也有别人在操作。

mysql常见的储存引擎

  • InnoDB 
  • MyIsam 
  • Memory(也叫HEAP)堆内存
  • Blackhole(黑洞引擎)
  • Archive(归档引擎)

```shell 为什么要合理选择数据库存储引擎: MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

```

```

```

MyISAM和InnoDB的区别(了解)

MyISAM和InnoDB的区别 
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB
MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。
InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。
InnoDB支持外键,MyISAM不支持。
Innodb能存储64TB,MyISAM能存储256TB
InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、 varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。(书的目录)
MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。
没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。

其他的存储引擎

MEMORY内存型引擎(了解)
        MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问
        MEMORY特点: 
    所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

Archive(归档引擎)
    如何选择引擎:如果要提供提交、回滚、并要求实现并发控制,InnoDB是一个好的选择;如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率;如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎;MySQL中使用该引擎作为临时表,存放查询的中间结果;如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive。

查看支持的存储引擎

mysql> show engines;

 

云计算实战系列十四(MySQL基础)9

 

看你的mysql当前默认的存储引擎:

mysql> show variables like '%storage_engine%';

如何查看Mysql服务器上的版本

mysql> select version();

创建时候指定引擎

mysql> create table t1(id int,manager char(10)) engine =innodb;

创建并管理基本表

[root@mysql ~]# mysql -uroot -p"123"            #登录数据库
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;              ##查询数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database youngfit;        ##创建数据库
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;            ##刷新数据库及表的列表内容(常用于授权之后)
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| youngfit              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database youngfit;          ##删除数据库
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> use mysql;                   ##使用数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;                 ##查看库中的表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> select * from mysql.user\G;              ##查询表中的内容,“\G”为标准化输出,不加会乱码
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *7C80E5F2B2DC4B10B1D2CFF160F5C8240720B612
      password_expired: N
 password_last_changed: 2019-8-18 15:18:57
     password_lifetime: NULL
        account_locked: N

mysql> select User,Host,authentication_string from user;            ##根据条件查询表中的内容
+---------------+-----------+-------------------------------------------+
| User          | Host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | localhost | *5CD4C2B38AEF87547D2735419AECEC731E44C1B8 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

mysql> update user set authentication_string=password('(Baidu..1229)') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)                      ##更新表中的内容
Rows matched: 1  Changed: 1  Warnings: 1

mysql> exit                                                         ##退出数据库
Bye
[root@mysql ~]#
勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:Redisson基础资料汇总

下一篇:前言基础sql语句大全

您可能感兴趣

  • 210道面试官必问经典面试题总结分享|Java+JVM+数据库+算法+Spring+中间件+设计模式超详细整理

    “金九银十”的秋招热潮已经来了,由于疫情影响、今年的秋招来的格外早。小编从今天六月份开始备战,不负众望的成功拿下了一些大厂的offer。经过这么多次的面试,凭借自己的面试成功经验和这两个月的准备,小编整理了一份面试清单分享给大家,希望能给和我一样为了秋招奋战多时的码农亲人们一点帮助(java方向),觉得有帮助的同学可以转发点个赞哦~~祝大家面试顺利,一举拿下大厂offer! 一、JAVA基础...

  • 云表场景支撑让设备从资产管理进化到能力经营

    在云表服务的许多用户中,有一个比较普遍的现象就是,在传统软件无法充分表现的管理或者服务的颗粒度,大家都希望通过云表来实现。 比如设备管理,企业通常列为固定资产,按照资产管理的方式进行管理。但是对于那些通过流转才能实现价值的设备,固定资产的管理方式远远不足够。设备管理就是最大程度地让设备为客户提供更多频次的服务,从而创造更多价值。 某公司是中国气象局为电视等传媒提供气象服务的唯一对外窗口,也是...

  • 「鹿班智能设计平台」是如何工作的

    目录 商业设计大脑的三大挑战 可控的视觉生成过程 机器如何学习设计 组成一,设计框架。 组成二,元素中心。 组成三,行动器。 组成四,评估网络。 视觉设计的四个层次 最基础的:临摹拓展。 第二层:场景表达。 第三层:创意洞见。 最后一层:创造趋势。 商业设计大脑的三大挑战 在开始做事情之前,我们遇到了三个比较严峻的挑战。 第一个挑战,缺少标注数据。今天所有的人工智能都基于大量的结构化标注数据...

  • 【技术史】数据中台的前世今生

    数据中台自14年至今,已然成为了2B、2G业务最热门的话题,政府机构、企事业单位、互联网公司等进行着数字化、数据化、智能化转型。市场普遍认为,阿里巴巴将自身数据中台建设能力对外赋能是拉起本轮数据中台浪潮的根本所在。 本文将带你全面了解阿里巴巴做数据中台的历史。 1、缘起 在2014年以前,阿里巴巴有很多条业务线,都有自己的ETL团队,每个ETL团队建设和维护自己的数据体系。当时许多人认为,这...

  • 【时间序列】时间序列基本概念总结

    最近一直在接触时间序列,所以打算写一些有关时间序列的文章,预测部分会从规则开始、到传统模型、到机器学习、再到深度学习,此外也会介绍一些时间序列的基本概念,包括自相关、平稳性、滞后性、季节性等。 1.基本概念 1.1 时间序列预测 预测是商业中的常见统计任务,它可以为生产、运输和人员安排等决策提供信息,并为长期战略规划提供指导。预测是指在考虑到所有可用信息的前提下,包括历史数据和可以影响预测的...

  • B 站疯传,堪称最强,一整套数据分析课程,学完月薪30K+!

    2020魔幻之年,疫情下就业大受影响,很多岗位缩招,而数据分析相关工作岗位恋习Python(如数据分析师、数据挖掘师等岗位)却在增加。非专业数据分析岗位(如运营、市场、销售等岗位)也要求“数据分析”能力。大数据时代的未来,数据分析将是每个岗位的必备技能。 很多人知道数据分析非常重要,下载了一些资料,却觉得无从下手,很难学。为你推荐奈学教育精心打造的“全栈大数据分析师”课程, 本课通过多业务场...

  • 中国耳机能否把AirPods拉下铁王座,全看一颗“芯”

    作者|茜茜 编辑|猛哥 1853年,犹太青年李维斯和当时的许多美国人一样,满怀梦想地踏上了西部淘金之旅。 很遗憾,他去晚了,到处都是人,还被抢地盘的恶棍们给揍了一顿。 李维斯很快从欺辱中恢复过来,他发现淘金人的衣服很容易磨破,而西部到处都是废弃的帐篷,如果把这些帐篷缝制成裤子,肯定抗穿耐磨。就这样,他缝制了世界上第一条牛仔裤。从此开创了他的牛仔裤王国。 世上的事情就是这么不可思议。 150年...

  • SQL Server安全机制–如何控制用户能够在报告中查看哪些数据

    介绍 ( Introduction ) A few years back, a client asked me to implement a quick and dirty “security mechanism” to control what data the myriad of users were able to view within their reports. There we...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。