一、MySQL数据库基础

2024-05-16 04:06:13

1.1、数据库模型

数据库由一批数据构成有序集合,这些数据被存在结构化的数据表中。数据表之间互相关联,反应客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。数据库的发展大致划分为几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类大概有3种:层次式数据库、网络式数据库和关系式数据库。

文本数据库缺陷:数据冗余和不一致,数据访问困难,数据孤立,完整性问题,原子性问题并发访问问题,安全性问题。

数据库系统的特性:数据管理独立性;有效地完成数据存取;数据完整性和安全性;数据集中管理;并发存储与故障恢复;减少应用程序开发时间。

数据库系统由硬件部分和软件部分共同构成,硬件主要用于存储数据库中的数据,包括计算机、存储设备等。软件部分则主要包括DBMS、支持DBMS运行的操作系统,以及支持多种语言进行应用开发的访问技术等。

通用关系型数据库架构:

wKiom1lkubmCWwBNAACCI5cY8TY388.png-wh_50

1.2、数据类型与约束

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。常用的数据类型有:

字符:CHAR(n)  VARCHAR(n)  BINARY(n)  VARBINARY(n)  TEXT(n)  BLOB(n)

数值:

整型:TINYINT  SMALLINT  MEDIUMINT  INT  BIGINT

修饰符:UNSIGNED  NOT NULL

浮点型:FLOAT  DOUBLE

日期时间:DATE  TIME  DATETIME STAMP

布尔

NULL

内置:ENUM, SET

字段修饰符:

NOT NULL    非空

NULL        空

UNSIGNED    无符号

DEFAULT     不适用于TEXT类型

PRIMARY KEY 主键

UNIQUE KEY  唯一键

AUTO_INCREMENT:自动增长类型的字段必须为主键或惟一键

域约束:数据类型约束

外键约束:引用完整性约束

主键约束:某字段能惟一标识此字段所属的实体,并且不允许为空,一张表中只能有一个主键。

惟一性约束:每一行的某字段都不允许出现相同值,可以为空一张表中可以有多个

检查性约束:用户自定义有效取值范围。

1.3、MySQL介绍

MySQL是一个小型关系数据库管理系统,与其他大型数据库管理系统(Oracle、DB2)相比,MySQL规模小、功能有限,但是它体积小、速度快、成本低,且它提供的功能对稍微复杂的应用来说已经够用。

MySQL的主要运行流程如下所示:

wKiom1lkvSTAtzJVAADumAkQwFc034.png-wh_50

MySQL数据库管理系统提供了许多命令行工具,这些工具可以用要管理MySQL服务器、对数据库进行访问控制、管理MySQL用户以及数据库备份和恢复工具等。

服务器端工具程序:

mysqld:SQL后台程序。该程序运行后,客户端才能连接服务器来访问数据库。

mysqld_safe:服务器启动脚本。

mysqld_multi:服务器启动脚本,可以启动或停止系统上安装的多个服务器。

myisamchk:用来描述、检查、优化和维护MyISAM表的实用工具。

mysqlbug:MySQL缺陷报告脚本。它可以用来向MySQL邮件系统发送缺陷报告。

mysql_install_db:该脚本用默认权限创建MySQL授权表。通常只是在系统首次安装MySQL时执行一次。

客户端工具程序:

myisampack:压缩MyISAM表以产生更小的只读表的工具

mysql:交互式输入SQL语句或从文件以批处理模式执行它们的命令行工具

mysqlaccess:检查访问主机名、用户名和数据库组合的权限的脚本

mysqladmin:执行管理操作的客户端程序,如创建或删除数据库,重载授权表,重新打开日志文件等,还可以用来检查版本、进程、以及服务器的状态信息

mysqlbinlog:从二进制日志读取语句的工具,二进制日志文件中包含执行过的语句,可以用来帮助系统从崩溃中恢复

mysqlcheck:检查、修复、分析以及优化表

mysqldump:将mysql数据库转储到一个文件

mysqlhotcopy:当服务器运行时,快速备份MyISAM表的工具

mysqlimport:使用LOAD DATA INFILE将文本文件导入相关表的库户程序

mysqlshow:显示数据库、表、列以及索引相关信息的客户程序

perror:显示系统或MySQL错误代码含义的工具

mysqladmin [options] command [arg] [command [arg]] ...

[options]:所有通行选项都可使用

command:

create DB_NAME  创建数据库drop DB_NAME删除数据库

debug: 打开调试日志并记录于error log中;

