数据库      MySql上路   
文章目录  [隐藏]

本文是mysql基础知识的整理。版本是5.5.27社区版压缩包

Mysql官网: http://www.mysql.com/

MySQL Enterprise Edition (commercial)
MySQL企业版(商业),据说个人用不需要收费的

MySQL Cluster CGE (commercial)
运营商级版本,用户可通过订购或者商业许可及服务来获取

MySQL Community Edition (GPL)
MySQL社区版,它是基于GPL协议的,只要你的应用系统遵循GPL协议而开源,或者你的应用是内部使用,没有通过分销应用软件而获利的话,或者你开发商业应用软件的研发阶段都可以完全免费的使用这个Community版本;
对应下载地址:http://dev.mysql.com/downloads/
    MySQL Community Server (GPL)
        MySQL社区服务器(GPL)。我们学习sql、写sql、运行sql用到的程序
        对应下载地址:http://dev.mysql.com/downloads/mysql/

    MySQL Cluster (GPL)
        MySQL集群(GPL)集群配置程序
    MySQL Fabric (GPL)
        数据分布式自动主从备份程序,看起来像是hadoop那种作用
    MySQL Utilities (GPL)
        一组用于维护和管理MySQL服务器的命令行工具,包括:管理工具(克隆、复制、比较、差异、导出、导入)、复制工具(安装、配置)、一般工具(磁盘使用情况、冗余索引、搜索元数据)等
    MySQL Workbench (GPL)
        可视化管理工具
    MySQL Proxy (GPL)
        一个数据库代理层产品,和MySQLServer一样,同样是一个基于GPL开源协议的开源产品。可用来监视、分析或者传输他们之间的通讯信息。他的灵活性允许你最大限度的使用它,目前具备的功能主要有连接路由,Query分析,Query过滤和修改,负载均衡,以及基本的HA机制等。
    MySQL Connectors
        其它语言/程序连接mysql需要用的到驱动程序
    MySQL on Windows (Installer & Tools)
        MySQL在Windows上的安装程序和工具
    MySQL Yum Repository
        Linux上安装mysql用到的Yum库
    MySQL APT Repository
        Linux上安装mysql用到的APT库
    MySQL SUSE Repository
        SUSE系统上安装或升级mysql用到的库

一。MySql的安装

1.解压到无空格目录:

2.配置MySql:

根据需要拷贝一个my-*.ini文件为my.ini文件:

3.my.ini配置参数:

1)[client] 条目下面的内容:

2)[mysqld] 条目下面的内容:

3)紧随其后可添加参数:

4)自定义字符集:

在[client]下面添加 default-character-set=utf8
在[mysqld]下面添加 character-set-server=utf8

4.进入bin目录初始化数据库:

cmd> cd D:\Programs\mysql\bin

cmd> mysqld --console

5.如果再次执行初始化:

ctrl+c结束。

6.注册系统服务:

1)注册服务:

  方式1:
  cmd> mysqld --install

  方式2:
  cmd> mysqld --install 服务名
  方式3:
  cmd> myslqd --install 服务名 --defaults-file="my.ini文件全路径"

2)删除服务:

  方式1:
  cmd> mysqld --remove 服务名
  方式2:
  cmd> mysqld --remove 服务名[--defaults-file="my.ini文件全路径"]
  方式3:
  cmd> sc delete "服务名"

3)启动服务:

  cmd> net start 服务名

4)停止服务:

  cmd> net stop 服务名

二. 基本命令:

1. 帮助:

  方式1:
  cmd> mysql -?
  方式2:
  cmd> mysql --help

2. 登陆服务器:

  方式1: 第一次无密码登陆:
  cmd> mysql -uroot

  方式2: 简写附加密码登陆:
  cmd> mysql -uroot -p1234
  方式3: 单独输入密码登陆:
  cmd> mysql -uroot -p
  enter password: 1234
  方式4: 全写附加密码登陆:
  cmd> mysql --user=root --password=1234

3. 查看服务器状态:

  mysql> status;

4. 查询已有库:

  mysql> show databases;

