浅谈Mysql基础

1.DBMS(DataBase Management System,数据管理系统) :oracle、mysql、sql server、DB2

Mysql:开源、关系型、ISAM存储引擎核心算法前身

Oracle:关系型数据库管理系统,技术领先、大型企业

DB2:支持多媒体、WEB关系型数据库

SQLserver:微软产品

PostgreSQL:唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性自由软件

2.数据库软件应该为数据库管理系统,数据库是通过数据库管库系统创建和操作的容器

数据管理:对各种数据进行分类、组织、编码、存储、检索和维护

人工管理阶段—文件系统管理阶段—数据库系统阶段

3.数据库发展阶段:

层次数据库和网状数据库技术阶段:层次代表IMS、网状代表IDS

关系数据库技术阶段:oracle、mysql、sql server、DB2、SyByse、InFormix

后关系数据库技术阶段:面向对象数据库ORDBMS、结构化数据库技术NOSQL

4. SQL(Structure Query Language)结构化查询语言:

数据定义语言(Data Definition Language,DDL)、

数据操作语言(Data Manipulation Language,DML)、

数据控制语言(Data Control Language,DCL)

5. Mysql数据库:

1)系统数据库:记录一些必需的信息,用户不能更改

Information_scherma:数据对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息等

Performance_schema:数据库服务器性能参数

mysql:用户权限信息

test:测试数据库

2)用户数据库:

6.数据库对象:指存储、管理和使用数据的不同结构形式

表、视图、存储过程、函数、触发器、事件等

7. SQL语句中的DDL和DML(不包含SELECT)语句执行成功后都会显示Query OK

SQL语句中可以用”;” ”\g””\G” 表示语句结束。\G更美观

8.存储引擎:以插件形式被Mysql引入

1)指定表的类型(如何存储和索引数据、是否支持事务)

2)决定表在计算机内的存储方式

9.Mysql5.5支持九种存储引擎:FEDERATED、MRG_MYISAM、MYSIAM、BLACKHOLE、CSV、MEMORY、ARCHIVE、InnoDB、PERFORMANCE_SCHEMA

MYSIAM:不支持事务、外键,速度快

InnoDB: 事务(即提交、回滚和崩溃恢复功能的事务安装),磁盘占用大

频繁更新删除操作,对事务完整性要求高,需要实现并发控制

MEMORY:内存存储数据,访问速度快,无安全保障

10. 存储引擎Engine参数:

Support:是否支持该存储引擎,yes/no,default表示默认

Comment:关于存储引擎的评论

Transactions:是否支持事务

XA:存储引擎支持的分布式是否符合XA规范

Savepoints:是否支持事务处理中的保存点

11. 修改默认存储引擎:C:\Program Files\MySQL\MySQL Server5.1 \my.ini配置文件中[mysqld]

[client]

port=3306

[mysql]

default-character-set=utf8

[mysqld]

port=3306

basedir="C:/ProgramFiles/MySQL/MySQL Server 5.1/"

datadir="C:/ProgramData/MySQL/MySQLServer 5.1/Data/"

character-set-server=utf8

default-storage-engine=INNODB

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

12. Mysql数据类型

整数类型:标准(SMAILLINT、INT),扩展(TINYINT、MEDIUMINT、BIGINT)

浮点型:FLOAT、DOUBLE

定点型:DECIMAL更高精度,金融货币优选

位类型:BIT(字节数M,1~8,存储空间由精度决定)

日期和时间类型:DATE、DATETIME、TIMESTAMP、TIME、YEAR

字符串类型:CHAR系列、TSXT系列、BINARY系列、BLOB系列

13.表中的数据库对象包含列、索引(顺序、快速访问途径、监督)和触发器(事务命令集)。

14.表数据约束:对表中所存储的数据是否合法进行检查

完整性约束:数据准确性和一致性

非空约束(NOT NULL,NK)、

字段默认值约束(DEFAULT)、

唯一约束(UNIQUE,UK)、

主键约束(PRIMARY KEY,PK)、

字段值自动增加约束(AUTO_INCREMENT)

外键约束(FOREIGNKEY,FK)

15.索引:创建在数据库对象表上,包含表中按照一定顺序排序的一类或多列字段