status:显示简要状态信息  (--sleep #: 间隔时长--count #: 显示的批次)

extended-status: 输出mysqld的各状态变量及其值,相当于执行mysql> SHOW GLOBAL STATUS

variables: 输出mysqld的各服务器变量

flush-hosts: 清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表

flush-logs: 日志滚动,二进制日志和中继日志

refresh: 相当于同时使用flush-logs和flush-hosts

flush-privileges、reload:刷新授权表

flush-status: 重置状态变量的值

flush-tables: 关闭当前打开的表文件句柄

flush-threads:清空线程缓存

password: 修改当前用户的密码;

ping: 测试服务器是否在线

processlist:显示mysql线程列表

shutdown: 关闭mysqld进程;

start-slave/stop-slave: 启动/关闭从服务器线程

kill: 杀死指定的线程,可以一次杀死多个,以逗号分隔,不能有多余空格

       

1.4、源码安装MySQL5.5

安装cmake软件与依赖包:

[root@mylinux home]# yum install -y cmake ncurses-devel

创建用户和组

[root@mylinux home]# groupadd mysql
[root@mylinux home]# useradd mysql -s /sbin/nologin -M -g mysql

解压编译MySQL

[root@mylinux home]#wget
[root@mylinux home]#tar xf mysql-5.5.56.tar.gz
[root@mylinux home]#cd mysql-5.5.56
[root@mylinux home]#cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.56 \
-DMYSQL_DATADIR=/application/mysql-5.5.56/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.56/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0
[root@mylinux home]#make
[root@mylinux home]#make install
[root@mylinux application]# cd /application/
[root@mylinux application]# ln -s /application/mysql-5.5.56/ /application/mysql
[root@mylinux application]# mkdir /application/mysql/data -p
[root@mylinux application]# cd mysql
[root@mylinux mysql]#chown  -R root:mysql  /application/mysql
[root@mylinux mysql]#mdkir -p /application/mysql-5.5.56/tmp
[root@mylinux mysql]#chmod -R 777 /application/mysql-5.5.56/tmp

选择配置文件与环境变量

[root@mylinux mysql]#cp support-files/my-large.cnf  /etc/my.cnf
[root@mylinux mysql]#vim /etc/profile.d/mysql.shexport PATH=/application/mysql/bin:$PATH

初始化数据库

[root@mylinux mysql]# ./scripts/mysql_install_db  --user=mysql --data=/application/mysql/data/
Installing MySQL system tables...
170711 22:09:40 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
170711 22:09:40 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170711 22:09:40 [Note] ./bin/mysqld (mysqld 5.5.56-log) starting as process 28738 ...
OK
Filling help tables...
170711 22:09:41 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
170711 22:09:41 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
170711 22:09:41 [Note] ./bin/mysqld (mysqld 5.5.56-log) starting as process 28745 ...
OKTo start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your systemPLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:./bin/mysqladmin -u root password 'new-password'
./bin/mysqladmin -u root -h mylinux password 'new-password'Alternatively you can run:
./bin/mysql_secure_installationwhich will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.See the manual for more instructions.You can start the MySQL daemon with:
cd . ; ./bin/mysqld_safe &You can test the MySQL daemon with mysql-test-run.pl
cd ./mysql-test ; perl mysql-test-run.plPlease report any problems at http://bugs.mysql.com/

添加启动脚本与设置开机启动

[root@mylinux mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@mylinux mysql]# chmod +x /etc/init.d/mysqld
[root@mylinux mysql]# chkconfig --add mysqld
[root@mylinux mysql]# chkconfig --level 2345 mysqld on
[root@mylinux mysql]# service mysqld start
Starting MySQL.. SUCCESS!

mysql的配置文件:

/etc/my.cnf或/etc/mysql/my.cnf-->$MYSQL_BASE/my.cnf -->--defaults-extra-file=my.cnf

-->~/ .my.cnf

使用配置文件的方式

1、它依次查找每个需要查找的文件,结果是所有文件并集;

2、如果某参数在多个文件中出现多次,后读取的最终生效;

1.5、MySQL变量与作用域

服务器变量:@@变量名

显示:SELECT @@变量名

设定:SET GLOBAL|SESSION 变量名='value'

设定服务器变量的值:(仅用于支持动态的变量)

支持修改的服务器变量:

动态变量:可以MySQL运行时修改,可即时修改

静态变量:于配置文件中修改其值,并重启后方能生效;

动态调整参数的生效方式:

全局变量:服务器级别,修改之后仅对新建立的会话有效;

会话变量:会话级别,仅对当前会话有效;会话建立时,从全局继承各变量;

查看服务器变量:

mysql> SHOW [{GLOBAL|SESSION}] VARIABLES [LIKE ''];
mysql> SELECT @@{GLOBAL|SESSION}.VARILABLE_NAME;
mysql> SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='NAME';
mysql> SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='NAME';

修改变量:默认仅管理员有权限修改全局变量

mysql> SET {GLOBAL|SESSION} VARIABLE_NAME='VALUE';

注意:无论是全局还是会话级别的动态变量修改,在重启mysqld后都会失效;想永久有效,可定义在配置文件中的相应段中[mysqld]。

1.6、MySQL中文数据乱码解决办法

1)、向表中插入数据之前先设置客户端的字符集与表保持一致

  SELECT CREATE TABLE tb_name \G   查看表的字符集set names 字符集;