5. 选择数据库:

  mysql> use 库名;

6. 查询当前使用的数据库:

  mysql> select database();

7. 查询库中已有的表:

  mysql> show tables;

8. 查看表结构:

  mysql> desc 表名;

9. 查询列:

1)指定列:

  mysql> select 列名, 列名, 列名 from 表名;

2)全部列:

  mysql> select * from 表名;

10. 查询数据库编码:

  mysql> show variables like '%char%';

三. 管理用户:

1. 创建用户:

  默认无密码;默认无权限;'主机名'默认为%,表示所有的机器
  mysql> create user '用户名'@'主机' [identified by '密码']

2. 用户授权:

  mysql> grant 权限 on 数据库.表名 to '用户名'@'主机' [with grant option];
    with grant option :允许当前用户将自己的权限再次授予其他人
    授予最大权限:grant all on *.* to 'itcast'@'192.168.1.100' with grant option;

3. 修改密码:

1)更新root的空密码:

    mysql> use mysql;
    先用空密码登陆,然后:
    mysql> update user set password=password('新密码') where user='root';
    mysql> flush privileges;

2)已知密码:

    cmd> mysqladmin -u用户 -p旧密码 password 新密码

3)未知密码:

    mysql> set password for '用户名'@'主机' = password('密码');

4)丢失root密码:

    确保mysql系统服务没有启动。
    ①在单独的命令提示符中:
    cmd> mysqld --console --skip-grant-tables
    ②在单独的命令提示符中:
    cmd> mysql -uroot

四. SQL:

1. DDL:数据定义语言:

  创建数据库:mysql> create database 库名;
  删除数据库:mysql> drop database 库名;
  修改数据库:mysql> alter database character set 字符集; #修改数据库默认字符集
  创建表:mysql> create table 表名(列名 类型 [引用/约束], 列名 类型 [引用/约束]...);
  删除表:mysql> drop table 表名;
  修改表:mysql> alter table 表名 add column 列名 类型; #给表单添加新的列

2. DML:数据操作语言:

1)插入:

  ①mysql> insert into 表名 values('值', '值', '值' ...);
  ②mysql> insert into 表名('列1', '列2') values('值1', '值2');

2)修改:

  mysql> update 表名 set 列名=值, 列名=值...[where 条件] ;

3)删除:

  务必添加where条件,否则清空表单
  mysql> delete from 表名 where 条件;

3. DQL:数据查询语言:

1)查询全部:

  mysql> select * from 表名;

2)查询部分:

  ①按列查询:
  mysql> select 列名, 列名, 列名 from 表名;
  ②按列值运算结果查询:
  mysql> select 列名-60 from 表名;
  ③使用别名显示查询结果:
  mysql> select 列名 as '别名', 列名 '别名' from 表名;
  ④按照where设定的具体条件查询:
  mysql> select 列名 from 表名 where 条件;
  ⑤按照where 设定的模糊条件查询:
  mysql> select * from 表名 where 列名 like 'a%'; #首字母为a
  mysql> select * from 表名 where 列名 like '_a%'; #第二个字母为a
  mysql> select * from 表名 where 列名 like '%a%'; #包含字母a
  ⑥按照where 设定的逻辑条件查询:
  # 选择列值符合参数1 到参数2 区间的行
  mysql> select * from 表名 where 列名 between 参数1 and 参数2 ;
  # 查询符合条件1 同时符合条件2 的内容
  mysql> select * from 表名 where 条件1 and 条件2 ;
  # 查询符合条件1 或者如何条件2 的内容
  # 逻辑元素符and的优先级大于or
  mysql> select * from 表名 where 条件1 or 条件2 ;
  ⑦查询列值为null 的内容:
  mysql> select * from 表名 where 列名 is null;

4. 聚合函数:

1)计数:

  mysql> select count(*) from 表名; #统计总行数,推荐参数为1

2)平均值:

  mysql> select avg(列名) from 表名; #查询指定列的平均值

3)最值:

  mysql> select max(列名) from 表名; #查询指定列中值最大的条目
  mysql> select min(列名) from 表名; #查询指定列中值最小的条目

