1、关系型数据库

关系:由行和列组成的二维表

表:至少要有列,可以没有行。

列:是实体的属性。

数据模型:层次模型、网状模型、关系模型、非关系模型。

DBMS:DataBase Mangenent System   数据库管理系统。

2、数据库必须要有缓存  存放索引。

存储引擎;并发性好很好,

读,写:

读锁:共享锁

写锁:独占锁

减少锁粒度:

表锁:对整个表进行锁

页锁:对页和块进行锁

行锁:对行进行锁

数据库锁:对表进行加锁。

锁管理器:

数据库:mysql

一个线程相应一个用户请求。

复用:线程池,thread pool

事务:ACID,一组DML

原子性:这一组DML要么都执行,要么都不执行。

一致性:数据库从一种状态转变成另一种状态,状态的前后是一致的数据。一致性指的数据,数据的总量不变。

隔离性:多个事务彼此之间,如果操作同一个数据的时候,彼此之间不进行干扰。保证并发性的前提是锁,对于隔离来讲,是有隔离级别的。隔离有四种级别。隔离级别越高,严格性越高,并发性越低,隔离性越好,彼此之间的影响性越少;隔离性越低,并发性越高,隔离性越差,彼此之间的影响性越大。(数据库的四个隔离级别:读未提交(READ UNCOMMITTED);读提交(READ COMMITTED);可重读(REPEATABLE READ);串行化(SERIABLIZABLE))

持久性:数据一旦提交以后,必须不能丢失。数据未提交,必须要能撤销。事务日志:(转换随机IO至顺序IO)。为了保证持久性:事务提交,立即写入磁盘

幂等性:

MySQL日志:

错误日志:

查询日志:

慢查询日志:

事务日志:

二进制日志:

中继日志:

SQL:结构化查询语言(唯一一种不需要关心底层数据存储格式的语言。)

ANSI,sql-86,sql-92,sql-99,sql-03 对象-关系型数据,xml

SQL-Server:T-SQL

Oracle:p1/sql

MySQL:sql

SQL:API

client:Protocol:server

mysql-- >mysqld

自定义程序-- >mysqld

驱动-- >mysqld

Php-mysql:mysql_connect()

连接器 ODBC

数据库提供的接口分类两种:

远程通信:

本地通信:

Linux

Unix sock:mysql.sock

Windows:

PIPE

MEMORY

SQL:

DML:CRUD(Insert、Update、Delete、Select)用来实现数据操作的语句。

DDL:操作数据库对象,例如:表,索引、视图、存储过程、存储函数、触发器、游标、事件调度器。(CREATE创建、DROP删除、ALTER修改)数据库定义语音。

DCL:权限管理语句,GRANT授权、REVOKE收回权限。

3、Httpd-2.4:

3种MPM:

Prefork:一个进程相应一个请求

Worker:一个进程生产n个线程,一个线程相应一个请求

Event:一个线程相应多个请求,靠事件函数回调完成

4、DBA职责:

概念和物理模式的设计

安全性和授权

数据可用性和故障恢复

数据库调整

5、数据的组织

数据类型:变长,定长

VARCHAR(200):root,5字节

root,redis

CHAR(200):root,200字节,redis

定长记录:

数据块:行,是固定的

变长记录:

数据块:行数是变化的

rid:

无序记录:堆文件组织

有序文件:顺序文件组织,聚簇索引,如果索引是有序的,那么记录就是有序的。树状索引一般都是有序的,哈希索引没有序。

散列文件组织:hash索引,

按照索引数据结构,索引类型:

树状索引:

散列索引:哈希索引,使用哈希函数计算后进行存储

6、变长记录需要解决的问题:

1、如何描述一个记录,以实现快速记录获取;

2、如何存储变长记录;以实现快速记录存储;

7、索引类型

主索引:主键索引,

辅助索引:

8、数据库存储的文件:

数据文件

索引文件

日志文件

对于聚簇索引来讲,数据文件和索引文件是在一块的,对于能够支持聚簇索引的存储引擎来讲,文件必须要表现为不同的组织结构。

9、MySQL存储引擎:

MyISAM:

每一个表都有三个文件:

数据文件:表名.MYD