2)、在SQL文件中指定字符集然后登陆MYSQL导入数据

  source tb_namq.sql;

3)、在SQL文件中指定字符集,通过mysql命令导入数据

  mysql  -uroot  -p’password’  tb_name<tb_name.sql

4)、指定mysql命令设置字符集

 mysql  -uroot -p’password’ --default-character-set=字符集 tb_name<tb_name.sql

5)、配置文件my.cnf中设置客户端与服务器端字符集

6)、进入MySQL,可以查看各配置字符集是否一致

SHOW VARIABLES LIKE ‘character_set%’;

一、MySQL数据库基础相关推荐

  1. php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]

    本文主要向大家介绍了PHP语言大牛开发笔记(8)--MySQL数据库基础回顾[2],通过具体的实例向大家展示,希望对大家学习php语言有所帮助. 一.数据表 为了确保数据的完整性和一致性,在创建表时指 ...

  2. 1.0 MySQL数据库基础知识

    MySQL数据库基础知识 MYSQL介绍 MySQL分支版本的发展 MySQL. Oracle. SQLServer的市场区别 MYSQL数据库使用上的结构 MYSQL体系架构图 MYSQL体系架构- ...

  3. MySQL数据库基础(五)——SQL查询

    MySQL数据库基础(五)--SQL查询 一.单表查询 1.查询所有字段 在SELECT语句中使用星号""通配符查询所有字段 在SELECT语句中指定所有字段 select fro ...

  4. mysql数据库基础的简单操作指南

    最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...

  5. MySQL数据库 --基础

    MySQL数据库 --基础 一.数据库介绍 1.1 数据库管理系统 数据库管理系统(DataBase Management System,DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程 ...

  6. linux下mysql数据库基础及客户端命令详解

    linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...

  7. mysql数据库基础语句讲解

    mysql数据库基础讲解 一.数据库客户端命令 二.数据库基础sql语句 三.数据表基础语句 四.数据的增删改查(重点) 切记sql语句之后一定要加 ; 一.数据库客户端命令 1.mysql: mys ...

  8. Linux Mysql 数据库基础

    目录 Linux Mysql 数据库基础 一.数据库 数据库简介 数据库的分类 数据库的发展史 数据库系统发展阶段 DBMS 数据库管理系统 数据库管理系统的优点 数据库管理系统的基本功能 数据库系统 ...

  9. MySQL数据库基础01 韩顺平 自学笔记

    MySQL数据库基础 数据库简单原理图 连接Mysql 启动和关闭mysql服务 连接Mysql指令 数据库三层结构 数据在数据库中的存储方式 SQL语句的分类 简单通过Java操作Mysql数据库 ...

  10. Mysql数据库基础知识(五)之:视图、变量、存储过程、函数、流程控制结构

    第一部分:Mysql数据库基础知识(一)之 基础查询----分组查询 第二部分:Mysql数据库基础知识(二)之 连接查询----子查询-----分页查询------union联合查询 第三部分:My ...

最新文章

  1. 【linux工具】ldconfig:linux配置动态链接库
  2. 解决android模拟器不能访问网络的问题
  3. java基本数据类型_Java 中有几种基本数据类型是什么?
  4. Python基础——PyCharm版本——第三章、数据类型和变量(超详细)
  5. mobi格式电子书_进阶能力 | 了解常见的电子书格式
  6. 数据库访问的性能问题与瓶颈问题【z】
  7. azure批量创建虚拟机_如何将数据库迁移到Azure虚拟机
  8. Windows 7镜像坎坷之路 - 都是Daemon Tools惹得祸
  9. day4 函数的包装+装饰器+迭代器
  10. 阿里云云计算 14 使用阿里云中的OSS
  11. 小爱音箱怎么装app_小爱音箱最新版本下载  小爱音箱app介绍_2113手游
  12. html怎么把音乐播放器放到中间,怎么把音乐播放器放到自己的博客首页面上去?...
  13. 4G模块配置、概念、调试记录
  14. 常见文件魔数(幻数)总结
  15. 绿蓝色悖论(新归纳之谜)?
  16. 计算机修改wif教程,电脑修改wifi密码步骤
  17. 经济法基础——第三章第一节、支付结算概述
  18. 多线程 分段 爆破crc32 C#C/C++ (一)
  19. Unity全局音量控制以及音量信息存储在本地
  20. 找出数组中符合某些条件的对象数组

热门文章

  1. boost::make_reverse_graph用法的测试程序
  2. boost::contract模块实现separate body的测试程序
  3. ITK:将图像投射为另一种类型
  4. Qt Creator部署到设备
  5. OpenGL coordinate systems坐标系统的实例
  6. OpenGL equirectangular等矩形环境图的实例
  7. OpenGL基本窗口和OpenGL 初始化
  8. C++Dynamic Array动态数组(附完整源码)
  9. QT的QFileSelector类的使用
  10. C++知识点串联总结