MySQL基础知识总结(一)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

 

数据(data):描述事物的符号记录,种类,文字,图像,声音。是数据库中存储的基本对象。

特点:数据与其语义是不可分的。

数据模型:数据的组织方式,并可以用某种数据结构来描述。层次数据模型,网状数据模型,关系数据模型,对象-关系模型,非关系模型。

数据库(DataBase,DB)是一个有结构的,集成的,可共享的,统一管理的数据集合。。以关系模型组织起来的数据库称为关系数据库。

数据库管理系统(DBMS)是一种用来管理数据库的商品化软件。所有访问数据库的请求都是由DBMS来完成的。DBMS提供数据定义(数据定义语言Data Definition Language DDL),数据操纵(数据操纵语言Data Manipulation Language DML),安全控制(数据控制语言Data Control Language DCL)和并发控制,数据备份与恢复功能。

Managing storage           存储管理

Maintaining security         安全管理

Maintaining metadata        数据管理

Managing transactions        事务管理

Supporting connectivity       支持连接性

Optimizing performance       性能优化

Providing back-up and recovery mechanisms          备份和恢复

Processing requests for data retrieval and modification

一个完整的数据库系统由数据库(DB),数据库管理系统(DBMS),应用程序,用户和硬件组成。

关系模型:

关系:可以理解为一张满足某些约束条件的二维表。

元组:关系中的一行称为一个元组,存放的是客观世界的一个实例。

属性:关系中的一列称为属性。一个属性必须有唯一的属性名。

域:  关系中一个属性取值范围。

关系性质:

关系中每个属性的每一个值都是单值的;

关系中同一属性的所有属性值都具有相同的数据类型;

关系中的属性名不能重复;

关系中属性位置从左到右出现的顺序无关紧要;

关系中任意两个元组不能完全相同;

关系中的元组从上到下出现的顺序无关紧要。

关系数据库:相互关联的表或者关系的集合。

候选键:由一个属性名或者多个属性名组成。表中任意一行在候选键属性上的值是唯一的;不存在更小的真子集(更小的属性或者属性组),其不同的取值也能用来区分不同的行。

主键:如果一个表中有多个候选键,就从其中选择一个作为区分行的唯一性标识符,这个键便称为主键(Primary Key,PK)。唯一标识当前表中记录的一个字段或者多个字段的集合。

外键:若表R1中的一个列或者列祖对应另一个表R2的主键,那么该列或者列祖称为表R1的外键。

实体完整性:表中的任意一行的主键值不能为空值并且是唯一的。

参照完整性:一个表的外键值可以为空值。若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

SQL :结构化查询语言

常见的关系型数据库:

大型数据库Oracle ,Sybase,Informix(IBM收购),DB2(IBM),EnterpriseDB(PostgreSQL企业版)

SQL Server,Access

MySQL (全球最流行的关系型数据库)

PostgreSQL

memoryDB(内存数据库):Altibase,TimesTen

NoSQL(非关系型数据库)

MySQL 关系型数据库: 管理数据储存的工具,特点:多线程,多任务。

开源数据库,遵循GUN规范。

版本:Community社区版 Enterprise企业版

特性:速度(Speed) 可靠性(Reliability) 可扩展性(Scalability)

      易用(Ease of  Use)   

      可移植性和兼容性 (Portability  and Standards  Compliance)

      支持多用户(Multiuser  Support)

      国际化 (Internationalization)

      支持广泛的应用程序(Wide Application Support)

      开源 (Open-Source Code)

相关组件:

MySQL Server 核心组件,提供MySQL服务

MySQL Cluster

MySQL Proxy 代理服务器组件,提供重写查询,修改结果集,实现查询,流量分析,报表

             查询,负载均衡等功能

MySQL Administrator   图形化界面管理MySQL

MySQL Query Browser  查询浏览器

MySQL Workbench     设计数据库的平台

MySQL Migration Toolkit  将其他数据库中的数据迁移到MySQL中,实现数据迁移的功能

MySQL Embedded Server  嵌入式MySQL Server

MySQL Drivers  and Connectors  驱动和各种语言的连接器

MySQL架构

Memory and Connection Management   内存和连接管理

Query Parsing and Execution 查询分析和执行:词法分析和查询优化

Data Storage   数据存储 :靠存储引擎来实现

Connectivity 连接器:客户端服务器端不在同一台主机,基于TCP/IP 网络;客户端和服务                                          器端在同一台主机,基于Unix Socket(Linux/Unix)或管道(windows)实现。

Standards Compliance  兼容

Transaction     事务

Query Caching   查询缓存

Extensiblity     可扩展性

Symmetric  Multiprocessing  Support   多对称

Security      安全性

