一、安装

1) 找到适合自己系统的MySQL安装,双击打开

 

2) 点击Next进行下一步

3) 选择同意协议,点击Next

 

4) 选择Custom点击Next

 

5) 选择MySQL的安装目录,点击Next

 

6) 确认路径信息,选择Install

 

7) 进入读条状态,稍安勿躁

 

8) Next

 

9) Next

 

10) 选择Configure…点击Finish

 

11) 选择Next

 

12) 选择详细配置,点击Next

 

13) 选择开发者机器,点击Next

 

14) 选择多用途数据库,点击Next

 

15) 设置数据库实例路径,一般不使用默认,点击Next

 

16) 设置并发连接上线,点击Next

 

17) 一般不用改使用默认值即可,点击Next

 

18) 设置数据库编码为utf8(关键步骤)

 

19) 设置MySQL服务信息,点击Next

 

20) 设置超级管理员root的密码,我这里设置为root,点击Next

 

21) 点击Execute执行操作

 

22) 出现四个对勾,配置成功,点击Finish

 

23) 打开命令行窗口CMD

 

24) 输入mysql –uroot –proot出现如下内容

 

25) 输入 show databases出现数据库信息,MySQL安装成功

 

26) 输入quit退出数据库

 

 

二、卸载

1) 打开控制面板,找到卸载程序

 

2) 找到MySQL Server 5.1双击选择是程序自动卸载

 

3) 找到MySQL安装目录删除MySQL文件

 

4) 打开注册表

 

5) 删除以下内容:

a) HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL

6) 删除C:\ProgramDataMySQL文件夹

 

三、基本操作

  • MySQL的重要文件
    • MySQL安装目录\bin\ mysqld.exe
      • MySQL服务器程序,必须启动数据库才能正常使用
    • MySQL安装目录\bin\ mysql.exe
      • MySQL的客户端程序,用来操作MySQL数据库
    • MySQL安装目录\ my.ini
      • MySQL数据库的配置文件
  • 登录:mysql -u用户名 -p密码
  • 退出:quitexit
  • 基本SQL语法
    • SQL语句可以写成单行或者多行,以分号结尾
    • MySQL中不区分大小写,但是建议关键字大小
  • SQL语句
    • 数据定义语言DDL(Data Definition Language)
    • 数据操作语言DML(data manipulation language)
    • 数据控制语言DCL(Data Control Language)
    • 数据查询语言DQL(Data QueryLanguage)
  • 常见语句:
    • 登录mysql –u用户名 –p密码
    • 退出:quitexit
    • 查看数据库的编码信息:show variables like 'char%';
    • 显示所有数据库show databases;
    • 访问数据库use 数据库;
    • 查看所有的表show tables;
    • 创建数据库CREATE DATABASE [IF NOT EXISTS] 数据库 [CHARSET=utf8]
    • 删除数据库DROP DATABASE [IF EXISTS] 数据库
  • 数据库:增删数据库
             CREATE DATABASE 数据库名;
             DROP DATABASE  数据库名;
  • 创建
    • 语法

CREATE TABLE [IF NOT EXISTS] 表名

(

列名 类型,

列名 类型,

其他选项

)

  •   查看表结构DESC 表名;
  •   删除DROP TABLE [IF EXISTS]
  •  命名表RENAME TABLE 旧名 TO ;
  •  插入数据

INSERT INTO 表名 (列名1,列名2,列名3…) VALUES(1,2,3);

INSERT INTO 表名 VALUES(1,2,3);

  •  修改数据

UPDATE 表名 SET 列名1=1,列名2=2… WHERE …

  •  删除数据

DELETE FROM 表名 WHERE…

  •  清空表中的数据

 TRUNCATE [TABLE] 表名;

  •  查询

 SELECT * FROM 表名 WHERE…;

 SELECT 列名1 别名1 , 列名2 别名2 … FROM 表名 WHERE…

SELECT * FROM 表名 WHERE … LIMIT 索引 , 长度

  •  查询表创创建

show create table 表名---->复制----->粘贴

 

 

四、常见数据类型

字符串

数据类型

说明

CHAR

1~255个字符的定长串,它的长度必须在创建时指定,否则MySQL假定为CHAR1

VARCHAR

可变长度,最多不超过255字节,如在创建时指定VARCHARn),则可存储0~n个字符的变长串

TINYTEXT

TEXT,最大长度为255字节

MEDUIMTEXT

TEXT,最大长度为16K

TEXT

最大长度为64K的变长文本

LONGTEXT

