MySQL简介、安装、配置、主要命令教程

来源:互联网 发布:中国移动高清网络电视 编辑:程序博客网 时间:2024/04/29 22:49

MySQL简介、安装、配置、主要命令。主要参考的 马士兵MySQL简明教程视频 ,谢谢马老师的讲解,所有命令均亲自试验,有程序运行结果为证。如有错误请多多指正,本人也是刚刚接触这个数据库。

第一章 MySQL简介、安装、配置

1.1数据库概述及MySQL简介

    数据库的用途 
    数据库系统本质上是用来管理各种信息的。这些信息来自于不同的地方,比如,奥运会上运动员的各种数据统计、公司销售统计、学生成绩、财务报表等。如果一项工作很简单,那就不需要用到数据库。比如上街购物,我只需要在白纸上列出购物清单,购买后在上面划个对勾就行了,即使你身上带有掌上电脑,也不需要用到数据库。 
    数据库系统主要用在组织和管理的信息很庞大或很复杂,用手工处理极为繁重时。比如病人到医院就医,需要通过挂号、就诊、买药、住院、治疗、康复等一系列程序。挂号就要登记病人姓名、性别、年龄等情况。买药的时候医院依据药单从成千上万种药物中挑出符合要求的药品,需要知道药的品名、具体位置、库存多少、存取多少等等。如果病人很多,医院选药就很复烦了。如果手工处理,工作量大,而且有可能调拿错药。这时如果通过数据库处理,只需简单地输入药品名就马上可以知道具体位置、库存还有多少等详细情况。这样是不是很方便、提高了效率,并且还避免了拿错药的情况。 
    数据库系统的组成 
    数据库应用系统主要包括数据库(DataBase,简称DB)、数据库管理系统(DataBase Management System,简称DBMS)、数据库应用3大部分。这3部分之间的关系如图1所示。

 
1

     实际的数据库可能相当复杂,对数据库的操作就更加复杂。为了更有效地管理和操作数据库,人们研制出数据库管理系统(DataBase Management System,简称DBMS)。DBMS是用于操作数据库的软件产品。我们平常说的数据库OracleMS SQL ServerMySQLSybaseFoxProAccess等等,都是属于DBMS范畴。虽然这些DBMS产品的功能各有所异,但是基本功能到大同小异差不多。 
     MySQL介绍 
     MySQL 是一个真正的多用户、多线程SQL数据库服务器,它是一个客户机/服务器结构的实现MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统(DBMS)来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健壮和易用。关键的是它是免费的,可以在Internet上免费下载到,并可免费使用。MySQL 对于一般中小型,甚至大型应用都能够胜任。 

 MySQL的官方网站是:http://www.mysql.com 。技术支持网站很多,一般如果在学习过程中遇到问题,可以到下列网站寻求支持: 

 http://www.itpub.net/     http://www.linuxforum.net/      http://www.csdn.com/      http://tech.ccidnet.com/pub/column/c1108.html 
     最重要的,别忘记了还有:     http://www.google.com/      http://www.baidu.com/ 

1.2安装前的准备 

Windows系统要求:32Windows操作系统,例如9xMeNT2000XPWindows Server 2003。基于Windows NT的操作系统(NT2000,XP2003)MySQL服务器做为服务来运行

如果你计划通过ODBC连接MySQL服务器,你还需要一个连接器/ODBC驱动程序。请参见手册,“MySQL Connector/ODBC”。MyODBC是开放源码软件。你可以在网站http://dev.mysql.com/downloads/connector/odbc/上找到它的最新版本。请注意,2.50.x版采用的是LGPL许可,而3.51.x版采用的是GPL许可。

如果表需要占用的空间大于4GB,则在NTFS或更新的文件系统上安装MySQL。当创建表时不要忘记使用MAX_ROWS和 AVG_ROW_LENGTH。请参见13.1.5节,“CREATE TABLE语法”。
    由于是MySQL基础入门,因此只需要一个MySQL的学习平台即可。所以这里只介绍Windows平台下的安装。

本篇以Windows XP(带SP2)为安装平台,在Windows 2000Windows 2003下的安装与这一样。 
    所需软件:
    Windows XP 操作系统 
    MySQL 4.1.0 及其以上版本(包括最新的5.0.20和将来的5.1版本) 
    首先安装好Windows XP操作系统,然后从官方网站 http://dev.mysql.com/downloads/ 直接下载MySQL数据库管理软件产品,或者从比较快的镜像网站下载。我是从国内的镜像网站http://mysql.mirror.vmmatrix.net/downloads/mysql/5.0.html 

