一、安装
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:\ProgramData下的MySQL文件夹
三、基本操作
- MySQL的重要文件
- MySQL安装目录\bin\ mysqld.exe
- MySQL的服务器程序,它必须启动数据库才能正常使用
- MySQL安装目录\bin\ mysql.exe
- MySQL的客户端程序,用来操作MySQL数据库
- MySQL安装目录\ my.ini
- MySQL数据库的配置文件
- MySQL安装目录\bin\ mysqld.exe
- 登录:mysql -u用户名 -p密码
- 退出:quit或exit
- 基本SQL语法
- SQL语句可以写成单行或者多行,以分号结尾。
- MySQL中不区分大小写,但是建议关键字大小。
- SQL语句
- 数据定义语言DDL(Data Definition Language)
- 数据操作语言DML(data manipulation language)
- 数据控制语言DCL(Data Control Language)
- 数据查询语言DQL(Data QueryLanguage)
- 常见语句:
- 登录:mysql –u用户名 –p密码
- 退出:quit或exit
- 查看数据库的编码信息: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假定为CHAR(1) |
VARCHAR |
可变长度,最多不超过255字节,如在创建时指定VARCHAR(n),则可存储0~n个字符的变长串 |
TINYTEXT |
同TEXT,最大长度为255字节 |
MEDUIMTEXT |
同TEXT,最大长度为16K |
TEXT |
最大长度为64K的变长文本 |
LONGTEXT |
同Text,最大长度为4GB(纯文本,一般不会到4G) |
数值
数据类型 |
说明 |
int[(m)] |
有符号值:-2147683648 到2147683647(- 2^31 到2^31- 1) 无符号值:0到4294967295(0 到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,"小红")
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;
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;
3、表连接
横向连接:
select 列名1,列名2... from 表1 join 表2 on 连接条件 where 过滤条件 group by 分组条件1,分组条件2 having 聚合函数过滤 order by 排序列1,排序列2 limit 分页
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
纵向连接:
SELECT dept.`id` ,dept.`dept_name` FROM dept UNION SELECT emp.`id`,emp.`emp_name` FROM emp
all UNION是全部,
UNION 去重