Text,最大长度为4GB(纯文本,一般不会到4G

数值

数据类型

说明

int[(m)]

有符号值:-2147683648 2147683647- 2^31 2^31- 1

无符号值:042949672950 2^32 1

double[(m, d)]

最小非零值:±2.2250738585072014e 308

decimal (m, d)

可变;其值的范围依赖于m d

时间

数据类型

说明

DATE

1000-01-01——9999-12-31

TIME

-838:59:59——838:59:59

DATETIME

1000-01-01 00:00:00——9999-12-31 23:59:59

TIMESTAMP

19700101080001——20380119111407

进制

数据类型

说明

TITYBLOB

最大长度为255字节

BLOB

最大长度为64KB

MEDIUMBLOB

最大长度为16MB

LONGBLOB

最大长度为4GB

五、约束、多表连接

     1、约束

 主键[primary key ]:可以唯一的表示一行数据,可以快捷的检索到一条数据!
              唯一
              非空
              可以被引用
    
   自增:auto_increment:自增仅仅适用于数值类型的值!
   
   非空:not null :表示当前字段值不能为null
 
   唯一:unique:表示当前字段值必须是唯一的
   
   注意:约束必须放在列名类型后面,至于多个约束的顺序无所谓!
   外键:
      外键关联指的是将一个表中的列和另一个表的主键进行关联

2、约束案例

1)一对一

 经典案例:夫妻

CREATE TABLE husband(
              id INT PRIMARY KEY AUTO_INCREMENT,
              `name` VARCHAR(50) NOT NULL
            )

            SELECT *  FROM husband;


            INSERT INTO husband(id,`name`) VALUES(1,"张三");
            INSERT INTO husband(id,`name`) VALUES(2,"李四");

            CREATE TABLE wife(
              id INT PRIMARY KEY AUTO_INCREMENT,
              `name` VARCHAR(50) NOT NULL,
              FOREIGN KEY(id) REFERENCES husband(id)
            )

            SELECT *  FROM wife;

            INSERT INTO wife(id,`name`) VALUES(NULL,"小红")
View Code

2)一对多

通常是在多的一端关联一的主键!通常将外键建在多的一端!
        经典案例:部门表与员工表 dept& emp

CREATE TABLE dept(
          id INT PRIMARY KEY AUTO_INCREMENT,
          dept_name VARCHAR(50) NOT NULL UNIQUE
        )

        SELECT * FROM dept;

        INSERT INTO dept(id,dept_name) VALUES(1,'开发部门');
        INSERT INTO dept(id,dept_name) VALUES(2,'产品部门');
        INSERT INTO dept(id,dept_name) VALUES(3,'测试部门');

        CREATE TABLE emp(
          id INT PRIMARY KEY AUTO_INCREMENT,
          emp_name VARCHAR(50) NOT NULL,
          dept_id INT,
          FOREIGN KEY(dept_id) REFERENCES dept(id)
        )

        SELECT * FROM emp;
View Code

3)多对多

经典案例:教师 学生

  CREATE TABLE teacher(
             id INT PRIMARY KEY AUTO_INCREMENT,
             `name` VARCHAR(50) NOT NULL
            )

            SELECT *  FROM teacher;

            INSERT INTO teacher(id,NAME) VALUES(NULL,"张老师");
            INSERT INTO teacher(id,NAME) VALUES(NULL,"李老师");
            INSERT INTO teacher(id,NAME) VALUES(NULL,"朱老师");

            CREATE TABLE student(
             id INT PRIMARY KEY AUTO_INCREMENT,
             `name` VARCHAR(50) NOT NULL
            )

            SELECT *  FROM student;

            INSERT INTO student(id,`name`) VALUES(NULL,'谭江');
            INSERT INTO student(id,`name`) VALUES(NULL,'张蕊');
            INSERT INTO student(id,`name`) VALUES(NULL,'钥匙');

            CREATE TABLE tea_stu(
              tea_id INT,
              stu_id INT,
              FOREIGN KEY(tea_id) REFERENCES teacher(id),
              FOREIGN KEY(stu_id) REFERENCES student(id)
            )

            SELECT *  FROM tea_stu;
           
View Code

3、表连接

 横向连接:

   

 select 列名1,列名2...
     from 表1
     join 表2
     on 连接条件
     where 过滤条件
     group by 分组条件1,分组条件2
     having 聚合函数过滤
     order by 排序列1,排序列2
     limit 分页
View Code
SELECT emp.id AS emp_id,emp.emp_name,dept.`id` did, dept_name
        FROM emp
        JOIN dept
        ON emp.`dept_id`=dept.`id`
        WHERE 
        GROUP BY 
        HAVING
        ORDER BY
        LIMIT
View Code

  纵向连接:

SELECT dept.`id` ,dept.`dept_name`
    FROM dept
    UNION
    SELECT emp.`id`,emp.`emp_name`
    FROM emp
View Code

 all UNION是全部,

 UNION 去重