2024年10月MySQL教程

 更新时间:2024-10-12

  ⑴Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem:关系数据库管理系统)应用软件之一。下面分享的MySQL教程主要是面向想学习MySQL的初学者,在通过本教程的学习后,能够对MySQL有一个初步的认识并能比较熟练地操作MySQL数据库。

  ⑵MySQL安装(Window安装)

  ⑶步骤、在任何版本的Windows默认安装是现在比以前要容易得多,MySQL巧妙地打包安装程序。只需下载安装包,随地把它解压缩,并运行mysql。exe。

  ⑷这里点击:DOWNLOAD链接,进入一下页面:

  ⑸步骤、这里点击:DOWNLOAD链接,进入一下页面:

  ⑹步骤、这里要求注册网站帐号,但可以直接通过。如上点击“Nothanks,juststartmydownload”,继续下一步:

  ⑺提示下载保存文件,下载完成后(本教程中下载完成的文件是:mysql-.。-winx。zip)解压文件放到目录:D:software下,这是一个免安装包,这里不需要安装步骤。

  ⑻在本教程中MySQL执行文件在:D:softwaremysql-.。-winxbin,它通过从命令提示符第一次进入测试MySQL服务器。转到mysqld服务器的位置,这里进入D:softwaremysql-.。-winxbin,然后输入mysqld。exe,

  ⑼注:或直接双击文件:mysqld。exe启动MySQL服务,如果不启动数据库,以下的步骤无法操作;

  ⑽如果一切顺利,会看到有关启动和InnoDB一些消息。如果没有看到,可能有权限问题。请确保保存数据的目录可以访问任何根据用户(可能是MySQL)运行数据库进程。

  ⑾MySQL不会自己添加到开始菜单,并没有特别漂亮的GUI的方式来停止服务器。因此,如果倾向于通过双击可执行mysqld启动服务器,应该记住通过并用mysqladmin,任务列表,任务管理器或其他Windows特定方式来执行。

  ⑿MySQL已经被成功安装后,基础表已经被初始化,并且服务器已经启动,可以通过一些简单的测试验证。

  ⒀使用中mysqladmin工具程序来获取服务器状态

  ⒁使用mysqladmin来检查服务器版本。在目录D:softwaremysql-.。-winxbin

  ⒂D:softwaremysql-.。-winxbin>mysqladmin--version

  ⒃mysqladminVer.Distrib.。,forWinonx_

  ⒄如果看到这样的消息,则有可能是在安装了一些问题,需要一些帮助解决它。

  ⒅使用MySQL客户端执行简单的SQL命令

  ⒆可以使用MySQL客户端使用mysql命令连接到MySQL服务器。此时,不需要给任何密码,因为默认情况下它被设置为空。

  ⒇所以,只需要使用下面的命令:

  ⒈D:softwaremysql-.。-winxbin>mysql

  ⒉应该出现一个mysql>提示符。现在,已连接到MySQL服务器,可以在MySQL的命令>提示符下执行所有SQL,如下:

  ⒊mysql>SHOWDATABASES;+----------+|Database|+----------+|mysql||test|+----------+rowsinset(.sec)

  ⒋MySQL附带了一个空密码有的root用户。成功后安装了数据库和客户端,需要进行如下设置root密码:

  ⒌D:softwaremysql-.。-winxbin>mysqladmin-urootpassword"“;

  ⒍。关闭正在运行的MySQL服务。。打开DOS窗口,转到D:softwaremysql-.。-winxbin目录。。输入mysqld--skip-grant-tables回车。--skip-grant-tables的意思是启动MySQL服务的时候跳过权限表认证。再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysqlbin目录。。输入mysql回车,如果成功,将出现MySQL提示符>。。连接权限数据库:usemysql;。改密码:updateusersetpassword=password(”“)whereuser=”root“;(别忘了最后加分号)。。刷新权限(必须步骤):flushprivileges;。退出quit。。注销系统,再进入,使用用户名root和刚才设置的新密码登录。

  ⒎现在使MySQL服务器的连接,那么使用下面的命令:

  ⒏D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:******

  ⒐运行和关闭MySQL服务器

  ⒑首先检查MySQL服务器正在运行与否。在资源管理器查看有没有mysqld的进程,如果MySQL正在运行,那么会看到列出来的mysqld进程。如果服务器没有运行,那么可以使用下面的命令来启动它:

  ⒒D:softwaremysql-.。-winxbin>mysqld--::[Warning]TIMESTAMPwithimplicitDEFAULTvalueisdeprecated。Pleaseuse--explicit_defaults_for_timestampserveroption(seedocumentationformoredetails)。--::[Note]mysqld(mysqld.。)startingasprocess。

  ⒓现在,如果想关闭已经运行的MySQL服务器,那么可以使用下面的命令做到这一点:

  ⒔D:softwaremysql-.。-winxbin>mysqladmin-uroot-pshutdownEnterpassword:******

  ⒕设置MySQL用户帐户

  ⒖要添加一个新用户到MySQL,只需要在数据库中的新记录添加到用户表:mysql。user

  ⒗下面是添加新用户:yiibai的例子,给定SELECT,INSERT和UPDATE权限并使用密码:yiibai;SQL查询是:

  ⒘D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:mysql>usemysql;Databasechangedmysql>INSERTINTOuser(host,user,password,select_priv,insert_priv,update_priv)VALUES(‘localhost’,‘yiibai’,PASSWORD('‘),’Y‘,’Y‘,’Y‘);QueryOK,rowaffected(.sec)mysql>FLUSHPRIVILEGES;QueryOK,rowaffected(.sec)mysql>SELECThost,user,passwordFROMuserWHEREuser=’yiibai‘;+-----------+---------+------------------+|host|user|password|+-----------+---------+------------------+|localhost|yiibai|*AAACDBCBFBEFCB|+-----------+---------+------------------+rowinset(.sec)

  ⒙当要添加一个新用户,记得要PASSWORD()函数加密MySQL新使用的密码。正如在上面的例子中看到密码为mypass,进行加密后为:*AAACDBCBFBEFCB

  ⒚注意最后要使用FLUSHPRIVILEGES语句。这告诉服务器重新加载授权表。如果不使用它,那么将无法使用新的用户帐户连接到MySQL服务器,至少在服务器重新启动后才可以。

  ⒛也可以通过在用户设置表以下几列的值为’Y‘,指定给新用户的权限,在执行INSERT查询后,也可以在以后使用UPDATE查询更新它们:

  Select_priv

  Insert_priv

  Update_priv

  Delete_priv

  Create_priv

  Reload_priv

  Shutdown_priv

  Process_priv

  Grant_priv

  References_priv

  Index_priv

  Alter_priv

  下面我们来创建一个数据库:tutorials,使用以下命令:

  D:softwaremysql-.。-winxbin>mysql-uroot-ppassword;Enterpassword:mysql>createdatabasetutorialsdefaultcharactersetutfcollateutf_general_ci;

  添加用户帐户的另一种方式是通过使用GRANTSQL命令;下面的例子将增加用户zara并使用密码zara为特定数据库:tutorials

  D:softwaremysql-.。-winxbin>mysql-uroot-ppassword;Enterpassword:mysql>usemysql;Databasechangedmysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP->ONtutorials。*->TO’yiibai‘’localhost‘->IDENTIFIEDBY’‘;

  这也将创建一条记录在MySQL数据库中的表:user

  注意:MySQL不会终止命令,直到给一个分号(;)在SQL命令的结尾。

  my。ini文件配置

  大多数情况下,不需要去修改这个文件。默认情况下,它会具有以下项:

  [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql。sock[mysql。server]user=mysqlbasedir=/var/lib[safe_mysqld]err-log=/var/log/mysqld。logpid-file=/var/run/mysqld/mysqld。pid

  在这里,可以指定错误日志为其它的目录,否则不应该更改此文件中的任何内容。

  这里是重要的MySQL命令,经常在MySQL数据库的管理或工作中使用:

  USEDatabasename:用于选择在MySQL工作区指定的数据库。

  SHOWDATABASES:列出了MySQL数据库管理系统中的所有可访问的数据库。

  SHOWTABLES:显示已经选择数据库中的表的命令。

  SHOWCOLUMNSFROMtablename:显示属性,属性类型,关键信息,NULL是否被允许,默认值和其它的表信息。

  SHOWINDEXFROMtablename:提供所有指标的详细信息表,其中包括PRIMARYKEY。

  SHOWTABLESTATUSLIKEtablenameG:报告MySQL的数据库管理系统的性能和统计数据的详细信息。

  使用MySQL二进制连接MySQL

  可以使用MySQL二进制在命令提示符下建立MySQL数据库的连接。

  【MySQL教程示例】

  下面是一个简单的例子,从命令提示符连接MySQL服务器:

  D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:

  注意,这里密码为空,直接回车就就进入mysql>命令提示符下,能够执行任何SQL命令。以下是上述命令的结果:

  WeletotheMySQLmonitor。mandsendwith;。YourMySQLconnectionidisServerversion:.。MySQLmunityServer(GPL)Copyright(c),,Oracleand/oritsaffiliates。Allrightsreserved。OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates。Othernamesmaybetrademarksoftheirrespectiveowners。Type’help;‘or’h‘forhelp。Type’c‘toclearthebuffer。

  在上面的例子中,我们使用root用户,但可以使用任何其他用户。任何用户将能够执行所有的SQL操作(前提这个用户有对应执行SQL权限)。

  任何时候使用exit命令在mysql>提示符下,从MySQL数据库断开。

  mysql>exitBye

  MySQL创建数据库

  需要特殊权限创建或删除一个MySQL数据库。因此,假如有权使用root用户,就可以用mysql中的mysqladmin来创建数据库。

  MySQL教程示例:

  下面是一个简单的例子,创建名为tutorials的数据库。

  D:softwaremysql-.。-winxbin>mysqladmin-uroot-pcreatetutorialsEnterpassword:

  D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:mysql>createdatabaseyiibai_tutorials;mysql>createdatabaseyiibai_tutorials;

  这将创建一个MySQL数据库:yiibai_tutorials和yiibai_tutorials,使用下面命令查看结果:

  mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||test||yiibai_tutorials||yiibai_tutorials|+--------------------+rowsinset(.sec)

  MySQL删除数据库

  需要特殊权限来创建或删除一个MySQL数据库。因此,假如你有机会获得root用户来登录,可以用mysql中mysqladmin二进制来创建任何数据库。

  在删除任何数据库时要注意,因为删除数据库时所有的数据在数据库中。

  下面是一个例子,用来删除前面的章节中所创建的数据库:

  D:softwaremysql-.。-winxbin>mysqladmin-uroot-pdropyiibai_tutorialsEnterpassword:******这会给出一个警告,它会确认你是否真的要删除这个数据库或不删除。Droppingthedatabaseispotentiallyaverybadthingtodo。Anydatastoredinthedatabasewillbedestroyed。Doyoureallywanttodropthe’yiibai_tutorials‘database[y/N]yDatabase”yiibai_tutorials“dropped或使用:

  mysql>dropdatabaseyiibai_tutorials;QueryOK,rowsaffected(.sec)

  使用下面命令看删除后,数据库的列表情况:

  mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||test||yiibai|+--------------------+rowsinset(.sec)

  连接到MySQL服务器后,则需要选择特定的数据库的来工作。这是因为可能有多个数据库可使用在MySQL服务器上。

  从命令提示符选择MySQL数据库

  这是非常简单的,从MySQL>提示符下选择一个特定的数据库。可以使用SQL命令的user来选择一个特定的数据库。

  MySQL教程示例:

  下面是一个例子,选择数据库为test:

  D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:mysql>usetest;Databasechangedmysql>

  现在,我们已经选择test数据库,后续所有操作将在test数据库上执行。

  注意:所有的数据库名,表名,表中的字段名称是区分大小写的。所以,我们必须使用适当的名称,在给定任何SQL命令。

  MySQL表字段类型

  正确地定义的表中的字段在数据库的整体优化是非常重要的。我们应该只使用真正需要使用类型和字段的大小;如果知道只使用个字符,就不使用个字符宽定义一个字段。这些类型的字段(或列),也被称为数据类型,数据存储这些字段之中。

  MySQL使用许多不同的数据类型,总体上分为三类:数字,日期,时间和字符串类型。

  MySQL使用所有标准的ANSISQL数字数据类型,所以,如果在学习MySQL之前,有接触过其它不同的数据库系统,那么这些定义看起来很熟悉。下面列出了常见的数字数据类型及其说明:

  INT-正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-到。如果是无符号,允许的范围是从到。可以指定多达位的宽度。

  TINYINT-一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-到。如果是无符号,允许的范围是从到,可以指定多达位数的宽度。

  SMALLINT-一个小的整数,可以带符号。如果有符号,允许范围为-至。如果无符号,允许的范围是从到,可以指定最多位的宽度。

  MEDIUMINT-一个中等大小的整数,可以带符号。如果有符号,允许范围为-至。如果无符号,允许的范围是从到,可以指定最多位的宽度。

  BIGINT-一个大的整数,可以带符号。如果有符号,允许范围为-到。如果无符号,允许的范围是从到。可以指定最多位的宽度。

  FLOAT(M,D)-不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为,。其中是小数的位数,是数字(包括小数)的总数。小数精度可以到个浮点。

  DOUBLE(M,D)-不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。这不是必需的,默认为,,其中是小数的位数。小数精度可以达到位的DOUBLE。REAL是DOUBLE同义词。

  DECIMAL(M,D)-非压缩浮点数不能是无符号的。在解包小数,每个小数对应于一个字节。定义显示长度(M)和小数(D)的数量是必需的。NUMERIC是DECIMAL的同义词。

  MySQL的日期和时间数据类型包括:

  DATE-以YYYY-MM-DD格式的日期,在--和--之间。例如,年月日将被存储为--。

  DATETIME-日期和时间组合以YYYY-MM-DDHH:MM:SS格式,在--::到--::之间。例如,年月日下午:,会被存储为--::。

  TIMESTAMP-年月日午夜之间的时间戳,到的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符;年月日下午点分将被存储为(YYYYMMDDHHMMSS)。

  TIME-存储时间在HH:MM:SS格式。

  YEAR(M)-以位或位数字格式来存储年份。如果长度指定为(例如YEAR()),年份就可以为至(?)。如果长度指定为,年份范围是-,默认长度为。

  虽然数字和日期类型比较有意思,但存储大多数数据都可能是字符串格式。下面列出了在MySQL中常见的字符串数据类型。

  CHAR(M)-固定长度的字符串是以长度为到之间个字符长度(例如:CHAR()),存储右空格填充到指定的长度。限定长度不是必需的,它会默认为。

  VARCHAR(M)-可变长度的字符串是以长度为到之间字符数(高版本的MySQL超过);例如:VARCHAR()。创建VARCHAR类型字段时,必须定义长度。

  BLOBorTEXT-字段的最大长度是个字符。BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据;两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。

  TINYBLOB或TINYTEXT-BLOB或TEXT列用个字符的最大长度。不指定TINYBLOB或TINYTEXT的长度。

  MEDIUMBLOBorMEDIUMTEXT-BLOB或TEXT列具有字符的最大长度。不指定MEDIUMBLOB或MEDIUMTEXT的长度。

  LONGBLOB或LONGTEXT-BLOB或TEXT列具有字符的最大长度。不指定LONGBLOB或LONGTEXT的长度。

  ENUM-枚举,这是一个奇特的术语列表。当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。

  定义每个字段(类型、长度等)

  下面是通用的SQL语法用来创建MySQL表:

  CREATETABLEtable_name(column_namecolumn_type);

  现在,我们将在test数据库中创建以下表。

  createtabletutorials_tbl(tutorial_idINTNOTNULLAUTO_INCREMENT,tutorial_titleVARCHAR()NOTNULL,tutorial_authorVARCHAR()NOTNULL,submission_dateDATE,PRIMARYKEY(tutorial_id));

  在这里,一些数据项需要解释:

  字段使用NOTNULL属性,是因为我们不希望这个字段的值为NULL。因此,如果用户将尝试创建具有NULL值的记录,那么MySQL会产生错误。

  字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段下一个可用编号。

  关键字PRIMARYKEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。

  通过命令提示符来创建表

  在mysql>提示符下,创建一个MySQL表这是很容易的。使用SQL命令CREATETABLE来创建表。

  下面是一个例子,创建一个表:tutorials_tbl:

  D:softwaremysql-.。-winxbin>mysql-uroot-pEnterpassword:mysql>usetutorials;Databasechangedmysql>CREATETABLEtutorials_tbl(->tutorial_idINTNOTNULLAUTO_INCREMENT,->tutorial_titleVARCHAR()NOTNULL,->tutorial_authorVARCHAR()NOTNULL,->submission_dateDATE,->PRIMARYKEY(tutorial_id)->);QueryOK,rowsaffected(.sec)mysql>

  注:MySQL不会终止命令,直到给一个分号(;)表示SQL命令结束。

  删除现有MySQL表这是很容易的,但必须非常小心,当删除表后丢失的数据将不能恢复。

  这是用来删除MySQL表的通用SQL语法:

  DROPTABLEtable_name;

  从命令行提示符删除表

  这需要只是在MySQL>提示符下执行DROPTABLESQL命令。

  下面是一个例子,它将删除表:tutorials_tbl:

  roothost#mysql-uroot-pEnterpassword:mysql>usetest;Databasechangedmysql>DROPTABLEtutorials_tbl;QueryOK,rowsaffected(.sec)mysql>

  想要将数据插入到MySQL表,需要使用SQLINSERTINTO命令。可以通过用mysql>提示符或通过使用像PHP脚本将任何数据插入到MySQL表。

  这里是INSERTINTO命令将数据插入到MySQL表的通用SQL语法:

  INSERTINTOtable_name(field,field,fieldN)VALUES(value,value,valueN);

  要插入字符串类型数据,则需要双或单引号保留到所有的值,例如:-”value“。

  这将使用SQL的INSERTINTO命令将数据插入到MySQL表:tutorials_tbl

  下面的例子将创建条记录到表:tutorials_tbl

  roothost#mysql-uroot-ppassword;Enterpassword:mysql>useuse;Databasechangedmysql>INSERTINTOtutorials_tbl(tutorial_title,tutorial_author,submission_date)VALUES(”LearnPHP“,”Paul“,NOW());QueryOK,rowaffected(.sec)mysql>INSERTINTOtutorials_tbl->(tutorial_title,tutorial_author,submission_date)->VALUES->(”LearnMySQL“,”Saya“,NOW());QueryOK,rowaffected(.sec)mysql>INSERTINTOtutorials_tbl->(tutorial_title,tutorial_author,submission_date)->VALUES->(”JAVATutorial“,”yiibai",’--');QueryOK,rowaffected(.sec)mysql>

  注意:请注意,所有的箭头符号(->)不是SQL命令的一部分;它表示一个新行,是由MySQL提示符按下回车键没有给出一个分号,命令自动创建在行尾。

  在上面的例子中,未提供tutorial_id对应的值,因为在创建表时它会自动创建,这个字段我们给了AUTO_INCREMENT选项。因此MySQL会自动分配插入ID的值。这里,NOW()是MySQL函数,返回当前的日期和时间。

  MySQLSELECT查询

  SQLSELECT命令用于从MySQL数据库获取数据。可以在MySQL>提示符使用这个命令,以及任何像PHP的脚本和语言等。

  下面是通用的SQL的SELECT命令语法,从MySQL表获取数据:

  SELECTfield,field,fieldNtable_name,table_name。[WHEREClause][OFFSETM][LIMITN]

  可以使用分隔的一个或多个逗号从多个表,以及使用WHERE子句包括各种条件,但WHERE子句是SELECT命令的可选部分

  可以在一个SELECT命令指定读取一个或多个字段

  可以指定星号(*)代替选择的字段。在这种情况下,将返回所有字段

  可以指定任意的条件在WHERE子句后面

  可以使用OFFSET指定一个偏移量,SELECT从那里开始返回记录。默认情况下offset的值是

  可以使用LIMIT属性限制返回的数量

  这将使用SQLSELECT命令从MySQL表tutorials_tbl读取数据

  下面的例子将从tutorials_tbl表返回所有记录:

  roothost#mysql-uroot-ppassword;Enterpassword:mysql>usetest;Databasechangedmysql>SELECT*fromtutorials_tbl;+-------------+----------------+-----------------+-----------------+|tutorial_id|tutorial_title|tutorial_author|submission_date|+-------------+----------------+-----------------+-----------------+||LearnPHP|Paul|--|||LearnMySQL|Saya|--|||JAVATutorial|yiibai|--|+-------------+----------------+-----------------+-----------------+rowsinset(.sec)mysql>

  以上就是针对初学者的MySQL教程了,通过以上入门教程,希望能帮助更多初学者快速掌握MySQL的开发技能。

您可能感兴趣的文章:

相关文章