MySQL从入门到概念

MySQL从入门到概念

1.数据类型

  • 整型(int bigint)
  • 位类型 (bit)
  • 浮点型 (float、double)
  • 定点数(decimal):采用字符串存储数据,不会丢失精度。
  • 日期时间 (date、time、datetime、year)
  • MySQL从入门到概念_第1张图片
  • 字符串(char、varchar)
  • MySQL从入门到概念_第2张图片

2.语法

2.1 数据库操作

  • 创建数据库:create database + 数据库名
  • 删除数据库:drop database + 数据库名
  • 查看有哪些数据库:show database
  • 选择数据库:use + 数据库名字

2.2 表操作

建表:

MySQL从入门到概念_第3张图片

修改表:

MySQL从入门到概念_第4张图片

删除表:

drop table + 表名

注意:

  • 这样操作数据和结构都会被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
  • 删除后就不能回滚了

2.3 字段操作

插入:insert

image-20200516151413526

删除:delete

image-20200516151528065

查找:select

MySQL从入门到概念_第5张图片

更新:update

image-20200516151453478

3. 关键字

as :起别名

MySQL从入门到概念_第6张图片

distinct:去重

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EetPeF1d-1589616171914)(C:\Users\fzc\AppData\Roaming\Typora\typora-user-images\image-20200516151845687.png)]

like:模糊查询

MySQL从入门到概念_第7张图片

order by :排序
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE…LIKE 子句来设置条件。
NULL值处理
  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

MySQL从入门到概念_第8张图片

where:过滤
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号**,** 分割,并使用WHERE语句来设定查询条件。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
union 连表

用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

group by:分组
  • GROUP BY 语句根据一个或多个列对结果集进行分组。
  • 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

4. 连表操作

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • MySQL从入门到概念_第9张图片
  • **LEFT JOIN(左连接):**获取左表所有记录,即使右表没有对应匹配的记录。
  • MySQL从入门到概念_第10张图片
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
  • MySQL从入门到概念_第11张图片

5、存储引擎

MyIsam

  • 支持全文索引
  • 全表锁
  • 全文搜索能力强,适合大量查询的表

InnoDB

  • InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

  • 行表锁

  • 支持外建

  • 支持聚集索引

    数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

  • 支持自动增长列

  • 适合并发场景

  • 有ACID特性

  • 适合大量查询、更新

  • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一
    个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

总结:如果没有特别的需求,使用默认的 Innodb 即可。MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。
Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键。比如OA自动化办公系统。

6、索引

定义:索引是一种能够快速查找、并且已经排好序的特殊数据结构。

你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中, 索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅 速地找到表中的数据,而不必扫描整个数据库。
mysql有4种不同的索引:
主键索引(PRIMARY)
数据列不允许重复,不允许为NULL,一个表只能有一个主键。
唯一索引(UNIQUE)
数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。
可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引
可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索 引
普通索引(INDEX)
可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引

可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3); 创建组合索引
全文索引(FULLTEXT)
可以通过 ALTER TABLE table_name ADD FULLTEXT (column); 创建全文索引

索引并非是越多越好,创建索引也需要耗费资源

一是增加了数据库的存储空间

二是在插入和删除时 要花费较多的时间维护索引

总结:索引加快数据库的检索速度 索引降低了插入、删除、修改等维护任务的速度 唯一索引可以确保每一行数据的唯一性 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能 索引需要占物理和数据空间。

7、事务

理解:多条sql语句,要么全部成功,要么全部失败。

ACID特性

数据库事务特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)、持久性(Durabiliy)。 简称ACID。

  • 原子性:组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功,整个 事务才会提交。任何一个操作失败,已经执行的任何操作都必须撤销,让数据库返回初始状态。
  • 一致性:事务操作成功后,数据库所处的状态和它的业务规则是一致的。即数据不会被破坏。如A 转账100元给B,不管操作是否成功,A和B的账户总额是不变的。
  • 隔离性:在并发数据操作时,不同的事务拥有各自的数据空间,它们的操作不会对彼此产生干扰
  • 持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。

你可能感兴趣的:(MySQL,mysql,数据库,sql,索引)