4)总和:

  mysql> select sum(列名) from 表名; #求指定列值的总和

5. 排序查询:

1)按指定列值升序查询表单内容

  mysql> select * from 表 order by 列 ASC;

2)按指定列值降序查询表单内容

  mysql> select * from 表 order by 列 DESC;

6. 分组查询:

1)按列值分组查询表单内容

  mysql> select * from 表名group by 列名;

2)添加条件查询

  mysql> select 列 from 表 group by 列 having 条件;
  #注意:使用group时不能使用where设置条件

五. 关于编码:

1. 修改表的默认编码

  mysql> alter table 表名 character set 编码;

2. 显示数据库当前编码

  mysql> show variables like '%char%';
    三个编码必须统一,并且应该与客户端的编码一致
    character_set_client | gbk
    character_set_connection | gbk
    character_set_results | gbk

3. 修改数据库的默认编码

  mysql> alter database 数据库 character set 编码;

4. 创建数据库时执行编码

  mysql> create database 数据库 character set 编码;

5. 如果使用命令窗口进行中文录入

  ①设置上面的3个编码
    mysql> set names 编码;
  ②单独设置
    mysql> set 系统变量名 = 编码;

六. 关于注释:

1. 单行注释:

  #这里是注释,以井号开头。
  -- 这里是注释,双减号之后必须跟一个空格。

2. 多行注释:

  /*
  这里是多行注释,如果使用单引号或双引号,必须配对出现
  */

七. 数据备份/还原:

  cmd> mysqldump -u用户名 -p密码 需备份的库名 > 路径/文件名.sql
  cmd> mysql -u用户名 -p密码 还原到的库名 < 路径/文件名.sql

八. 表单约束:

1. 主键约束:确定被约束字段的内容不能为空(null),并且数据唯一

1)关键字:primary key

2)编写的位置:

  ①创建表时,在列名之后进行描述
    列名 varchar(32) primary key
  ②创建表时,在约束区域指定列的主键约束。可以设置多个列为主键,联合主键
    列名1 varchar(32), 列名2 varchar(32)...., constraint primary key(列名1,列名2)
  ③创建表后,修改表结构,给表添加主键。可以设置多个列为主键,联合主键
    alter table 表名 add constraint primary key(列名);

2. 唯一约束:确定被约束的字段数据唯一,允许存在一个null值

1)关键字:unique

2)编写的位置

  ①创建表时,在列名之后进行描述
  ②创建表时,在约束区域进行,指定列为唯一约束
  ③创建表后,修改表结构,给表添加唯一约束

3. 非空约束:主键 = 唯一 + 非空

1)关键字: not null

2)编写位置:

  创建表时,在列名之后进行描述

4. 默认约束:默认值

1)关键字:default '默认值'

2)编写位置:

  创建表时,在列名之后进行描述

5. 累加约束:自动增长

1)关键字:auto_increment

2)编写位置:

  创建表时,在列名之后进行描述

3)注意:

  ①如果要使用自动增长列,需要将列的类型定义成整型
  ②如果要使用自动增长列,需要将列定义成主键

4)删除数据,但自动增长列的序号不重置(序列保留)

  delete from 表名;

5)删除数据,但自动增长列的序号重置(序列清零)

  truncate table 表名;

6. 外键约束:处理多表之间的关系

  关键字:foreign key

九. 多表关系:

1. 一对一:

  主表的主键与从表的主键进行主外键关联。
  主表的主键与从表的外键(必须唯一unique)进行主外键关联

2. 一对多:

  修改主表:设置主键
  修改从表:设置外键(数据类型须和主表主键相同,命名:主表_主键)

