1、初识MySQL
JavaEE:企业级Java开发 web
前端(页面:展示数据)
后台(连接点:连接数据库JDBC,链接前端(控制视图跳转,给前端传递数据))
数据库(存数据)
只会写代码,学好数据库,基本混饭吃!
操作系统,数据结构与算法!当一个不错的程序员
离散数学、数字电路、体系结构、编译原理 + 实战经验,高级程序员
1.1、为什么要学习数据库
- 岗位要求
- 现在的大数据时代
- 被迫需求:存数据
- 数据库是所有软件中最核心的存在 DBA
1.2、什么是数据库
数据库(DB,DataBase)
概念:数据仓库软件,安装在操作系统之上!SQL可以存储大量的数据,500万!
作用:存数据、管理数据
1.3、数据库分类
关系型数据库:(SQL)
- MySQL、Oracle、SqlSever、DB2、SQLite
- 通过表和表之间,行和列之间的关系进行数据的存储
非关系型数据库:(NoSQL) Not Only
- Redis、MongDB
- 非关系型数据库,对象存储,通过对象的自身的属性来决定
DBMS(数据库管理系统):
- 数据库的管理软件科学有效的管理数据。维护和获取数据
- MySQL,数据库管理系统!
1.4、MySQL简介
安装建议:
- 尽量不使用exe,会在注册表里面安装
- 尽可能使用压缩包安装
1.5、安装MySQL
-
官网下载解压安装地址
-
将解压文件放在自己的环境目录下
-
配置环境变量
创建my.ini文件
-
新建MySQL配置文件 my.ini文件
-
=======配置文件中全部属性================= [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=E:\MySQL5.7.13\mysql-5.7.13-winx64 # 设置mysql数据库的数据的存放目录 datadir=E:\MySQL5.7.13\mysql-5.7.13-winx64\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 安装好后, 免密码进入mysql skip-grant-tables
//基础目录,即必要属性 basedir=D:\Program Files\mysql-5.7\ //这个目录会自动生成 datadir=D:\Program Files\mysql-5.7\data\ //端口号 port=3306 //跳过密码验证 skip-grant-tables
-
管理员模式下运行CMD,运行所有的命令
-
安装MySQL的服务(进入bin目录下)
//安装mysql mysqld -install
-
初始化数据库文件启动MySQL,出现data目录
//安装成功后,初始化数据文件 mysqld --initialize-insecure --user=mysql
-
启动MySQL,进去修改密码(注意:若是显示没有这个命令则需要新打开一个CMD)
net start mysql
注意:进入管理界面密码界面这一步,有可能会报错,若是报错,则注释掉my.ini文件中的skip-grant-tables语句,p后不要带空格,直接跟密码;更新完密码要记得刷新权限
//进入mysql管理界面 mysql -u root -p ====以下修改密码方式需要注意,选择一种就行==== //修改密码 update mysql.user set password=password(’新密码’) where user=’root’; //mysql8设置密码,SQLyog可能会无法链接,MySQL加密方式改变了 alter user 'root'@'localhost' identified by '密码'; //修改密码,使用这个代码则可以正常链接 alter user "root" @" localhost" identified with mysql_native_password by "密码"; //刷新权限 flush privileges;
-
进入MySQL,通过命令行
//停止MySQL net stop mysql //启动MySQL net start mysql
注意:启动MySQL由两种方式,一种mysql -u root -p启动,然后根据提示输入密码,第二种mysql -u root -p密码,密码和p之间没有空格
-
注释掉ini中的跳过密码
-
重启MySQL,测试链接
注意:
sc delete mysql,清空服务 这个命令可以将MySQL服务干掉,干掉之后可以重装
1.6、SQLyog
SQLyog 下载网盘分享,直接安装即可
链接:https://pan.baidu.com/s/1ndEXZBmcQasoVYYFYADD6A?pwd=1234
提取码:1234
保证中文不乱码:
每一个SQLyog的操作,本质就是对应了一个SQL语句,可以在软件的历史记录中查看
1.6.1、新建一个表
1.7、链接数据库
命令行链接:
mysql -uroot -p888888 --链接数据库
update mysql.user set authentication_string=password('888888') where user='root' and Host='localhost';--修改用户密码
flush privileges;--刷新权限
-------------------------------
----所有的语句都是用;结尾---------
show databases;--查看所有的数据库
mysql> use school; ---切换数据库,use 数据库名
Database changed
mysql> show tables;----查看数据库中所有的表
+------------------+
| Tables_in_school |
+------------------+
| student |
+------------------+
1 row in set (0.00 sec)
mysql> describe student;------查看表中的所有信息
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| name | varchar(60) | NO | | NULL | |
| age | int | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> create database westos;-----创建一个数据库
Query OK, 1 row affected (0.02 sec)
exit;---退出链接
----单行注释(SQL本来的注释)
/*SQL的多行注释*/
数据库xx语言 CRUD 增删改查 CRUD程序员 CV程序员 API程序员(业务)
DDL:数据库定义语言
DML:数据库操作语言
DQL:数据库查询语言
DCL:数据库控制语言
2、操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
MySQL关键字不区分大小写
2.1、操作数据库(了解)
2.1.1、创建数据库
CREATE DATABASE [IF NOT EXISTS] school;
2.1.2、删除数据库
DROP DATABASE [IF EXISTS] swith
2.1.3、使用数据库
--tab键上面,如果表名或者字段名是一个特殊字符,就需要带``符号
USE `school`
2.1.4、查看数据库
SHOW DATABASES ---查看所有的数据库
学习思路:
- 对照SQyog可视化历史记录查看SQL
- 固定的语法或关键字必须要记住
2.2、数据库的数据类型
2.2.1、数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节(常用)
- bigint 较大的数据 8个字节
- float 单精度浮点数 4个字节
- double 双精度浮点数 8个字节
- decimal 字符串形式的浮点数,金融计算的时候一般会使用
2.2.2、字符串
- char 字符串固定大小 0~255
- varchar 可变字符串 0~65535 常用的变量
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1 保存大文本
2.2.3、时间、日期
- date YYYY-MM-DD,日期
- time HH-mm-ss 时间日期
- datetime YYYY-MM-DD HH-mm-ss 最常用的最常用的时间格式
- timestamp 时间戳 1970年1月1日到现在的毫秒数! 全球统一
- year 年份表示
2.2.4、NULL
- 没有值或者未知
- 注意:不要使用null进行运算,运算结果一定为null
2.3、数据库的字段属性(重点)
Unsigned:
- 无符号的整数
- 声明了这一列,不能声明为负数
zerofill:
- 0填充
- 不足的位数使用0来填充
自增:
- 通常理解为自增,自动在上一条记录的基础上 +1(默认)
- 通常用来设置唯一的主键,必须是整数类型
- 可以自定义设置主键的起始值和步长
非空:
- 假设设置为not null,那么不给其赋值也会报错
- null,如果不填写值,默认就是null
默认:
- 设置默认的值
拓展:
/*每一个表,都必须存在一下五个字段!未来做项目用,表示一个记录存在的意义
id 主键
`version` 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
*/
2.4、创建数据库表
#目标:创建一个school数据库
#创建学生表(列,字段) 使用SQL创建
#学生int 登录密码varchar