索引文件:表名.MYI

表定义:表名.FRM

InnoDB:

表:

表空间:多张表可放置于同一个表空间,MySQL支持单表使用独立的表空间文件;

表定义文件:每张表的表定义文件在数据库目录中;

数据字典:也叫系统目录(system catalog)

用来保存数据库服务器上的元数据。

关系的名字

每个关系中各属性的名字

属性的数据类型和长度

每个表关系上的视图名字及视图的定义

约束

授权用户的名字

用户的授权和账户信息

统计类数据:

每个关系中属性的个数;

每个关系中行的个数;

每个关系的存储方法

10、缓存置换

缓存置换策略:LRU:Least Recently Used 最近最少使用算法;MRU:most Recently Used 最多使用算法。

被盯住的块:(Pinned block)不允许写回磁盘阵列的块。

块的强制写出:为了数据的安全性和可靠性而设置的策略。

11、InnoDB引擎调优:

mysql> SHOW{global(全局) | session(当前)} WARIABLES;当前用户有效生成的变量;

动态调整

mysql>SHOW {global | session} STATUS;数据库服务器当前运行状态

12、MySQL默认的远程TCP端口 3306

13、安装:使用rpm安装:/var/lib/mysql/mysql.sock

使用二进制安装:/tmp/mysql.sock

Mysql安装方式:

二进制格式:

rpm

OS vendor

MySQL

通用二进制包

源码格式

make -- >cmake

14、堆、栈

heap:数据存储于内存中的存储引擎:

内存数据库:临时表

15、Percona:InnoDB -- >XtraDB

Xtrabackup

1、配置文件

2、root密码:

3、删除匿名用户:

4、在需要时,为应用程序提供授权账号;

权限可以转移:WITH  GRANT  OPTION

修改用户密码:

1、# mysqladmin –uUSERNAME –hHOST  password ‘new_pass’;

2、mysql>SET PASSWORD FOR username@host=PASSW)RD(‘new_pass’);

3、 mysql.usr

Mysql>UPDATE user SET password=PASSWORD(‘new_pass’)WHERE user=’root’;

16、Mysql:shyong:使用模式

交互式模式

批处理模式

-h,--host=

-u,--user=

-p,--password=

-D,--database=

Mysql客户端命令:

\q,\G, \g,\!,\.,\d

17、Mysql命令

Mysql >USE mysql;切换数据库mysql

Mysql>SHOW TABLES;查看表

Mysql>DESC user;显示表有多少字段

Constraint:约束

Primayr key

Foreign key

Unique key

chkeck

18、%:任意长度任意字符

_:任意单个字符

19、忘记root用户密码;

修改 /etc/rc.d/init.d/mysqld

启动项: 添加 –skip-grant  --skip-networking

重启数据库

然后更改密码

然后再删掉添加的启动项配置。

20、/usr/local/mysql/bin

Mysql服务器端程序:mysqld,mysqld_safe,mysql_multi

Mysql客户端程序:需要连接至服务器端(TCP/IP,IPC):mysql,mysqladmin,mysqldump

非客户端程序:

集中式配置文件:

[mysqld]

[mysql_safe]

[mysql]

[mysqldump]

[client]

Mysqld_safe:

Mysqld读取配置文件次序:

Mysql –help –verbose

/etc/mysql/my.cnf --> /etc/my.cnf --> --default-extra-file*/path/to/some_conf_file -- >~/.my.cnf

Mysql--> SET {GLOBAL|SESSION} variable_name=’value’;

Mysql-->SHOW {GLOBAL|SESSION}VARIABLES [LIKE|WHERE];

Mysql -->SELECT @@{GLOBAL|SESSION}.variable_name;

21、DBA:

开发DBA:数据库设计、SQL语句、存储过程、存储函数、触发器

管理DBA:安装、升级、备份、恢复、用户管理、权限管理、监控、性能分析、基准测试、

22、SQL语言的组成部分

DDL

DML

完整性定义语言:DDL的一部分功能

视图定义;

事务控制

嵌入式SQL和动态SQL:

授权SQL:

23、数据类型:

字符型;