下载的 MySQL 5.0。其他国家或地区的镜像网站: 

http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-essential-5.0.20a-win32.msi/from/pick 。大家如果发现还有比较快的镜像,也告知我一声。

1.3 安装MySQL 

 我看见许多刚接触MySQL的朋友都在问如何安装MySQL、为什么安装不成功,我就繁琐、详细地说明如何正确安装MySQLMySQL有测试版和稳定版,现在最新的测试版是5.1.9-beta,最新的稳定版是5.0.20a,建议初学者安装稳定版。下载后是个ZIP的压缩包:MySQL-5.0.20a-win32.zip(注意找在Windows下使用的安装包),用WinZipWinRAR解压缩后运行setup.exe进行安装,如图2。 


2

    安装过程与其它Windows安装程序一样,首先出现的是安装向导欢迎界面,见图3

3


    直接点击“Next”,继续,选择安装类型,见图4


4

      这里有3个类型:Typical(典型)、Complete(完全)、Custom(自定义)。

选择“自定义”(Custom)安装,然后点“Next”下一步,出现自定义安装界面,见图5

5

       默认情况下MySQL将会被安装到C:\Program Files\MySQL\MySQL Server 5.0\文件夹里面。自己可以改路径,点“Change”更改路径。建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空,按“OK”继续。我更改到了E:\usr\MySQL5020a\目录下,见图6

“Developer Components(开发者部分)上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即此部分,及下属子部分内容,全部安装在本地硬盘上,在上面的“MySQL Servermysql服务器)“Client Programsmysql客户端程序)“Documentation(文档)也如此操作,以保证安装所有文件,点选“Change...”,手动指定安装目录:

6

    点“OK”后回到自定义安装界面,可看见路径已经改为你设置的路径了,见图7

7

    点“Next”,准备开始安装,见图8


8

    点“Install”开始安装,见图9


9

     直到出现下面的界面(大概5.1之后的版本就没有下面的界面了),完成后出现创建MySQL.com帐号的界面,这个帐号可以用于MySQL官方网站(http://www.mysql.com)登录。如果是首次使用MySQL,选“Create a new free MySQL.com accout”,见图10。如果已经拥有一个MySQL.COM的帐号,选“Login to MySQL.com”,填入已拥有的帐号。如果不想注册,选“Skip Sign-Up”跳过注册完成安装,见图14


10

    点“Next”,输入你的Email地址和自己设定的用于登录MySQL.com的密码,见图11

11

    填完后点“Next”进入第二步填写基本资料,见图12

12

        在这里填写姓名等相关信息,填完点“Next”,进入第三步填写联系方式,见图13

13

    填完电话号码、公司名称等信息后,点“Next”,然后出现预览你刚才填的信息的界面,再点“Next”出现安装完成界面,见图14


14

注意,图14里面有个配置向导的选项(Configure the MySQL Server now),建议勾选它然后立即开始配置你的MySQL。许多人说安装完MySQL后无法启动,原因就在于没有配置MySQL。点击“Finish”完成安装,并开始配置MySQL,见图15

15 配置
    点“Next”,进入配置类型选择页面。选“Detailed configuration”(详细配置),选择配置方式,“Detailed Configuration(手动精确配置)“Standard Configuration(标准配置),我们选择“Detailed Configuration”,方便熟悉配置过程: 见图16

16详细配置

    点“Next”,进入服务类型选择页面。选“Developer Machine”(开发者机器),这样占用系统的资源不会很多,见图17。选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)“Server Machine(服务器类型,mysql占用较多资源)“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)。当给客户装Mysql是注意应选为后两个之一。

17 Developer Machine”(开发者机器

点“Next”后,进入数据库用法选择页面。选择“Multifunctional Database”(多功能数据库),见图18

选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)“Transactional Database Only(服务器类型,专注于事务处理,一般)“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional,按“Next”继续:

18多功能数据库

    点“Next”,进入选择InnoDB数据存放位置页面,见图19

19

   对InnoDB Tablespace进行配置,就是为InnoDB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述,我这里没有修改,使用用默认位置。不用更改设置,直接放在Installation Path安装目录里即可,然后点“Next”,选择MySQL的同时连接数,见图20