Application  Programming Interface  提供编程接口

总体架构:

wps_clip_image-3517

安装方式:rpm(red hat,mysql)

          binary format(绿色安装)

          source code (编译安装)

安装目录:

wps_clip_image-6139

主配置文件(按次序来寻找)

1  /etc/my.cnf  集中式配置文件,为多个命令提供配置

2  /etc/mysql/my.cnf

3  $MYSQL_HOME/my.cnf

4  /path/to/file when defaults-extra-file=/path/to/file is specified

5   ~/.my.cnf

PS:如果发现多个配置文件, MySQL会将所有的配置文件组合起来,将他们的合合集作  

     为配置文件来使用 。如果配置出现冲突,则以读取最后一个配置文件中的配置为准。          

PS:如果启动服务的时候想不使用默认的数据存放目录,需要在初始化的时候使用datadir指令来定义。

PS:让mysql服务启动的时候读取额外的配置文件:

mysqld_safe --defaults-extra-file=/etc/mysql/my_instance.cnf。

再来回顾下绿色安装方式:

[root@server27 ~]# tar -zxvf mysql-5.1.50-linux-i686-glibc23.tar.gz -C /usr/local/

[root@server27 ~]# cd /usr/local/

[root@server27 local]# ln -sv mysql-5.1.50-linux-i686-glibc23 mysql

[root@server27 local]# cd mysql

[root@server27 mysql]# groupadd mysql

[root@server27 mysql]# useradd -g mysql mysql

[root@server27 mysql]# chown -R mysql:mysql .

PS:最好将MySQL数据放在LVM上,可以利用LVM的快照功能实现MySQL备份。

[root@server27 mysql]# mkdir /data

[root@server27 mysql]# chown mysql:mysql /data -R

[root@server27 mysql]# ./scripts/mysql_install_db --datadir=/data --user=mysql

[root@server27 mysql]# chown -R root .

[root@server27 mysql]# cd support-files/

[root@server27 support-files]# cp my-large.cnf /etc/my.cnf

[root@server27 support-files]# vim /etc/my.cnf

datadir = /data      //** line 41

启动MySQL:

[root@server27 mysql]# bin/mysqld_safe --user=mysql &

wps_clip_image-26699

提供MySQL启动脚本:

[root@server27 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@server27 mysql]# chkconfig --add mysqld

添加环境变量:

[root@server27 mysql]# vim /etc/profile

PATH=$PATH:/usr/local/mysql/bin   //** line 45

[root@server27 mysql]# . /etc/profile

导出头文件:

[root@server27 mysql]# ln -sv /usr/local/include  /usr/include/mysql

create symbolic link `/usr/include/mysql' to `/usr/local/include'

导出库文件:

[root@server27 mysql]# vim /etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

重读库文件:

[root@server27 mysql]# ldconfig -v

导出man目录:

[root@server27 mysql]# vim /etc/man.config

MANPATH /usr/local/mysql/man   //** line 48

或者将/usr/local/mysql/man 目录连接到/usr/man 下。

PS:对于MySQL用户而言, 识别用户账号的用户名既包括本身,又包括来源主机的IP地址,即:username@hostname,password

系统默认提供了三个用户账号和两个匿名账号:root@127.0.0.1, root@localhost, root@hostname ,两个匿名账号:‘ ’@localhost and ‘ ‘@hostname。

mysql> use mysql;

mysql> show tables;

mysql> DESC user;

mysql> SELECT user,host,password from user;

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

| user | host                  | password |

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

| root | localhost              |         |

| root | localhost.localdomain  |         |

| root | 127.0.0.1              |         |

|    | localhost              |         |

|    | localhost.localdomain  |         |

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

5 rows in set (0.00 sec)

修改用户密码:

[root@localhost ~]# mysqladmin -uroot -p password '123456';

Enter password:

mysqladmin -u root -h this_host_name password ’new-password’

重新登录:

[root@localhost ~]# mysql -uroot -p

Enter password:

如果使用管理员账号能够登录进去,则:

mysql> SET PASSWORD FOR ’root’@’host_name’ = PASSWORD(’new_password’);

或者

mysql> UPDATE mysql.user SET Password = PASSWORD(’new_password’)

WHERE User = ’root’;

mysql> FLUSH PRIVILEGES;

mysql> set PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('123456');

mysql> UPDATE mysql.user SET password=PASSWORD('redhat') WHERE user='root' and host='localhost.localdomain';

重读授权表:

mysql> FLUSH PRIVILEDGES;

wps_clip_image-305

删除一个用户:

mysql> DROP USER 'root'@'localhost.localdomain';

MySQL字符的意义:

wps_clip_image-21550

Leave the mysql interactive shell (command only, exit, quit or \q)

