1. mysql简介
- MySQL是一个关系型数据库管理系统
- 由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品
- Mysql是一个开源免费的关系型数据库管理系统
- mysql分为社区版和企业版
2. 关系型数据库
建立在关系模型基础上的数据库,借助数学中的集合代数等一些数学概念和方法,处理关系型数据库中的数据
3. Mysql的安装
- windows的安装
- Linux的安装
4. Mysql默认的字符集的配置(了解)
- ASCII码
- GB2312 中文简体编码
- BIG5 中文繁体编码
- Unicode 万国码
- UTF-8 英文1byte 中文 3byte; 对unicode的实现
以windows中的mysql的配置为例:
-
找到mysql的存放配置文件的地方
C:\ProgramData\MySQL\MySQL Server 5.6/my.ini
-
修改
[mysqld] character-set-server=utf8
但是: 我们完全不建议这样修改,因为我们每个项目系统使用的数据库编码完全有可能不一样;
5. 启动和停止mysql的服务
net start mysql
net stop mysql
注意: 如果命令显式不可用代表操作系统的版本不支持(家庭版)
6. mysql的登录命令
mysql -u用户名 -p密码 -hlocalhost -P3306
-h: 默认为localhost
-P: 默认3306
7. mysql常用的系统命令
#查看mysql的版本
SELECT VERSION();
#查看mysql当前登录的用户
select user();
#查看mysql的当前日期
select now();
#查看当前所在的数据库
select database();
#退出数据库
exit
8. mysql的语句规范
- 关键字和函数名建议大写
- 数据库的名称,表的名称,字段的名称建议小写
- 数据库 表名 字段名建议加上``
- sql语句的定界符默认以 ; 结尾
9. 数据库的操作SQL类型(了解)
-
DDL(数据定义语言 Data Define Language)
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
-
DML(数据操纵语言 Data Manipulation Language)
1) 插入:INSERT 2) 更新:UPDATE 3) 删除:DELETE
-
DQL(数据查询语言 Data Query Language)
DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: SELECT <字段名表> FROM <表或视图名> WHERE <查询条件>
10. mysql中的概念
- 数据库管理系统: 管理数据库的系统
- 数据库: 数组库是用来存放和组织表的
- 表:是存储数据的容器
- 记录: 一行的数据
- 属性: 一列属性值
11. 数据库的操作(必会)
- 创建数据库
CREATE DATABASE `db2`; #最简单的方式创建一个数据库
注意: 数据库的名称可以加 `` ,也可以不加,默认mysql会给你自动加上
CREATE DATABASE db2; #可以省略``
- 带判断的创建数据库
CREATE DATABASE IF NOT EXISTS `db1`; #如果不存在db1这个数据库则创建db1数据库,如果存在则不会创建但是也不会报错
- 创建数据库并且指定字符集
#mysql默认的字符集是latin1,latin1不支持中文
CREATE DATABASE IF NOT EXISTS `db3` DEFAULT CHARSET=UTF8;
- 删除数据库
#删除数据库,如果数据库不存在则会报错
DROP DATABASE `db1`;
#带判断的删除数据库
DROP DATABASE IF EXISTS `db1`;
- 查询数据库
#查询数据库的创建信息
SHOW CREATE DATABASE `db3`;
#查询当前RDBMS中有哪些数据库
SHOW DATABASES;
#查询当前所在的数据库
SELECT DATABASE();
- 进入数据库
USE 'db1';
12. mysql中的数据类型
12.1 整形
类型 | 范围 | 备注 |
---|---|---|
tinyint(m) | 1个字节 范围(-128~127) | 与java中的byte类型对应 |
smallint(m) | 2个字节 范围(-32768~32767) | 与java中的short对应 |
mediumint(m) | 3个字节 范围(-8388608~8388607) | |
int(m) | 4个字节 范围(-2147483648~2147483647) | 与java中的int对应 |
bigint(m) | 8个字节 范围(±9.22*10的18次方) | 与java中的long对应 |
12.2 浮点型
类型 | 范围 | 备注 |
---|---|---|
float(m,d) | 单精度浮点型 8位精度(4字节) m总个数,d小数位 | 与java的float对应 |
double(m,d) | 双精度浮点型 16位精度(8字节) m总个数,d小数位 | 与java的double对应 |
12.3 定点
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值
类型 | 范围 | 备注 |
---|---|---|
decimal(m,d) | 参数m<65 是总个数,d<30且 d<m 是小数位 | 表示金额等精确值 |
12.4 字符串
类型 | 范围 | 备注 |
---|---|---|
char(n) | 固定长度,最多255个字符 | 一般定长字符串使用的类型(一定要指定最大长度) |
varchar(n) | 最多65535个字符 | 一般存放变长字符串(一定要指定最大长度) |
tinytext | 可变长度,最多255个字符 | |
text | 可变长度,最多65535个字符 | |
mediumtext | 可变长度,最多2的24次方-1个字符 | |
longtext | 可变长度,最多2的32次方-1个字符 |
12.5 Blob二进制类型
-
BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob是以二进制方式存储,不分大小写。
-
BLOB存储的数据只能整体读出。
-
TEXT可以指定字符集,BLOB不用指定字符集。
12.6 日期时间类型
类型 | 备注 |
---|---|
date | 日期 ‘2008-12-2’ |
time | 时间 ‘12:25:36’ |
datetime | 日期时间 ‘2008-12-2 22:06:44’ |
timestamp | 自动存储记录修改时间 |
13. mysql中数据类型属性(约束)
MySQL关键字 | 含义 | 备注 |
---|---|---|
NULL | 数据列可包含NULL值 | mysql默认不指定约束,字段也不添加值,默认为NULL |
NOT NULL | 数据列不允许包含NULL值 | 非空约束 |
DEFAULT | 默认值 | 默认值约束 |
PRIMARY KEY | 主键 | 主键约束 |
AUTO_INCREMENT | 自动递增,适用于整数类型 | 自增(一般和主键联合使用) |
UNSIGNED | 无符号 | 保留正数部分 |
14. 表的操作
数据表是数据库的最重要的组成部分之一,是其他对象的基础;
14.1 查看数据库中的所有的表
SHOW TABLES;
14.2 创建表
CREATE TABLE `user`(id int,name char(32),age tinyint);
#带条件的创建表
CREATE TABLE IF NOT EXISTS `user`(id int,name char(32),age tinyint);
#创建表时指定字符集,如果不指定默认使用的是数据库的字符集
CREATE TABLE IF NOT EXISTS `user`(id int,name char(32),age tinyint) DEFAULT CHARSET=UTF8;
#查看表结构
DESCRIBE `user`;
DESC `user`; #简写
15. Mysql管理工具
- Workbench(mysql官方推荐使用的) 免费的 跨平台的
- Sequel Pro 只在mac端有
- HeidiSQL(免费 开源)
- phpMyAdmin(web应用)
- mysqlfont(免费 轻量级) 只有windows端有,对高分辨率屏支持不好
- Navicat(商业 收费) 跨平台 功能最强大 UI最漂亮
- SQLyog(收费 不跨平台) 对高分辨率屏支持不好