20 同时连接数

     选择您的网站的一般mysql访问量,同时连接的数目,“Decision Support(DSS)/OLAP20个左右)“Online Transaction Processing(OLTP)500个左右)“Manual Setting(手动设置,自己输一个数)选择“Manual Setting”,设置为100(根据自己需要,酌情设置),点“Next”,配置MySQLTCP/IP通讯环境中的端口,见图21


21

      是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,我这里启用,把前面的勾打上,Port Number3306,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误,如果您还是个新手,我建议您取消标准模式以减少麻烦,但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性,按“Next”继续选择默认的3306端口即可。点“Next”,选择MySQL中的字符设置,见图22

22

       这个比较重要,就是对mysql默认数据库语言编码进行设置,第一个是西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候,在执行数据操作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字,按“Next”继续:注意,这里的选择将会影响你是否能在MySQL中使用中文。我们选择gb2312字符集以便支持简体中文,繁体中文选big5,同时支持简/繁体选gbk,同时支持多国语言选utf8。点“Next”,设置Windows服务选项,见图23

23 Install As Windows Service”一定要勾选

选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysqlbin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。注意,这里的选择很关键。“Install As Windows Service”一定要勾选,这是将MySQL作为Windows的服务运行。“Service Name”就用默认的“MySQL”或者你喜欢的服务名(推荐用默认的“MySQL”)。

下面的“Launch the MySQL Server automatically”一定要勾选,这样Windows启动时,MySQL就会自动启动服务,要不然就要手工启动MySQL。许多人说安装MySQL后无法启动、无法连接、出现10061错误,原因就在这里。点“Next”,设置根帐号root的登录密码,见图24


24

   这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),“New root password”如果要修改,就在此填入新密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将“Modify Security Settings”前面的勾去掉,安装配置完成后另行修改密码),“Confirm(再输一遍)”内再填一次,防止输错。 

Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕。

Modify Security Settings”是设置根帐号的密码,输入你设定的密码即可。“Create An Anonymous Account”是创建一个匿名帐号,这样会导致未经授权的用户非法访问你的数据库,有安全隐患,建议不要勾选。点“Next”,MySQL配置向导将依据你上面的所有设定配置MySQL,以便MySQL的运行符合你的需要,见图25

25

    点“Execute”开始配置,当出现“Service started successfully”时,说明你的配置完成,MySQL服务启动成功,见图26

26

    点“Finish”完成,整个MySQL的配置完成,剩下的就是用MySQL客户端连接MySQL服务器,然后使用了。

在安装和配置MySQL过程中可能会遇到许多问题。

下面是一些经常会遇到的问题,以及相应的解决措施。
    1) 配置无法继续,出现“Cannot create Windows service for MySQL. Error: 0”,见图27


27

原因:出现这种情况主要是以前安装过MySQL没有卸载干净,致使Windows服务名称重复造成的。 
    解决方法:指定一个不同的Windows服务名称。
     2) 配置时出现连接错误警告,见图28


28

     原因:出现这种情况有两个原因。一是防火墙阻止了MySQL的端口,二是安装路径在以前安装了的MySQL路径上。 
    解决方法:第一种情况,制定防火墙规则,让防火墙允许通行MySQL的连接端口,默认是TCP 3306端口。第二种情况,删除或者转移安装目录下的文件和data子文件夹。或者指定一个不同于以前安装MySQL的安装目录。 

    这里有一个比较常见的错误:

1、安装mysql出现write configuration file通不过,比如:后面的提示是configuration file template D:\学习\mysql\my-template.ini could not be processed and written to D:\学习\mysql\my.ini.error code-1

可能原因:安装路径带有中文。

解决办法:换到另外全部是英文和数字的目录安装应该就正常了。

2、不能“Start service

可能原因:一般出现在以前有安装mysql的服务器上。

解决办法:先保证以前安装的mysql服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将mysql安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的data文件夹删除,备份的data文件夹移回来,再重启mysql服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

第二章Mysql服务启动及编程

2.1启动

 以Windows服务方式启动MySQL

点击开始菜单à设置à控制面板à管理工具à服务,找到mysql服务,点击右键,可以启动或者停止mysql服务,同时可以设置mysql开机自启动。假如设置成手动启动,想用mysql的时候,记得启动一下服务。

说明:

假如点击mysql command line client,输入root口令,什么提示也没有,窗口自动关闭。可能的原因有2个:一个是可能mysql服务没启动,另一个是root口令输入不正确。

