MySQL数据库基础知识介绍

一、数据库简介

1.1数据库的组成

  1. 数据:描述事物的符号记录包括数字,文字、图形、图像、声音、档案记录等以“记录”形式按统一格式进行存储
  2. 表:将不同的记录组织在一起,用来存储具体数据
  3. 数据库: 表的集合,是存储数据的仓库以一定的组织方式存储的相互有关的数据集合

1.2数据的分类

  1. 结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据
  2. 非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页,有时候非常长,有时候几句话就没了;例如语音,视频都是非结构化的数据
  3. 半结构化数据:比如:XML或者HTML的格式的数据
     

1.3 数据库系统发展阶段

  • 萌芽阶段:文件系统

    • 使用磁盘文件来存储数据

  • 初级阶段:第一代数据库

    • 出现了网状模型、层次模型的数据库

  • 中级阶段:第二代数据库

  • 高级阶段:新一代数据库

    • “关系-对象”型数据库

1.4 数据库管理系统(DBMS)

        是实现对数据库资源有效组织、管理和存取的系统软件
功能:数据库的建立和维护功能、数据定义功能、数据操控功能、数据库的运行管理功能、通信功能

  1. 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
  2. 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。
  3. 数据操纵功能:包括数据查询统计和数据更新两个方面。
  4. 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
  5. 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。

1.5数据库系统(DBS)

        是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成

        用户可以通过DBMS或应用程序操作数据库

1.6关系型数据库介绍

关系模型的数据结构使用简单易懂的二维数据表

  • 每一行称为一条记录,用来描述一个对象的信息
  • 每一行称为一个字段,用来描述对象的一个属性

实体联系模型E-R

实体Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体,在E-R图中用矩形框表示实

体,把实体名写在框内

属性:实体所具有的特征或性质

联系:联系是数据之间的关联集合,是客观存在的应用语义链

• 实体内部的联系:指组成实体的各属性之间的联系。如职工实体中,职工号和部门经理号之间

有一种关联关系

• 实体之间的联系:指不同实体之间联系。例:学生选课实体和学生基本信息实体之间

• 实体之间的联系用菱形框表示

联系类型

  • 一对一联系(1:1)

  • 一对多联系(1:n):外键

  • 多对多联系(m:n):增加第三张表

数据的操作

  • 数据提取:在数据集合中提取感兴趣的内容。SELECT

  • 数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE

1.7非关系型数据库介绍

非关系数据库也称为NoSQL (Not Only SQL)
存储数据不以关系模型为依据,不需要固定的表格式
非关系型数据库的优点

数据库可高并发读写
对海量数据高效率存储与访问
数据库具有高扩展性与高可用性

二、数据库基本操作

2.1SQL分类

  1. 数据库:database
  2. 表:table,行:row 列:column
  3. 索引:index
  4. 视图:view
  5. 存储过程:procedure
  6. 存储函数:function
  7. 触发器:trigger
  8. 事件调度器:event scheduler,任务计划
  9. 用户:user
  10. 权限:privilege

2.2常用的数据类型

注:

对char来说,最多能存放字符个数255个,char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度 低版本会被截取 高版本会报错

char的长度是不可变的,而varchar的长度是可变的,也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了

varchar存储规则:
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节


2.3SQL 语言规范

书写规范

  1. 在数据库系统中,SQL 语句不区分大小写,建议用大写

  2. SQL语句可单行或多行书写,默认以 " ; " 结尾

  3. 关键词不能跨多行或简写

  4. 用空格和TAB 缩进来提高语句的可读性

  5. 子句通常位于独立行,便于编辑,提高可读性

命名规则:

必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)

不要使用MySQL的保留字,如tabble select show databases

SQL语句分类

DDL: Data Defination Language 数据定义语言    CREATE,DROP,ALTER

DML: Data Manipulation Language 数据操纵语言    INSERT,DELETE,UPDATE

软件开发:CRUD

DQL:Data Query Language 数据查询语言    SELECT

DCL:Data Control Language 数据控制语言    GRANT,REVOKE

TCL:Transaction Control Language 事务控制语言    COMMIT,ROLLBACK,SAVEPOINT
 

三、多实例

