1、初识MySQL
JavaEE:企业级Java开发 Web
前端(页面:用于展示数据)
后台(连接点:连接数据库JDBC,链接前端(控制试图的跳转,给起前端传递数据等))
数据库(DB)(存数据,txt,Excel,Word等)
代码+数据库 ==> 操作系统+数据结构与算法 ==> 体系结构、编译原理、实践经验等
1.1、数据库流行?
1 、岗位需求
2、大数据时代,每天产生数据量足够大,如何有效处理大数据
3、被迫需求:产生的数据如何高效存放
4、数据库是各个软件体系中最核心的存在:即如何获取数据、操作数据、存放数据、使用数据等
1.2、数据库简介
数据仓库,是一个软件,安装在操作系统之上。SQL,可以存储大量数据
作用:存储数据、管理数据
1.3、数据库分类
关系型数据库:SQL
MySQL,Oracle,Sql Server,DB2,SQLlite
通过表跟表之间,行和列之间的关系进行数据存储。学生信息表,课程表等
非关系型数据库: NoSQL (not noly)
Redis,MongDB
对象存储,通过对象的属性来决定数据
DBMS(数据库管理系统)
数据库的管理软件,科学有效的管理、维护和获取数据
MySQL,是当下最流行的关系型数据库管理系统
1.4、MySQL简介
MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
体积小、速度快,总体拥有成本低。必会的一个SQL
大中小型网站均有在用。集群扩大
1.5、安装MySQL
1、官网下载zip安装包并解压到指定目录
2、配置环境变量:我的电脑->属性->高级->环境变量->Path
选择Path后,在最后添加:MySQL安装文件(zip解压文件)下的bin目录
即将此目录D:\Environment\mysql-8.0.25-winx64\bin添加到环境变量中
3、在mysql-8.0.25-winx64目录下新建并编辑my.ini配置文件,编辑内容如下:
[mysqld]basedir=D:\Environment\mysql-8.0.25-winx64\ #此路径为MySQL安装文件路径datadir=D:\Environment\mysql-8.0.25-winx64\data\ # 此目录在后面配置时会自动生成port=3306skip-grant-tables #这里是初始安装时跳过密码检查,用户名默认root
4、管理员模式下启动CMD,并将路径切换到MySQL下的bin目录,然后输入mysql-install
安装mysql
cd /d D:\Environment\mysql-8.0.25-winx64\bin
5、接着输入mysql --initialize-insecure --user=mysql
初始化数据文件
6、使用命令mysql -u root -p
启动mysql,注意-p后没有空格。进入mysql后直接回车即可(my.ini文件中设置了跳过密码检查)
7、进入mysql界面后更改root密码
注意:MySQL8.0版本及以上需要使用命令设置:
alter user 'root'@'localhost' identified by '123456';
SQL语句后分号必不可少MySQL8.0版本以下:
update mysql.user set authentication_string=password('123456') where user='root'and Host = 'localhost';
8、刷新权限:flush privileges;
9、删除my.ini配置文件中跳过检查语句skip-grant-tables
10、重启MySQL并测试(先停止再重启)
net stop mysql
net start mysql
重启后使用mysql -u root -p123456
登录,登录成功如下:
注意:必须在管理员权限下的CMD执行以上步骤
如果电脑上以前装过MySQL,必须要把环境清理干净再重装
1.6、安装SQLyog
1、下载安装
2、连接本地MySQL数据库
3、创建school数据库
每一个sqlyog的执行操作,对应着SQL语句,在历史记录中查看
4、创建一个表
字段:id(主键),name,age
5、添加表记录
1.7、连接数据库
命令行连接
mysql -u root -p123456 --连接数据库
alter user 'root'@'localhost' identified by '123456'; -- 8.0以上版本修改密码
flush privileges; -- 刷新权限
-- 所有SQL语句使用 ; 结尾
show databases; -- 查看所有数据库
use school; -- 切换数据库 use 数据库名
show tables; -- 查看数据库中所有的表
describe student; -- 显示数据库中student表的信息
create database product; -- 创建一个product数据库
exit; -- 退出连接
-- SQL中单行注释
/* SQL多行注释
a
b
c
*/复制
数据库 xxx 语言
DDL 定义 定义和管理数据对象,如数据库 数据表等 CREATE, DROP, ALTER
DML 操作 操作数据库中对象所包含的数据 INSERT, UPDATE, DELETE
DQL 查询 查询数据库数据 SELECT
DCL 控制 管理数据库语言,包括管理权限修改即数据更改 GRANT, commit, rollback
2、操作数据库
操作数据库 -> 操作数据库中的表 -> 操作表中数据
2.1、操作
1、创建数据库
CREATE DATABASE IF NOT EXISTS product复制
2、删除数据库
DROP DATABASE IF EXISTS product复制
3、使用数据库
USE `school` -- 如果表名或字段名是一个特殊字符, 该字符需要写为 `xxx`复制
4、查看数据库
SHOW DATABASES复制
对照sqlyog历史记录学习。掌握关键字
2.2、数据库的列类型
数值
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int 标准整数 4个字节(常用)
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节
decimal 字符串形式浮点数 金融计算一般使用decimal,需要精度
字符串
char 固定大小字符串 0~255
varchar 可变长字符串 0~65535
tinytext 微型文本 2^8-1
text 文本串 2^16-1 保存大文本
时间日期
java.util.Date
date YYYY-MM-DD 日期格式
time HH: mm: ss 时间格式
datetime YYYY-MM-DD HH: mm: ss 最常用的时间格式
timestamp 时间戳 1970.1.1 到现在时间的毫秒数
year 年份
NULL值
没有值,未知
不要使用NULL进行运算,结果为NULL
2.3、数据库的字段属性(重点)
UnSigned
无符号的,声明该数据列不允许为负数
ZEROFILL
0填充的,不足位数的用0来填充。如int(3),1为001
Auto_InCrement
自动递增,每添加一条数据,默认自动在上一个记录上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
NULL和NOT NULL
默认为NULL,表示该列没有插入数值
如果设置为NOT NULL,则必须添加该值
DEFAULT
默认的,用于设置默认值,若无指定该列值,则为默认值
/* 工程中每一个表都必须存在以下五个字段
id主键
`version`乐观锁
is_delete伪删除
gmt_create创建时间
gmt_update修改时间
*/复制
2.4、创建数据库表(重点)
创建表
-- 表的 名称 和 字段 尽量使用 `` 阔起来
-- AUTO_INCREMENT 自增
-- 字符串使用 单引号 括起来
-- 所有语句后面使用 ,(英文逗号) 最有一个语句不用
CREATE TABLE `student` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '出生日期',
`address` varchar(100) DEFAULT NULL COMMENT '地址',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8复制
格式
create TABLE IF NOT EXISTS `表名` (
'字段名' 列类型 属性 索引 注释,
'字段名' 列类型 属性 索引 注释,
...
'字段名' 列类型 属性 索引 注释,
)表类型 字符集设置 注释复制
常用命令
SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE student -- 查看创建表的语句
DESC student -- 显示表的结构复制
2.5、数据表类型
-- 数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/复制
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为MYISAM2倍 |
常规使用:
MYISAM 节约空间,速度较快
INNODB 安全性高,事务处理,多表多用户操作
物理空间
所有数据库文件都存储在/mysql/data目录下,一个文件夹对应一个数据库
本质是文件在计算机上的存储
设置数据库表的字符集编码
CHARSET=utf8复制
MySQL中默认编码是Latin1,不支持中文。建表时需要更换
也可以在配置文件my.ini中配置如下
character-set-server=utf8复制
2.6、修改删除表
-- 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE student1 RENAME AS student
-- 增加表的字段:ALTER TABLE 表名 ADD 字段 字段列属性
ALTER TABLE student ADD age INT(3)
-- 修改表的字段(重命名、修改约束)
-- ALTER TABLE 表名 MODIFY 字段 列属性
ALTER TABLE student MODIFY age VARCHAR(3) -- 修改约束
-- ALTER TABLE 表名 CHANGE 字段旧名 字段新名 INT(3)
ALTER TABLE student CHANGE age age1 INT(3) -- 重命名
-- 删除表的字段:ALTER TABLE 表名 DROP 字段
ALTER TABLE student DROP age1
-- 删除表(先判断是否存在)
DROP TABLE IF EXISTS student复制
所有创建和删除操作尽量先判断,避免报错
注意:
尽量使用 `` 符号将(库名、表名、字段名、索引、别名)括起来,以避免与关键字重名
单行注释
-- 注释内容
,多行注释/*注释内容*/
大小写不敏感
所有符号全部使用英文