提高查询速度,保证字段的唯一性,从而实现数据库表的完整性

16. 索引的存储类型:B型树索引(BTREE)、哈希索引(HASH)

InnoDB和MYISAM存储类型支持默认为BTREE,MEMORY存储引擎支持HASH

17. Mysql创建方式:创建表时创建索引、在已存在的表上创建索引、通过SQL语句ALTER TABLE创建索引

18.Mysql支持6种索引:

普通索引:不附加任何限制条件(唯一、非空等限制),可创建在任何数据类型字段

唯一索引:限制索引的值必须是唯一的

全文索引:主要关联在CHAR、VARCHAR和TEXT字段上

快速查询数据量较大的字符串类型的字段

Mysql3.23.23开始支持,只能在存储引擎为MyISAM的数据库表上创建全文索引

单列索引

多列索引

空间索引

19.视图:虚表,内容和真实表相似。但视图并不在数据库中以存储的数据值形式存在

行和列数据来自自定义的查询所引用基本表,并且在具体引用视图时动态生成

20.视图特点:数据可以来自不同的表,是表的抽象和在逻辑上建立的新关系

由基本表(实表)产生的虚表

建立和删除不影响基本表

对视图内容的更新(添删改)直接影响基本表

21.视图本质:封装复杂的查询语句,方便重复使用和安全

22.视图实现信息隐藏,多个地方重复实现该功能(只需查询视图,不要,每次都编写视图封装的详细查询语句)

23.触发器:用来实现由一些表事件触发的某个操作,由事件来触发、激活而实现执行

24.触发器TRIGGER类似于编程中的函数,需要声明、执行,

25.创建多条执行的触发器多条命令trigger_STMT要用;隔开,为避免和结束时所用分号重复,可使用关键字DELIMITER语句,例如:

DELIMITER $$

多条语句触发器

$$

DELIMITER;

26.排序查询数据:字段值为NULL,则该值为最小值

在降序排序显示在最后一行,在升序排序中显示在第一行

27.AVG()函数统计平均值:忽略null,但是不忽略0

28.Mysql所支持的统计函数,所操作的表中没有任何数据记录,则COUNT()函数返回数据0,而其它函数返回数据为null。

29.分组数据查询:分组所依据的字段上的值一定要具有重复值

30.关键字GROUP BY 单独使用,默认查询出每个分组中随机一条记录,具有很大不确定性

31. WHERE:实现条件限制数据记录

HAVING:实现条件限制分组数据记录

32.笛卡尔积:没有连接条件表关系返回的结果

表一字段a,行数b;表二字段c,行数d

表一和表二的笛卡尔积:字段=a+c 行数=b*d

33.内连接(INNER JOIN):表关系笛卡尔积数据,仅保留表关系中所有匹配记录

自然连接:根据表关系中相同名称的字段自动进行记录匹配,再去重

等值连接:表关系笛卡尔积中,选择所匹配字段值相等的数据记录

不等值连接:!=

34.外连接(OUTER JOIN):表关系笛卡尔积数据,不仅保留表中所有匹配数据,还会保留部分不匹配的数据记录

左外连接:表关系笛卡尔积数据除了选择匹配数则记录,还包含关联左表中不匹配记录

以左边表为主保留

右外连接:…右边表

全外连接:…左右两边表全

35.自连接:内连接查询中存在的一种特殊的等值连接,表与其自身进行连接

36.外链接查询返回操作表中至少一个表的所有数据

37.合并查询数据记录:UNION| UNION ALL关键字

38.连接查询两种语法:

1)FROM子句利用(,)区分多个表,在WHERE子句中通过逻辑表达式来实现匹配条件

2)FROM子句用 ”JOIN ON”,ON后接条件

39.子查询(嵌套查询):查询之中嵌套了其他若干查询

IN:主查询的条件是子查询的查询结果

ANY:主查询的条件为满足子查询查询返回查询结果中任意一条数据

= ANY> ANY < ANY三种

ALL:主查询的条件为满足子查询查询返回查询结果中所有数据

EXISTS:布尔型,ture&false

40.不同数据库:SQL语句可移植,函数每个数据库支持不同

41.存储过程和函数:就是事先经过编译并存储在数据库中的一段SQL语句集合