3. 多对多:

  创建外联表1:设置主键
  创建外联表2:设置主键
  创建中间表,将多对多关系分成两个1对多关系
  ①设置两个外键,添加中间表和外联表的关联

  ②添加联合主键,使两个外键成为中间表的主键
  alter table 中间表 add constraint primary key(fk1, fk2);
  ③添加数据:不能添加外联表中不存在的数据
  insert into 中间表(外键1, 外键2, 其它列) values (外联表1主键值, 外联表2主键值, 其它列值);
  ④删除数据:
    1》从外联表1中删除id值在数据表外联表2里有匹配的记录:
      delete 外联表1 from 外联表1,外联表2 where 外联表1.id=外联表2.id;
    或:
      delete from 外联表1 using 外联表1,外联表2 where 外联表1.id=外联表2.id;
    2》从外联表1删除在外联表2没有匹配的记录:
      delete 外联表1 from 外联表1 left join t2 on 外联表1.id=外联表2.id where 外联表2.id is null;
    或
      delete from 外联表1,using 外联表1 left join t2 on 外联表1.id=外联表2.id where 外联表2.id is null;
    3》从两个外联表删除相同记录:
      delete 外联表1,外联表2 from 外联表1 left join 外联表2 on 外联表1.id=外联表2.id where 外联表1.id=25;
      注意此处的 delete外联表1,外联表2 from 中的外联表1、外联表2不能是别名。
  ⑤查询数据:


十。多个数据库安装:

第一个数据库安装:

1.首先解压两份数据库文件到不同路径:

2.配置my.ini数据库参数:

打开mysql_a目录

1)复制一个my-*.ini文件,更名为my.ini :

2)打开修改相关参数:

(此为第一个数据库,可以略过此步骤):
  (1)[client] 条目下面的内容:

  (2)[mysqld] 条目下面的内容:

  (3)紧随其后添加:


  (4)自定义字符集:
  在[client]下面添加 default-character-set=utf8
  在[mysqld]下面添加 character-set-server=utf8

3.安装系统库:

  %MYSQL%/bin> mysqld --console

4.安装到windows系统服务:

  %MYSQL%/bin> mysqld --install mysqla --defaults-file="%MYSQL%/my.ini"
  说明:mysqla为自定义的服务名称,没有此项,默认为“MySql”,
    defaults-file="" 引号内包含的是my.ini文件的路径。

5.启动mysqla系统服务:

  %MYSQL%/bin> net start mysqla

6.连接到mysql数据库:

  %MYSQL%/bin> mysql -uroot -P3306
  说明:此时mysql默认用户名为root,密码为空
    -P3306 用大写字母P指明连接的端口3306

  此时不指明端口也可以连接到数据库,因为当前mysql命令执行的路径就在其创建的路径下:

第二个数据库安装:

1.打开mysql_b目录:

  1)复制一个my-*.ini文件,更名为my.ini 。

  2)打开修改相关参数:
  (1)[client] 条目下面的内容:

  (2)[mysqld] 条目下面的内容:

  (3)紧随其后添加:


  (4)自定义字符集:
  在[client]下面添加 default-character-set=utf8
  在[mysqld]下面添加 character-set-server=utf8

2.安装系统库:

  %MYSQL%/bin> mysqld --console

3.安装到windows系统服务:

  %MYSQL%/bin> mysqld --install mysqlb --defaults-file="%MYSQL%/my.ini"
  说明:mysqlb为自定义的服务名称,没有此项,默认为“MYSQL”,
    defaults-file="" 引号内包含的是my.ini文件的路径。

4.启动mysqlb系统服务:

  %MYSQL%/bin> net start mysqlb

5.连接到mysql数据库:

  %MYSQL%/bin> mysql -uroot -P3307
  说明:此时mysql默认用户名为root,密码为空
    -P3307 用大写字母P指明连接的端口3307

  1)此时,我们的目录在mysql_b下,退出mysqlb服务器,仍能在此目录直接连接mysqla:

  2)当我们切换到mysql_a路径,也可以直接连接mysqlb:

  3)如果想登录当前路径所在的数据库,也可以不指定端口:


十一。UI工具,SQLyog:

1.文件,新连接:

2.点击“新建”,输入自定义的名称:

3.按项填写,然后测试,“连接”:

4.在“询问”框输入命令,选择后按F9键或点击工具栏执行按钮执行命令:

5.SQLyog可以同时连接多个数据库:

6.切换标签执行操作:



承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设