2.2登陆Mysql数据库

Mysql安装好后,点开始菜单---->程序---->MySQL---->MySql Server 5.0---->MySQL Command Line Client 出现下图:

此处提示输入root口令,输入刚才安装mysql时设置的root口令,密码是123456。然后出现下图。 

      我们可以先查看一下mysql中有什么数据库,在mysql>提示符下,输入SHOW DATABASES;出现下图。 

                                          图28

information_schema是数据库视图,mysql、test都是系统自带的数据库。

2.3 MySQL支持的数据类型

  在MySQL中创建表时要熟悉MySQL的数据类型,它与Oracal不同。

面向对象的应用程序接口(API

Int 整型 4个字节,但是可以指定长度,最多可指定11个字节

Char定长字符串

DOUBLE浮点型

VARChar(M) [BINARY]一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)M的范围是~ 255个字符。 VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。 VARCHARCHARACTER VARYING一个缩写。

Datetime一个日期和时间组合。支持的范围是’1000-01-01 00:00:00′’9999-12-31 23:59:59′MySQL’YYYY-MM-DD HH:MM:SS’格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

Longtext长字符串类型,一个BLOBTEXT列,最大长度为4294967295(2^32-1)个字符

2.5 MySQL语句结构

SQL 是 Structured Query Language(结构化查询语言)的英文缩写,MySQL使用SQL语句存储和检索信息。

MySQL 支持SQL语句:

数据定义语句(DDL):

用于改变数据库结构,包括创建、更改和删除数据库对象

用于操作表结构的DDL语句有:

CREATE DATABASE

DROP DATABASE

CREATE TABLE

ALTER TABLE

DROP TABLE

CREATE INDEX

DROP INDEX