1)由事件来触发、激活从而实现执行,执行需要手动调用其名字并制定相应参数

2)函数必须有返回值,存储过程没有

3)存储过程的参数类型远远多于函数的参数类型

4)优点

(1)允许标准组件编程,提高SQL语句重用性、共享性、可移植性

(2)较快执行、减少流量

(3)作为安全机制来利用

42. Mysql支持事务的存储引擎:InnoDB和BDB

43. InnoDB存储引擎事务主要通过UNDO日志和REDO日志实现

支持ACID事务、行级锁和高并发

44.事务:多用户访问同一份数据,一个用户在更改数据的过程中其他用户同时发出更改请求,保证数据库的更新从一个一致状态更改为另外一个一致性状态

特性:(1)原子性:对事务所进行的数据修改等操作只能完全提交或者完全回滚

(2)一致性:数据变更必须应用与事务的修改,保证数据完整性

(3)隔离性:当前事务不会查看由另一个并发事务正在修改数据

(4)持久性:事务完成,所做的修改对数据影响是永久,重启故障数据可恢复

45. REDO日志:事务执行时将执行的事务日志写入日志文件

每条sql语句进行数据库更新,先将REDO写到日志缓冲区,当客户端执行COMMIT命令提交时,日志缓冲区的内容江北刷新到磁盘。

刷新方式或者时间间隔通过参数innodb_flush_log_at_trx_commit控制

对应磁盘上ib_logfileN文件

46. UNDO日志:事务异常时的数据回滚

不存在单独的UNDO日志文件,所有的UNDO日志都放在表空间对应的.ibd

47. Mysql事务隔离级别

(1)READ-UNCOMMITTED(读取未提交内容)

(2)READ-COMMITTED(读取提交内容):大多数数据库默认级别,不是Mysql默认

一个事务从开始到提交前所做的任何改变都是不可见的,食物只能看到已经、提交事物所做的改变

(3)REPEATABLE-READ(可重读):Mysql默认

确保同一事务的多个实例在并发读取数据时会看到同样数据行

(4)Serializable(可串行化):强制事务排序,在每个可读数据行上加上共享锁实现

48. InnoDB和Falcon通过多版本并发控制MVCC机制解决幻读问题

InnoDB的MVCC机制:为每个数据行增加两个隐含值(行创建时间&过期时间)实现

49. InnoDB锁机制:为保证数据一致性,要对并发操作进行控制,使用行锁机制

50.锁类型:共享锁、排他锁、意向锁

51.锁粒度:表锁(管理锁的开销最小、允许并发量最小)

行锁(支持最大并发)

52.Mysql软件中mysql库:存储关于权限的表

1)mysql.user表(39个字段):

(1)用户字段(3个字段):host、user、password

(2)权限字段:”_priv”结尾(默认N不可作用在所有数据库;Y可作用所有数据库)

(3)安全字段(4个字段):判断用户是否能够成功登陆

ssl_type、ssl_cipher、x509_issuer、x509_subject

(4)资源控制字段(4个字段):判断用户是否能够成功登陆

max_questions、max_updates、max_connection、max_user_connections

2)mysql.db、mysql.host:存储某个用户对相关数据库的权限,host是对db的扩展

(1)用户字段:mysql.db(host、user、db)、mysql.host(host、db)

(2)权限字段:create_routine_priv、alter_routine_priv

3)mysql.tables_priv(8个字段):实现单个表的权限设置

主机名、数据库名、用户名、表名、

Grantor权限有谁设置、

Timestamp存储更新时间、

Table_priv对表进行操作的权限

Column_priv对表中字段列进行操作的权限

4)mysql.columns_priv(7个字段):实现单个字段的权限设置

5)mysql.procs_priv(8个字段):主机名、数据库名、用户名、Routine_name、Routine_type、Grantor、proc_priv、Timestamp

53.Mysql安全基础:用户不能对过多的数据库对象具有过多的访问权限

54. Mysql拥有日志种类:二进制日志、错误日志、查询日志,默认情况只会启动错误日志

(1)二进制日志:二进制记录数据库操作,但不记录查询语句

(2)错误日志:启动、运行、关闭时出错信息  error-bin[=dir\[filename]]

(3)通用查询日志:启动关闭信息、客户端连接信息、更新数据记录sql和查询数据sql

