MySQL二 简单sql语句和引擎

一、库级别

数据库操作主要分为库级别操作、表级别操作、数据级别操作。

数据库级别(操作文件夹)
    增:create database db1 charset utf8;
    查:show databases;
    改:alter database db1 charset latin1;
    删: drop database db1;
    查看数据库:
    show databases;
    show create database db1;
    select database();
表级别(操作文件)
先切换到文件夹下:use db1
    增:create table t1(id int,name char);
    查:show tables
    改:alter table t1 modify name char(3);
          alter table t1 change name name1 char(2);
    删:drop table t1;
数据级别(操作文件中的内容/记录)
    增:insert into t1 values(1,'z1'),(2,'z2'),(3,'z3');
    查:select * from t1;
    改:update t1 set name='s' where id=2;
    删:delete from t1 where id=1;
Mysql 系统自带数据库
  • information_schema: 虚拟库,不占用磁盘空间,存储数据库启动后的一些参数,如用户表信息、权限信息等
  • performance_schema: MySQL 5.5新增库,主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件
  • mysql: 授权库,主要存储系统用户的权限信息
  • test: MySQL数据库系统自动创建的测试数据库
数据库命名规则:
  • 可以由字母、数字、下划线、@、#、$
  • 区分大小写
  • 唯一性
  • 不能使用关键字如 create select
  • 不能单独使用数字
  • 最长128位

二、表的储存引擎

mysql中建立的库===>文件夹
库中建立的表===>文件

常用文件有不同类型,不同文件类型对应不同处理机制,如文本用txt,表格用excel,图片用jpeg等。
数据库中的表也有不同类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。简单说就是如何存储、索引、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型。

大多数据库只有一种存储引擎,所有数据存储管理机制是一样的。而MySql
数据库提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,也可以根据自己的存储引擎。

mysql支持的存储引擎
 show engines\G;  #查看所有支持的存储引擎
show variables like 'storage_engine%'; #查看正在使用的存储引擎

1.InnoDB 存储引擎

支持事务,其设计目标主要面向联机事务处理(OLTP)的应用。特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁,MySQL 5.5.8 版本开始是默认的存储引擎。

InnoDB 存储引擎将数据放在一个逻辑的表空间中,这个表空间就像黑盒一样由 InnoDB 存储引擎自身来管理。从 MySQL 4.1(包括 4.1)版本开始,可以将每个 InnoDB 存储引擎的 表单独存放到一个独立的 ibd 文件中。此外,InnoDB 存储引擎支持将裸设备(row disk)用于建立其表空间。

InnoDB 通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了 SQL 标准的4种隔离级别,默认为 REPEATABLE 级别,同时使用一种称为 netx-key locking 的策略来 避免幻读(phantom)现象的产生。除此之外,InnoDB 存储引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead) 等高性能和高可用的功能。

对于表中数据的存储,InnoDB 存储引擎采用了聚集(clustered)的方式,每张表都是按主键的顺序进行存储的,如果没有显式地在表定义时指定主键,InnoDB 存储引擎会为每一 行生成一个6字节的 ROWID,并以此作为主键。

InnoDB 存储引擎是 MySQL 数据库最为常用的一种引擎,Facebook、Google、Yahoo 等 公司的成功应用已经证明了 InnoDB 存储引擎具备高可用性、高性能以及高可扩展性。对其底层实现的掌握和理解也需要时间和技术的积累。想深入了解 InnoDB 存储引擎,可以参考《MySQL 技术内幕:InnoDB 存储引擎》一书。

2.MyISAM 存储引擎

不支持事务、表锁设计、支持全文索引,主要面向一些 OLAP 数 据库应用,在 MySQL 5.5.8 版本之前是默认的存储引擎。数据库系统与文件系统一个很大的不同在于对事务的支持,MyISAM 存储引擎是不支持事务的,只是简单地通过报表查询不必事务支持。MyISAM另一个不同是,缓冲池只缓存(cache)索引文件,而不缓存数据文件,与大多数据库都不相同。

3.NDB 存储引擎

NDB 存储引擎是一个集群存储引擎,类似于 Oracle 的 RAC 集群,不过与 Oracle RAC 的 share everything 结构不同的是,其结构是 share nothing 的集群架构,因此能提供更高级别的可用性。NDB 存储引擎的特点是数据全部放在内存中(从 5.1 版本开始,可以将非索引数 据放在磁盘上),因此主键查找(primary key lookups)的速度极快,并且能够在线添加 NDB 数据存储节点(data node)以便线性地提高数据库性能。由此可见,NDB 存储引擎是高可用、 高性能、高可扩展性的数据库集群系统,其面向的也是 OLTP 的数据库应用类型。

4.Memory 存储引擎

Memory存储引擎中的数据都存放在内存中,数据库重启或发生崩溃,表中的数据都将消失。它非常适合于存储 OLTP 数据库应用中临时数据的临时表,也可以作为 OLAP 数据库应用中数据仓库的维度表。Memory 存储引擎默认使用哈希索引,而不是通常熟悉的 B+ 树索引。

5.Infobright 存储引擎

第三方的存储引擎。特点是存储按照列而非行的,因此非常适合 OLAP 的数据库应用。

6.NTSE 存储引擎

网易公司开发的面向其内部使用的存储引擎。目前的版本不支持事务, 但提供压缩、行级缓存等特性。

7.BLACKHOLE

黑洞存储引擎,可以应用于主备复制中的分发主库。
MySQL 数据库还有很多其他存储引擎,如果你喜欢,可以编写专属于自己的引擎,这就是开源赋的魅力所在。

使用存储引擎

方法1:建表时指定

MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb;
MariaDB [db1]> create table innodb_t2(id int)engine=innodb;
MariaDB [db1]> show create table innodb_t1;
MariaDB [db1]> show create table innodb_t2;

方法2:在配置文件中指定默认的存储引擎

/etc/my.cnf
[mysqld]
default-storage-engine=INNODB
innodb_file_per_table=1

查看引擎
[root@egon db1]# cd /var/lib/mysql/db1/
[root@egon db1]# ls
db.opt  innodb_t1.frm  innodb_t1.ibd  innodb_t2.frm  innodb_t2.ibd

三、练习

创建四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试

create table t1(id int)engine=innodb;
create table t2(id int)engine=myisam;
create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;

返回目录

    原文作者:云雨枫
    原文地址: https://www.jianshu.com/p/ceb47cd0b9b0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