什么是数据库多实例

        多实例类似微信双开,端口号类比微信账号,数据库类比聊天窗口,表类比聊天记录,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306、3307等),同时运

行多个MySQL服务进程,这些服务进程通过不同的Socket监听不同的服务端口来提供服务。

多实例可能是MySQL的不同版本,也可能是MySQL的同一版本实现

多实例的好处

        可有效利用服务器资源。当单个服务器资源有剩余时,可以充分利用剩余资源提供更多的服务,且可以实现资源的逻辑隔离节约服务器资源。例如公司服务器资源紧张,但是数据库又需要各自尽量独立的提供服务,并且还需要到主从复制等技术,多实例就是最佳选择

多实例弊端

        存在资源互相抢占的问题。比如:当某个数据库实例并发很高或者SQL查询慢时,整个实例会消耗大量的CPU、磁盘I/O等资源,导致服务器上面其他的数据库实例在提供服务的质量也会下降,所以具体的需求要根据自己的实际情况而定。

1. #安装mariadb-server并启动登入系统
yum -y install mariadb-server
systemctl start mariadb.service
 
#一路回车,并设置密码
mysql_secure_installation 
 
#登入系统
mysql -u root -p123123
 
 
 
2. #创建目录和文件夹
mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
 
3. #设置属主属组
 chown -R mysql.mysql /mysql
 tree -d /mysql/
 
 4. #初始化数据库
 mysql_install_db --user=mysql --datadir=/mysql/3306/data
 mysql_install_db --user=mysql --datadir=/mysql/3307/data
 mysql_install_db --user=mysql --datadir=/mysql/3308/data
 
 5. #编辑配置文件
vim /mysql/3306/etc/my.cnf 
[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mysql.log
pid-file=/mysql/3306/pid/mysql.pid
 
6. #修改3307和3308配置文件
sed 's/3306/3307/' /mysql/3306/etc/my.cnf > /mysql/3307/etc/my.cnf
 
sed 's/3306/3308/' /mysql/3306/etc/my.cnf > 
/mysql/3308/etc/my.cnf
 
 
7. #准备启动脚本
vim /mysql/3306/bin/mysqld
#!/bin/bash
 
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysql"
mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
 
function_start_mysql()
{
    if [ ! -e "$mysql_sock" ];then
      printf "Starting MySQL...\n"
      ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf  &> /dev/null  &
    else
      printf "MySQL is running...\n"
      exit
    fi
}
 
 
function_stop_mysql()
{
    if [ ! -e "$mysql_sock" ];then
       printf "MySQL is stopped...\n"
       exit
    else
       printf "Stoping MySQL...\n"
       ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
   fi
}
 
 
function_restart_mysql()
{
    printf "Restarting MySQL...\n"
    function_stop_mysql
    sleep 2
    function_start_mysql
}
 
case $1 in
start)
    function_start_mysql
;;
stop)
    function_stop_mysql
;;
restart)
    function_restart_mysql
;;
*)
    printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
 
8. #重复上述过程,分别建立3307,3308的启动脚本
 
9. #授权并启动服务
chmod +x /mysql/3306/bin/mysqld 
chmod +x /mysql/3307/bin/mysqld 
chmod +x /mysql/3308/bin/mysqld 
 
/mysql/3306/bin/mysqld start
/mysql/3307/bin/mysqld start
/mysql/3308/bin/mysqld start
 
#查看有没有启动成功
ss -natp|grep 33
 
 
10. #怎么看mysql这个进程是不是超线程
1)#找到mysql进程号
pstree -p
2)#查看,5450就是查看的进程号
cat /proc/5450/status |grep Threads
 
11. #登入mysql
#示例
mysql -h127.0.0.1 -P3308
 
12. #怎么杀掉这个进程,示例
/mysql/3308/bin/mysqld stop
 
13. #修改密码示例
mysqladmin -uroot -S /mysql/3306/socket/mysql.sock password  
'123123' 
 
14. #设置开机启动
vim /etc/rc.d/rc.local
for i in {3306..3308};do /mysql/$i/bin/mysqld start;done
 
chmod +x /etc/rc.d/rc.local
 
开机后
bash /etc/rc.d/rc.local 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值