数据操纵语句(DML

DML用于检索和修改数据

SELECT

 INSERT

 UPDATE

DELETE

事务控制语句(TCL

事务是最小的工作单元,作为一个整体同时成功或失败,称为事务控制

用于事务控制的语句有:

START TRANSACTION – 开始事务处理

COMMIT - 提交并结束事务处理

ROLLBACK - 撤销事务中已完成的工作

SAVEPOINT – 标记事务中可以回滚的点

数据控制语句(DCL

2.4 常用命令总结

注意所有的文本命令必须以斜线开始,且以分号结束,不区分大小写

重复上一条命令的快捷键同matlab向上键,在执行前可进行修改

退出命令

 成功地连接后,可以在mysql>提示下输入QUITexit; (\q)随时退出:mysql> quit

显示所有数据库命令

使用SHOW语句找出服务器上当前存在什么数据库:mysql> SHOW DATABASES;

  +----------+

| Database |

+----------+

| Information_schema|

| mysql    |

| test     |

+----------+

3访问某数据库

如果test数据库存在,尝试访问它: mysql> USE test

Database changed

注意,USE,类似QUIT,不需要一个分号USE语句在使用上也有另外一个特殊的地方:它必须在一个单行上给出。

创建自己的数据库create database name; 

创建数据库:create database mydata;  database不是databases

在数据库中进行操作 use  chenyydatabasename),之后所用的所有操作都是工作在此数据库之下

6创建表格 create table dept。

一定要与use e name连用,以创建者此数据库之下。

mysql> create table dept         %创建部门表,没有分号

    -> (                       %输入的是(,但是显示的是<

    -> deptno int primary key,     % department mumber 数据类型为int,是主键

    -> dname varchar(14),        % department name

    -> loc varchar(13)            %location 所在地

    -> );

Query OK, 0 rows affected (0.31 sec)  %表已经创建好,问题解决Query(问题)

创建数据表时开始和结尾要加括号,这里用的是小括号"()",不是"<>",虽然mysql命令行显示是<>

   

注:主键

MYSQL 的 primary key unique key 的区别 

Primary KeyUnique Key

Primary key Unique Key都是唯一性约束。但二者有很大的区别:

1Primary key1个或多个列必须为NOT NULL,如果列为NULL,在增加Primary key时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。

2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY

创建表emp

 create table emp  %雇员表

   

create table emp

(

empno int primary key,

ename varchar(10),

job varchar(10),

mgr int,

hiredate datetime,

sal double,

comm double,

deptno int(3),        %int可指定长度1-11之间

foreign key(deptno) references dept(deptno)  %创建外键deptno引用主键dept的deptno字段

);引用其实就是相等

8创建create table salgrade

--工资级别表

create table salgrade

(

grade int(3) primary key,

losal int(3),

hisal int(3)

); 

不同数据库之间的不同主要有:数据类型、分页程序。

   用于管理MySQL的数据库和表的内容的软件为MySQL Administer

9查看所有数据库命令 show databases

10查看所有表命令 show tables

11 观察某个表的结构:desc dept; ( description department

12.1查询 查询表中所有数据 : select * from table_name; 

  查询指定字段的数据 : select 字段1 , 字段2 from table_name; 

  例 : select id,username from mytable where id=1 order by desc;多表查询语句------------参照第17

13 向表dept中插入数据命令 

insert into dept valuesdeptno,“dname,loc”);与上表中的结构对应。

 

--往部门表中查数据

insert into dept values(10,'Accounting','New York');

insert into dept values(20,'Research','Dallas');

insert into dept values(30,'Sales','Chicago');

insert into dept values(40,'Operations','Boston');

insert into dept values(50,'Admin','Washing');

Commit   制定好之后提交,托付交付

14 删除命令

141数据库删除 : Drop database db_name; 删除时可先判断是否存在,写成 : drop database if exits db_name 

14.2删表 : drop table table_name; 例 : drop table mytable;

14.3 删除整个表中的信息,不删除表 : delete from table_name;

删除表中指定条件的语句 : delete from table_name where 条件语句 条件语句如 列名=列内容,注意对字符串要加‘’。 

表 faults的内容如下:

  

不同数据库之间的不同主要有:自动递增字段。

17自动递增字段

mysql> Create table article    -> (id int primary key auto_increment,   %自动递增字段  title varchar(255));

Query OK, 0 rows affected (0.20 sec)

mysql> insert into article values(null,'a');   将id设为空,title=a插入到表中

Query OK, 1 row affected (0.25 sec)

mysql> select * from article;    可以看到id自动编号为1

+----+-------+

| id | title |

+----+-------+

|  1 | a     |

+----+-------+

1 row in set (0.00 sec)

mysql> insert into article values(null,'b'); 再将id设为空,title=b插入到表中

Query OK, 1 row affected (0.27 sec)

mysql> Select * from article;

+----+-------+

| id | title |

+----+-------+

|  1 | a     |

|  2 | b     |

+----+-------+

2 rows in set (0.00 sec)

或者insert into article titlevalues (‘c’);%只在title上插值

Select * from article;

18 取当前日期 select now();

19 将日期转换成任意的字符串,并设置字符串的格式

     Select date_format(now(),%y-%m-%d  %h:%i: %s );注意使用i表示分钟,不是m

%W 星期名字(Sunday……Saturday)

%w 一个星期中的天数(0=Sunday ……6=Saturday 

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

%d 月份中的天数数字(00……31)

%Y 数字, 4 

%y 数字, 2 

%a 缩写的星期名字(Sun……Sat)

%e 月份中的天数数字(0……31)

%m 数字(01……12)

%c 数字(1……12)

%b 缩写的月份名字(Jan……Dec)

%j 一年中的天数(001……366)

%H 小时(00……23)

%k 小时(0……23)

%h 小时(01……12)

%I 小时(01……12)

%l 小时(1……12)

%i 分钟数字(00……59)

%r 时间,12 小时(hh:mm:ss [AP]M)

%T 时间,24 小时(hh:mm:ss)

%S (00……59)

%s (00……59)

%p AMPM

%U 星期(0……52), 这里星期天是星期的第一天

%u 星期(0……52), 这里星期一是星期的第一天

%% 一个文字“%”

20插入任意日期

向表emp中插入日期,插之前先看看它的结构。

Desc emp

21向表emp中插值时,应该注意外键、参考、主键等。

程序中deptno int(3),  foreign key(deptno) references dept(deptno)

insert into dept valuesdeptno,‘dname,loc’);与上表中的结构对应。

 

dept的结构

--往部门表中查数据

insert into dept values(10,'Accounting','New York');

insert into dept values(20,'Research','Dallas');

insert into dept values(30,'Sales','Chicago');

insert into dept values(40,'Operations','Boston');

insert into dept values(50,'Admin','Washing');

Commit   制定好之后提交,托付交付

所以在填写empdeptno一项时应该引用deptdeptno

Insert into emp values1,‘chenyy’,‘market’,123,‘2010-09-01 11:11:11,8000,80,10);