退出MySQL使用\q,exit或者quit。

Specify the use feature to change databases within mysql, the short form is \u

语句在非完整的情况下要取消执行使用\c。

mysql keeps an in-memory list of the commands typed in the session

Some shell interpreter keys retain their function on the mysql command line, For example:

Ctrl-w   deletes the previous word and stores it in a buffer.

Ctrl-y  retrieves (yanks) the contents of buffers filled with Ctrl-u or Ctrl-w

Ctrl-u  deletes the entire line prior to the cursor position and stores it in a buffer

Ctrl-a  moves the cursor to the beginning of the current line

Ctrl-e  moves the cursor to the end of the current line

命令历史保存在~/.mysql_history文件中。

?         (\?) Synonym for `help'.

clear     (\c) Clear the current input statement.

connect   (\r) Reconnect to the server. Optional arguments are db and host.

delimiter  (\d) Set statement delimiter.

edit      (\e) Edit command with $EDITOR.

ego       (\G) Send command to mysql server, display result vertically.

exit      (\q) Exit mysql. Same as quit.

go        (\g) Send command to mysql server.

help      (\h) Display this help.

nopager   (\n) Disable pager, print to stdout.

notee     (\t) Don't write into outfile.

pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.

print      (\p) Print current command.

prompt    (\R) Change your mysql prompt.

quit      (\q) Quit mysql.

rehash    (\#) Rebuild completion hash.

source    (\.) Execute an SQL script file. Takes a file name as an argument.

status    (\s) Get status information from the server.

system    (\!) Execute a system shell command.

tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.

use       (\u) Use another database. Takes database name as argument.

charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte

charsets.

warnings  (\W) Show warnings after every statement.

nowarning (\w) Don't show warnings after every statement.

显示服务器端的帮助信息:HELP keyword。

wps_clip_image-4245

启动的时候不读取用户表中的信息(绕过密码):

/usr/local/mysql/bin/mysqld --user=mysql --skip-grant-tables &

进入之后修改密码:

mysql > UPDATE user SET password=PASSWORD('123456') where user='root' and host='localhost';

mysql > FLUSH PRIVILEGES;

mysqladmin相关参数:

wps_clip_image-20473

wps_clip_image-13813

wps_clip_image-20920

[root@server27 mysql]# mysqladmin -uroot -p create testdb

[root@server27 mysql]# mysql -e 'show databases;'

wps_clip_image-9917

[root@server27 mysql]# mysqladmin -uroot -p extended-status

wps_clip_image-14962

相关GUI工具:

SQLyog           Windows上基于图形界面连接远程MySQL进行数据库管理的工具

MySQL Front      数据库管理工具

phpMyAdmin      数据库管理工具

MySQL Query Browser   查询浏览器,发送查询请求到服务器端并取回执行结果

MySQL Administrator  数据库管理工具

MySQL Workbench     数据库设计工具










本文转自 490999122 51CTO博客,原文链接:http://blog.51cto.com/lyp0909/558656,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
关系型数据库 MySQL 数据库
掌握MySQL数据库基础知识 同步练习与实训
掌握MySQL数据库基础知识 同步练习与实训。
86 0
|
8月前
|
存储 关系型数据库 MySQL
掌握MySQL数据库基础知识的同步练习与实训
进行掌握MySQL数据库基础知识的同步练习与实训。
105 0
|
5月前
|
关系型数据库 MySQL PHP
MySQL基础知识之【元数据】
MySQL基础知识之【元数据】
42 1
|
5月前
|
SQL 前端开发 关系型数据库
MYSQL基础知识之【复制表】
MYSQL基础知识之【复制表】
48 1
|
5月前
|
前端开发 关系型数据库 MySQL
MYSQL基础知识之【临时表】
MYSQL基础知识之【临时表】
41 0
|
5月前
|
SQL 前端开发 关系型数据库
MYSQL基础知识之【索引】
MYSQL基础知识之【索引】
29 0
|
5月前
|
SQL 前端开发 关系型数据库
MYSQL基础知识之【ALERT】
MYSQL基础知识之【ALERT】
67 0
|
5月前
|
SQL 前端开发 关系型数据库
MYSQL基础知识之【LIKE子句的使用 ,NULL值的处理,空值的处理】
MYSQL基础知识之【LIKE子句的使用 ,NULL值的处理,空值的处理】
65 0
|
5月前
|
SQL 前端开发 关系型数据库
MYSQL基础知识之【修改数据,删除数据】
MYSQL基础知识之【修改数据,删除数据】
46 1
|
5月前
|
SQL 关系型数据库 MySQL
MYSQL基础知识之【添加数据,查询数据】
MYSQL基础知识之【添加数据,查询数据】
29 0