CHAR(#)

VARCHR(#)

BINARY(#)

VARBINARY(#)

TEXT:TINYTEXT,TEXT,MEDIUMTEXT, LONGTEXT

BLOB:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB

数值型;

精确数值型:TINYINT,SMALLINT,MEDINUMINT,INT,BIGINT

近似数值型:FLOAT,DOUBLE,REAL,BIT

日期时间型;DATE,TIME,DATETIME,YEAR(2),TIMESTAMP,

布尔型:TINYINT(1)

内置类型:

SET(a,b):a,b ,ab,ba

,ENUM(a,b):a,b

Mysql>HELP CREATE TABLE;

显示创建表的帮助信息,可以从中获取所支持所有数据类型:

24、DDL:数据库和表

视图、索引

DML:insert,update、delete

INSERT TO  tb_name[(col1,col2,….)] {VALUE|VALUES}();

数值数据:不需要引导

字符数据:引导

空值:‘’

INSERT INTO tb_name SET coll-value,……;

INSERT INTO tb_name (col1,….) SELECT clause;

把执行过程分为两段:CREATE LIKE,INSERT INTO SELECT

REPLACE INTO:替换

25、修改:UPDATE

WHERE clause

LIMIT n

26、删除:

DELETE FROM tb_name     (表的ID号不重置)

TRUNCATE TABLE tb_name   (表的ID号进行重置,清空并重置表)

SELECT LAST_INSERT_ID();上次插入的ID号是多少

27、查询:SELECT

表:只要有一个可用索引,完成查询至少有两条路径;

全表扫描

使用索引

SELECT * FROM tbname;

投影:SELECT col1,col2 FROM tbname;

选择:SELECT * FROM btname WHERE clause;

SELECT col1,col2 FROM tbname WHERE clause;

WHERE子句:

比较表达式:

BETWEEN  value1 AND value2

IN (element1,element2,…..)

IS NULL;

IS NOT NULL;

LIKE:;通配符匹配

%

_

RLIKE,REGEXP

_ ,* ,\>

组合条件

and,&&

or,||

not,!

xor,

聚合函数:  max(),min(),avg(),count()

28、SELETC:

单表查询

联结查询(jion)

联合查询(union)

29、存储和缓存:

memcached:缓存

程序局部性原理:

空间局部性:

时间局部性:

程序ßà缓存ßà存储

存储:持久性

30、事务:ACID

A :原子性

C:一致性

I:隔离性

D:持久性

随机I/O -->顺I/O

Mysqld  --help  --verbose

/etc/mysql/my.cnf --> /etc/my.cnf --> --default-extra-file=# --> ~/.my.cnf

命令行选项

配置文件中的可用参数

--skip-grant  --skip-networking

Mysql>SHOW {GLOBAL|SESSION}VARIABLES [LIKE clause] |[WHERE clause]

Mysql>SHOW {GLOBAL|SESSION} STATUS

静态修改:

datadir

动态修改:

mysql>SET {GLOBAL|SESSION} variable_name’value’;

动态修改:

GLOBAL:对当前会话无效,只对新建立的会话有效;

SESSION:仅对当前会话有效;

Mysql>SELECT @@{global|session}.variable_name

Mysql,sql_mode

Strict_all_tables,strict_trict_tables,tranditional,

Innodb

Cache

Myisam

数据类型:

是否支持索引

排序方式及比较方式

CHAR,BINARY

TINYINT,INT

修饰符:NULL ,NOT NULL ,DEFAULT,UNSIGNED,AUTO_INCREMENT

约束:PRIMARY KEY, UNIQUE KEY ,FOREIGN KEY ,CHECK

SQL语句:

DDL:数据定义语言

数据库、表、索引、视图、存储过程、存储函数、约束、触发器、事件调度器、游标。

DML:数据操作语言

CRUD:Insert, Select,Update,Delete

DCL :数据控制语言

GRANT,REVOKE

事务:Start Transaction ,Commit,Rollback,Save Point

DDL:

数据库:

创建:CREATE DATABASE SCHEMA 【IF NOT EXISTS】 dbname;

CHARACTER SET=

COLLATE=

删除:DROP DATABASE|SCHEMA[IF EXISTS] dbname;

获取帮助:HELP SQL KEYWORD

修改:ALTER DATABASE db_name

表:

创建:CREATE TABLE tb_name (coll defination,col2 defination)【table_options】;

Table options:

ENGINE=engine

DELAY_KEY_WHITE={0|1}

TABLESPAACE tablespace_name

CREATE TABLE tbname [(defination)] SELECT clause;

CREATE TABLE tbname LIKE old_table_name;

存储引擎:也称为表类型

MyISAM表:

tbname.MYD

tbname.MYI

tbname.frm

InnoDB表:

表空间:ibdata1

每表一个表空间

tbname.frm

tbname.idb:数据和索引

开启方法:

SET GLOBAL innodb_file_per_table=1;

建议:同一个库中的表最好使用相同的存储引擎;

删除:DROP TABLE [IF EXISTS] tbname;

改名:RENAME TABLE tb_name TO new_name;

修改;ALTER TABLE tbname

ADD col definition;

DROP colname;

MODIFY col definition [{first|after col_name}];

CHANGE col new_col_name definition [{first|after col_name}];

RENAME TO new_name;

Linux下mysql数据库的备份

[root@localhost ~]# mysqldump -u root -p mysql > ~/mysql.sql   #把数据库mysql备份到家目录下命名为mysql.sql

Linux下mysql数据库的还原

[root@localhost ~]# mysql -u root -p web < ~/web.sql    #把web.sql导入数据库web。

表联结:

交叉联结

内联结:自然联结

外联结:

左外联结

Left_table  LEFT JOIN  right_table  ON condition(条件)

右外联结

RIGHT JOIN…ON….

全外联结

自联结:sometables AS alias1 INNER JOIN sometable AS aliase2 ON alias1.FILED = alias2.FIELD;

联合查询:

SELECT  clause UNION SELECT clause

练习:

1、显示前5位同学的姓名、课程及成绩

2、显示其成绩高于80的同学的名称及课程

3、求前8位同学每位同学自己两门课的平均成绩,并按降序排列;

4、显示每门课程课程名称及学习的同学的个数。

子查询:

用于WHERE子句

SELECT clause FROM tb1 WHERE

1、用于比较表达式中的子查询

2、用于EXISTS中的子查询

3、用于IN中的子查询。

用于FROM中的子查询

··             SELECT col,…FROM (SELETC clause) WHERE condition

据说:MySQL 对子查询的优化很有限

Mysql查询:

简单查询:

SELECT [DISTINCT] col,col,…..FROM tb1 WHERE condition GROUP BY col HAVING condition  ORDER BY col LIMIT [m,]n;

组合查询:

联合查询:UNION

联结查询:

交叉查询

内联结

外联结

左外联结

右外联结

自联结

子查询:

WHERE:

用于比较条件:子查询只能返回单个值

用于IN

用于EXISTS

FROM:

并发性:

锁:

表锁

页锁

行锁

共享锁:读锁

独占锁:写锁

MyISAM引擎:表级锁

InnoDB引擎:行级锁

根据锁的施加方式:

显示锁:

LOCK TABLES tbname,…..{READ|WRITE}

UNLOCK TABLES;

隐式锁:

SELECT [FROM UPDATE | LOCK IN SHARE MODE]

LOCK  TABLES

事务:ACID

mysql> SHOW GLOBAL VARIABLES LIKE 'autocommit';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| autocommit    | ON    |

+---------------+-------+

1 row in set (0.00 sec)

表示:自动提交

关闭自动提交功能:为了提高性能

START TRANSACTION

SAVEPOINT point_name

COMMIT提交

ROLLBACK [TO somepoint]返回

COMMIT

ACID: I隔离性

RDBMS:事务有隔离级别;

READ-UNCOMMITTED

READ-COMMITTED

REPEATABLE-READ

SERIALIZABLE

MVCC:Multi Version Concurrency Control多版本并发控制

调整事务隔离级别:tx_isolation

READ-UNCOMMITTED

READ-COMMITTED

REPEATABLE-READ

SERIALIZABLE

Mysql >START TRANSACTION;COMMIT,;ROLLBACK;SAVEPOINT;ROLLBACK TO point;

Atuocommit=0

Mysql

mariaDBàmaria,aria (My ISAM)

存储引擎:表类型

Mysql>SHOW TABLES STATUS

表状态信息:

Row_format:Dyamic,Fixed,compriessed,compact

Rows:表中的行数;

Avg_row_lenfth行的平均字节数;

Data_length:表的数据量,单位为字节。

Max_data_dength:表的容量上限

Index_length:索引数据量,单位字节;

Data_free已经分配出去,但未存储 数据的存储空间。

Auto_increment:具有自动增长属性的字段上,下一个自动增长的值;

Create_time:标的创建时间

Update_time:数据最近一次更改的时间

Check_time:使用CHECK命令最近一次检查表的时间:myisamchk;

mysql传小马_Mysql 学习笔记相关推荐

  1. mysql原生建立索引_MySQL学习笔记之索引

    索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...

  2. mysql 查找相似数据_MySQL学习笔记之索引

    索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...

  3. mysql 加号的作用_MySQL学习笔记(一)

    MySQL学习笔记(一) 作者:易成勇 案例来源:AI技术前线 MySQL常用命令 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名 3.查看当前库的所有表 sh ...

  4. mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法

    本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) creat ...

  5. mysql innodb 索引结构_Mysql 学习笔记:InnoDB 索引结构浅析

    索引是检索图书资料的一种工具,把书刊中的内容或项目分类摘录,注明页数,按一定次序排列. 针对不同的数据存储结构有不同的数据查找方式. 1. 数据结构 1.1 B树 B树又名平衡多路查找树,主要用于文件 ...

  6. linux将mysql的错误连接数_Mysql学习笔记(十二) 并发参数调节

    mysql是多线程结构,包括后台线程和客户服务线程,多线程可以有效利用服务器资源,提高数据库的并发性能.在mysql的并发能力上,主要有有下列参数界定.分别为max_connections,back_ ...

  7. mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁

    一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...

  8. mysql 3.5安装_MYSQL学习笔记-06-搭建数据库

    文章内容输出来源:拉勾教育Java高薪训练营 1. 安装说明 基于Ubuntu Linux系统安装,MySQL版本是5.7.29. 安装方式是通过官网下载相应的tar.gz压缩包进行安装.这种方式需要 ...

  9. mysql 去重后拼接_mysql学习笔记(三)—— 查询select

    本节主要介绍查询语句(select),包括基础查询.条件查询.模糊查询,以及一些常用函数包括:去重函数distinct.字符拼接函数concat.null判断函数ifnull. 内容都是自己学习后从S ...

最新文章

  1. SwinTransformer代码中出现的代码知识的学习
  2. 使用tensoflow serving来部署模型推理节点
  3. php 应用程序错误,系统化PHP中的Web应用程序的错误代码?
  4. mysql trim 索引_mysql 强大的trim() 函数
  5. Python easy_insatll 安装包
  6. 内存和显存_小科普 |“内存”和“显存”有啥关系?
  7. 最好用的数据可视化神器,没有之一
  8. On The Way—Step 1 :python入门之Python的历程
  9. mac快速电脑锁屏/睡眠方法
  10. Leap 使用注意事项
  11. JSP项目打开默认主页
  12. HTML+CSS网页制作——恒德电子
  13. 谈谈多源数据融合-科普基本概念篇
  14. 一次性删除PPT所有动画
  15. java8 Exception全集
  16. win11如何连接打印机 win11连接打印机的设置方法
  17. OSChina 周日乱弹 —— 请务必让我分担他们的痛苦!
  18. 高新技术企业认定条件
  19. html如何实现表情加文字发布,vue实现文字表情同时输入的方法
  20. eCryptfs源码注释(2)

热门文章

  1. 【将金令】稳健,方为上策
  2. qlu_新生赛_2019
  3. 3D打印发展领域面临的常见问题
  4. GBase 8c 创建用户示例说明
  5. 腾讯已开源高精度人脸检测算法DSFD
  6. List初始化、集合复制
  7. 外汇基础知识学习5--掉期和领子期权
  8. 自定义error、北京污染物数据处理、可视化
  9. Python 使用pandas处理Excel —— 快递订单处理 数据匹配 邮费计算
  10. Nginx安装配置OpenSSL