• ADADADADAD

    一、MySQL数据库基础[ mysql数据库 ]

    mysql数据库 时间:2024-12-24 19:13:11

    作者:文/会员上传

    简介:

    1.1、数据库模型 数据库由一批数据构成有序集合,这些数据被存在结构化的数据表中。数据表之间互相关联,反应客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    1.1、数据库模型

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

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

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

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

    通用关系型数据库架构:

    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的主要运行流程如下所示:

    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@mylinuxhome]#yuminstall-ycmakencurses-devel

    创建用户和组

    [root@mylinuxhome]#groupaddmysql[root@mylinuxhome]#useraddmysql-s/sbin/nologin-M-gmysql

    解压编译MySQL

    [root@mylinuxhome]#wget[root@mylinuxhome]#tarxfmysql-5.5.56.tar.gz[root@mylinuxhome]#cdmysql-5.5.56[root@mylinuxhome]#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@mylinuxhome]#make[root@mylinuxhome]#makeinstall[root@mylinuxapplication]#cd/application/[root@mylinuxapplication]#ln-s/application/mysql-5.5.56//application/mysql[root@mylinuxapplication]#mkdir/application/mysql/data-p[root@mylinuxapplication]#cdmysql[root@mylinuxmysql]#chown-Rroot:mysql/application/mysql[root@mylinuxmysql]#mdkir-p/application/mysql-5.5.56/tmp[root@mylinuxmysql]#chmod-R777/application/mysql-5.5.56/tmp

    选择配置文件与环境变量

    [root@mylinuxmysql]#cpsupport-files/my-large.cnf/etc/my.cnf[root@mylinuxmysql]#vim/etc/profile.d/mysql.shexportPATH=/application/mysql/bin:$PATH

    初始化数据库

    [root@mylinuxmysql]#./scripts/mysql_install_db--user=mysql--data=/application/mysql/data/InstallingMySQLsystemtables...17071122:09:40[Warning]'THREAD_CONCURRENCY'isdeprecatedandwillberemovedinafuturerelease.17071122:09:40[Note]Ignoring--secure-file-privvalueasserverisrunningwith--bootstrap.17071122:09:40[Note]./bin/mysqld(mysqld5.5.56-log)startingasprocess28738...OKFillinghelptables...17071122:09:41[Warning]'THREAD_CONCURRENCY'isdeprecatedandwillberemovedinafuturerelease.17071122:09:41[Note]Ignoring--secure-file-privvalueasserverisrunningwith--bootstrap.17071122:09:41[Note]./bin/mysqld(mysqld5.5.56-log)startingasprocess28745...OKTostartmysqldatboottimeyouhavetocopysupport-files/mysql.servertotherightplaceforyoursystemPLEASEREMEMBERTOSETAPASSWORDFORTHEMySQLrootUSER!Todoso,starttheserver,thenissuethefollowingcommands:./bin/mysqladmin-urootpassword'new-password'./bin/mysqladmin-uroot-hmylinuxpassword'new-password'Alternativelyyoucanrun:./bin/mysql_secure_installationwhichwillalsogiveyoutheoptionofremovingthetestdatabasesandanonymoususercreatedbydefault.Thisisstronglyrecommendedforproductionservers.Seethemanualformoreinstructions.YoucanstarttheMySQLdaemonwith:cd.;./bin/mysqld_safe&YoucantesttheMySQLdaemonwithmysql-test-run.plcd./mysql-test;perlmysql-test-run.plPleasereportanyproblemsathttp://bugs.mysql.com/

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

    [root@mylinuxmysql]#cpsupport-files/mysql.server/etc/init.d/mysqld[root@mylinuxmysql]#chmod+x/etc/init.d/mysqld[root@mylinuxmysql]#chkconfig--addmysqld[root@mylinuxmysql]#chkconfig--level2345mysqldon[root@mylinuxmysql]#servicemysqldstartStartingMySQL..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*FROMINFORMATION_SCHEMA.GLOBAL_VARIABLESWHEREVARIABLE_NAME='NAME';mysql>SELECT*FROMINFORMATION_SCHEMA.SESSION_VARIABLESWHEREVARIABLE_NAME='NAME';

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

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

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

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

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

    SELECTCREATETABLEtb_name\G查看表的字符集setnames字符集;

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

    sourcetb_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,可以查看各配置字符集是否一致

    SHOWVARIABLESLIKE‘character_set%’;

    一、MySQL数据库基础.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载