log[=dir\[filename]]

(4)慢查询日志:执行时间超时的各种操作

Log-slow-queries[=dir\[filename]]

long_query_time=n

55. 二进制日志:数据库变化情况,SQL语句中的DDL和DML语句

(1)配置文件【my.ini】,在[mysql]手动添加:log-bin[=dir\[filename]]

Filename:指定二进制文件的文件名,格式filename.number

若没指定dir\[filename],默认:主机名-bin.number,保存在数据库数据文件

每次重启mysql服务都会生成一个新的二进制日志文件,文件名不变,数字增加

(2)查看:mysqlbinlog filename.number

(3)暂停:SET SQL_LOG_BIN=0

(4)重启:SETSQL_LOG_BIN=1

(5)删除:RESET MASTER

PURGE MASTER LOGS TOfilename.number

PURGE MASTER LOGS  BEFORE ‘yyyy-mm-dd hh:MM:ss’

56.保证备份数据的完整性,重启MYSQL服务:FLUSH TABLES 数据写入到文本文件

57.复制数据文件方式只适合存储引擎为MyISAM的表

58.mysqldump会将包含数据的表的结构和数据内容保存在相应的文本

(1)检查所要备份的表结构,相应文本生成CREATE语句

(2)检查数据内容,在相应的文本文件生成INSERT INTO语句

59.通过复制数据文件实现数据备份还原必须保证两个Mysql数据库的主版本号一致

还要注意存储引擎问题

60.主版本号一致的数据库,其数据文件拥有相同的类型数据文件

时间: 2024-11-04 21:29:24

浅谈Mysql基础的相关文章

浅谈MySQL索引背后的数据结构及算法

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是 平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 文章主要内容分为四个部分. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. 第二部分结合MySQL数据库中

浅谈mysql主从复制的高可用解决方案

1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID",开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中.他是有内核 模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能.也就是说当你将数据写入本地的DRBD设备上的文件系统 时, 数据会同时被发送到网

浅谈mysql innodb缓存策略

浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb bufferpool怎么工作,和利用它读取频繁访问的数据,是mysql优化重要的方面. 理想状况下,把bufferpool的大小调整到足够大,留下足够的内存空间给其他该服务器上的进程(使其无缺页即可).bufferpool越大,innodb 月表现为内存型数据库,从硬盘上一次读取数据,之后并成了从内存中读取数

浅谈vr基础视频教程 改变技术革命

对于VR技术的发展应用,是有目共睹的,一个新的技术领域的诞生,现在千锋给大家浅谈vr基础视频教程,改变技术革命. 认知革命发生在几万年前的上古时期,是一个很哲学的话题,聊起来很不接地气.这里讲的认知革命是人们对信息认知方式的革新,比如几千年前人类发明文字时,开启了除语言外的另一种交流工具,这就是认知革命;再如上个世纪互联网的诞生,这是一种通过虚拟介质进行信息交流的方式,也是认知革命. 人们把信息放在网络上,相比写在纸上,是一个跨越式的进步,因为并不是所有的信息.资料都能展现在像纸这样的实体材质上

浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

浅谈Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二.InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB .查

运维角度浅谈MySQL数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

浅谈MySQL数据库优化

一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影响的因素很多,比如慢查询.低效的查询语句.没有适当建立索引.数据库堵塞(死锁)等.当然,有测试工程师的团队

【大话设计模式】——浅谈设计模式基础

初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化. 以下浅谈一下对设计模式基础的理解,假设理解的不好.还请大家指正. 首先设计模式是对面向对象的更专业的诠释.面向对象的三大基本特征是继承.封装.多态. 继承: 1.子类继承父类非private的属性和功能. 个人理解:有几个老婆是私有属性,小明他爸有好几个老婆.小明呢.恰好赶上了国家颁布法律一夫一妻 制(怎

(转)运维角度浅谈MySQL数据库优化

转自:http://lizhenliang.blog.51cto.com/7876557/1657465 一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇博文主要谈MySQL数据库发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 1.数据库表设计 项目立项后,开发部根据产品部需求开发项目,开发工程师工作其中一部分就是对表结构设计.对于数据库来说,这点很重要,如果设计不当,会直接影响访问速度和用户体验.影