MySQL菜鸟教程.docx
《MySQL菜鸟教程.docx》由会员分享,可在线阅读,更多相关《MySQL菜鸟教程.docx(105页珍藏版)》请在冰豆网上搜索。
MySQL菜鸟教程
MySQL教程
Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:
关系数据库管理系统)应用软件之一。
在本教程中,会让大家快速掌握Mysql的基本知识,并轻松使用Mysql数据库。
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,
每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。
所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(RelationalDatabaseManagementSystem)的特点:
∙1.数据以表格的形式出现
∙2.每行为各种记录名称
∙3.每列为记录名称所对应的数据域
∙4.许多的行和列组成一表单
∙5.若干的表单组成database
RDBMS术语
在我们开始学习MySQL数据库前,让我们先了解下RDBMS的一些术语:
∙数据库:
数据库是一些关联表的集合。
.
∙数据表:
表是数据的矩阵。
在一个数据库中的表看起来像一个简单的电子表格。
∙列:
一列(数据元素)包含了相同的数据,例如邮政编码的数据。
∙行:
一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
∙冗余:
存储两倍数据,冗余降低了性能,但提高了数据的安全性。
∙主键:
主键是唯一的。
一个数据表中只能包含一个主键。
你可以使用主键来查询数据。
∙外键:
外键用于关联两个表。
∙复合键:
复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
∙索引:
使用索引可快速访问数据库表中的特定信息。
索引是对数据库表中一列或多列的值进行排序的一种结构。
类似于书籍的目录。
∙参照完整性:
参照的完整性要求关系中不允许引用不存在的实体。
与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
Mysql数据库
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库,这样就增加了速度并提高了灵活性。
∙Mysql是开源的,所以你不需要支付额外的费用。
∙Mysql支持大型的数据库。
可以处理拥有上千万条记录的大型数据库。
∙MySQL使用标准的SQL数据语言形式。
∙Mysql可以允许于多个系统上,并且支持多种语言。
这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
∙Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
∙MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
∙Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。
在开始学习本教程前你应该了解?
在开始学习本教程前你应该了解PHP和HTML的基础知识,并能简单的应用。
本教程的很多例子都跟PHP语言有关,我们的实例基本上是采用PHP语言来演示。
如果你还不了解PHP,你可以通过本站的PHP教程来了解该语言。
MySQL安装
所有平台的Mysql下载地址为:
MySQL下载.挑选你需要的MySQLCommunityServer版本及对应的平台。
Linux/UNIX上安装Mysql
Linux平台上推荐使用RPM包来安装Mysql,MySQLAB提供了以下RPM包的下载地址:
∙MySQL-MySQL服务器。
你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
∙MySQL-client-MySQL客户端程序,用于连接并操作Mysql服务器。
∙MySQL-devel-库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
∙MySQL-shared-该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
∙MySQL-bench-MySQL数据库服务器的基准和性能测试工具。
接下来我们在Centos系统下使用yum命令安装MySql:
检测系统是否自带安装mysql:
rpm-qa|grepmysql
如果你系统有安装,那可以选择进行卸载:
rpm-emysql //普通删除模式
rpm-e--nodepsmysql //强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装mysql:
yuminstallmysql
yuminstallmysql-server
yuminstallmysql-devel
启动mysql:
servicemysqldstart
注意:
如果我们是第一次启动mysql服务,mysql服务器首先会进行初始化的配置。
如果是CentOS7版本,由于MySQL数据库已从默认的程序列表中移除,可以使用mariadb代替:
yuminstallmariadb-servermariadb
mariadb数据库的相关命令是:
systemctlstartmariadb#启动MariaDB
systemctlstopmariadb#停止MariaDB
systemctlrestartmariadb#重启MariaDB
systemctlenablemariadb#设置开机启动
验证Mysql安装
在成功安装Mysql后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证Mysql是否工作正常。
使用mysqladmin工具来获取服务器状态:
使用mysqladmin命令俩检查服务器的版本,在linux上该二进制文件位于/usr/binonlinux,在window上该二进制文件位于C:
\mysql\bin。
[roothost]#mysqladmin--version
linux上该命令将输出以下结果,该结果基于你的系统信息:
mysqladminVer8.23Distrib5.0.9-0,forredhat-linux-gnuoni386
如果以上命令执行后未输入任何信息,说明你的Mysql未安装成功。
使用MySQLClient(Mysql客户端)执行简单的SQL命令
你可以在MySQLClient(Mysql客户端)使用mysql命令连接到Mysql服务器上,默认情况下Mysql服务器的密码为空,所以本实例不需要输入密码。
命令如下:
[roothost]#mysql
以上命令执行后会输出mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在mysql>提示符执行SQL命令:
mysql>SHOWDATABASES;
+----------+
|Database|
+----------+
|mysql|
|test|
+----------+
2rowsinset(0.13sec)
Mysql安装后需要做的
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
[roothost]#mysqladmin-urootpassword"new_password";
现在你可以通过以下命令来连接到Mysql服务器:
[roothost]#mysql-uroot-p
Enterpassword:
*******
注意:
在输入密码时,密码是不会显示了,你正确输入即可。
Window上安装Mysql
Window上安装Mysql相对来说会较为简单,你只需要载MySQL下载中下载window版本的mysql安装包,并解压安装包。
双击setup.exe文件,接下来你只需要安装默认的配置点击"next"即可,默认情况下安装信息会在C:
\mysql目录中。
接下来你可以通过"开始"=》在搜索框中输入"cmd"命令=》在命令提示符上切换到C:
\mysql\bin目录,并输入一下命令:
mysqld.exe--console
如果安装成功以上命令将输出一些mysql启动及InnoDB信息。
MySQL管理
启动及关闭MySQL服务器
首先,我们需要通过以下命令来检查MySQL服务器是否启动:
ps-ef|grepmysqld
如果MySql已经启动,以上命令将输出mysql进程列表,如果mysql未启动,你可以使用以下命令来启动mysql服务器:
roothost#cd/usr/bin
./mysqld_safe&
如果你想关闭目前运行的MySQL服务器,你可以执行以下命令:
roothost#cd/usr/bin
./mysqladmin-uroot-pshutdown
Enterpassword:
******
MySQL用户设置
如果你需要添加MySQL用户,你只需要在mysql数据库中的user表添加新用户即可。
以下为添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行SELECT,INSERT和UPDATE操作权限:
roothost#mysql-uroot-p
Enterpassword:
*******
mysql>usemysql;
Databasechanged
mysql>INSERTINTOuser
(host,user,password,
select_priv,insert_priv,update_priv)
VALUES('localhost','guest',
PASSWORD('guest123'),'Y','Y','Y');
QueryOK,1rowaffected(0.20sec)
mysql>FLUSHPRIVILEGES;
QueryOK,1rowaffected(0.01sec)
mysql>SELECThost,user,passwordFROMuserWHEREuser='guest';
+-----------+---------+------------------+
|host|user|password|
+-----------+---------+------------------+
|localhost|guest|6f8c114b58f2ce9e|
+-----------+---------+------------------+
1rowinset(0.00sec)
在添加用户时,请注意使用MySQL提供的PASSWORD()函数来对密码进行加密。
你可以在以上实例看到用户密码加密后为:
6f8c114b58f2ce9e.
注意:
在MySQL5.7中user表的password已换成了authentication_string。
注意:
在注意需要执行FLUSHPRIVILEGES语句。
这个命令执行后会重新载入授权表。
如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。
你可以在创建用户时,为用户指定权限,在对应的权限列中,在插入语句中设置为'Y'即可,用户权限列表如下:
∙Select_priv
∙Insert_priv
∙Update_priv
∙Delete_priv
∙Create_priv
∙Drop_priv
∙Reload_priv
∙Shutdown_priv
∙Process_priv
∙File_priv
∙Grant_priv
∙References_priv
∙Index_priv
∙Alter_priv
另外一种添加用户的方法为通过SQL的GRANT命令,你下命令会给指定数据库TUTORIALS添加用户zara,密码为zara123。
roothost#mysql-uroot-ppassword;
Enterpassword:
*******
mysql>usemysql;
Databasechanged
mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
->ONTUTORIALS.*
->TO'zara''localhost'
->IDENTIFIEDBY'zara123';
以上命令会在mysql数据库中的user表创建一条用户信息记录。
注意:
MySQL的SQL语句以分号(;)作为结束标识。
/etc/f文件配置
一般情况下,你不需要修改该配置文件,该文件默认配置如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。
管理MySQL的命令
以下列出了使用Mysql数据库过程中常用的命令:
∙USE数据库名:
选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
∙mysql>useRUNOOB;
Databasechanged
∙SHOWDATABASES:
列出MySQL数据库管理系统的数据库列表。
∙mysql>SHOWDATABASES;
∙+--------------------+
∙|Database|
∙+--------------------+
∙|information_schema|
∙|RUNOOB|
∙|cdcol|
∙|mysql|
∙|onethink|
∙|performance_schema|
∙|phpmyadmin|
∙|test|
∙|wecenter|
∙|wordpress|
∙+--------------------+
10rowsinset(0.02sec)
∙SHOWTABLES:
显示指定数据库的所有表,使用该命令前需要使用use命令来选择要操作的数据库。
∙mysql>useRUNOOB;
∙Databasechanged
∙mysql>SHOWTABLES;
∙+------------------+
∙|Tables_in_runoob|
∙+------------------+
∙|employee_tbl|
∙|runoob_tbl|
∙|tcount_tbl|
∙+------------------+
3rowsinset(0.00sec)
∙SHOWCOLUMNSFROM数据表:
显示数据表的属性,属性类型,主键信息,是否为NULL,默认值等其他信息。
∙mysql>SHOWCOLUMNSFROMrunoob_tbl;
∙+-----------------+--------------+------+-----+---------+-------+
∙|Field|Type|Null|Key|Default|Extra|
∙+-----------------+--------------+------+-----+---------+-------+
∙|runoob_id|int(11)|NO|PRI|NULL||
∙|runoob_title|varchar(255)|YES||NULL||
∙|runoob_author|varchar(255)|YES||NULL||
∙|submission_date|date|YES||NULL||
∙+-----------------+--------------+------+-----+---------+-------+
4rowsinset(0.01sec)
∙SHOWINDEXFROM数据表:
显示数据表的详细索引信息,包括PRIMARYKEY(主键)。
∙mysql>SHOWINDEXFROMrunoob_tbl;
∙+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
∙|Table|Non_unique|Key_name|Seq_in_index|Column_name|Collation|Cardinality|Sub_part|Packed|Null|Index_type|Comment|Index_comment|
∙+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
∙|runoob_tbl|0|PRIMARY|1|runoob_id|A|2|NULL|NULL||BTREE|||
∙+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
1rowinset(0.00sec)
∙SHOWTABLESTATUSLIKE[FROMdb_name][LIKE'pattern']\G:
该命令将输出Mysql数据库管理系统的性能及统计信息。
∙mysql>SHOWTABLESTATUSFROMRUNOOB;#显示数据库RUNOOB中所有表的信息
∙
∙mysql>SHOWTABLESTATUSfromRUNOOBLIKE'runoob%';#表名以runoob开头的表的信息
mysql>SHOWTABLESTATUSfromRUNOOBLIKE'runoob%'\G;#加上\G,查询结果按列打印
Gif图演示:
MySQL安装
MySQLPHP语法
笔记列表
1. oocarain
ooc***in163.
记录MySQL学习过程遇到的问题。
系统:
win32位
MySQL版本:
5.7.17-log
MySQL语法对大小写不敏感,但是大写更容易看出。
一、启动关闭MySQL服务
1【开始菜单】搜索services.msc打开windows【服务管理器】,可以在此开启关闭MySQL服务。
2在cmd中使用命令:
netstartmysql#启动mysql服务
netstopmysql#关闭mysql服务
遇到net命令无法识别,如下:
这是环境变量没有配置的原因,究竟是哪一个文件的环境变量没有配置呢?
是C:
\windows\system32\这个路径下的net.exe没有配置环境变量
现切换到这个路径下试一下可不可以使用net命令:
在Powershell需要使用
.\netstopmysql
关闭服务。
在cmd中可以直接使用
netstartmysql
启动服务。
将c:
\windows\system32添加到系统的Path中后:
成功!
!
!
oocarain
oocarain
ooc***in163.
5个月前(03-06)
2. 一条鱼
ili***yun163.
参考地址
用insert添加用户时,可能会报错:
ERROR1364(HY000):
Field'ssl_cipher'doesn'thaveadefaultvalue
my-default.ini中有一条语句:
指定了严格模式,为了安全,严格模式禁止通过insert这种形式直接修改mysql库中的user表进行添加新用户
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
将STRICT_TRANS_TABLES删掉之后即可使用insert添加
MySQL连接
使用mysql二进制方式连接
您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。
实例
以下是从命令行中连接mysql服务器的简单实例:
[roothost]#mysql-uroot-p
Enterpassword:
******
在登录成功后会出现mysql>命令提示窗口,你可以在上面执行任何SQL语句。
以上命令执行后,登录成功输出结果如下:
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis2854760toserverversion:
5.0.9
Type'help;'or'\h'forhelp.Type'\c'toclearthebuffer.
在以上实例中,我们使用了root用户登录到mysql服务器,当然你也可以使用其他mysql用户登录。
如果用户权限足够,任何用户都可以在mysql的命令提示窗口中进行SQL操作。
退出mysql>命令提示窗口可以使用e