1-简单介绍
1.1, 数据库分类
关系型数据库:(SQL)
- Mysql, Oracle, Sqlserver , DB2, SQLlite
- 通过表和表之间, 行与列之间的关系进行数据的存储
非关系型数据库(NoSQL) Not Only
- Redis, MongoDB
- 非关系型数据库, 对象存储, 通过对象的自身属性来决定
DBMS(数据库管理系统)
- MySql, 数据库管理系统
1.2,Mysql简介
MySQL是一个**关系型数据库管理系统****,**由瑞典[MySQL AB](https://baike.baidu.com/item/MySQL AB/2620844) 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
官网:MySQL
1.3-安装Mysql(Windows)
官网下载地址:MySQL :: Download MySQL Community Server (Archived Versions)
1, 解压文件
2,添加系统环境变量

选择压缩的mysql目录下的bin目录
3,新建mysql配置文件
在mysql路径下创建my.ini
配置文件
4,编辑my.ini
[mysqld]
basedir=E:\apps\java\mysql-5.7.36\
datadir=E:\apps\java\mysql-5.7.36\data\
port=3306
skip-grant-tables
- basedir: 选择安装目录
- datadir: 数据存放的位置, 不需要创建
- port: 端口
- skip-grant-tables:跳过密码验证
5, 使用CMD安装
管理员运行CMD
进入mysql目录bin
安装服务 mysqld -install
6,初始化数据文件
mysqld --initialize-insecure --user=mysql
执行后出现data文件
7,启动mysql net start mysql
8,修改密码
登录mysql: mysql -uroot -p
- 执行修改密码命令
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
- 刷新权限
flush privileges;
9,去掉配置文件的跳过密码 my.ini
10,重启mysql
退出登录 exit
重启
关闭mysql: net stop mysql
启动mysql: net start mysql
1.4-建库建表-Navicat
1, 使用连接工具连接数据库, 这里使用Navicat
2,新建数据库school
3,新建表student
1.5-命令行连接
-- 1,连接数据库
mysql -uroot -p123456;
-- 查看所有数据库
show databases;
-- 切换数据库
use school;
-- 查看数据库中的所有的表
show tables;
-- 查看表结构
describe student;
desc student;
create database westos; --创建一个数据库
exit; -- 退出命令行
quit; -- 退出命令行
2-操作数据库
操作数据库>操作数据库中的表>>操作数据库中表数据
2.1,常用操作
-- 创建数据库
create database if not exists westos; -- 如果没有创建就创建
-- 删除数据库
drop database if exists westos; -- 如果存在就删除
-- 查看所有数据库
show databases
2.2, 数据库列类型
数值
- tinyint 十分小的数据 1字节
- smallint 较小的数据 2字节
- mediumint 中等大小数据 3字节
- int 标准整数 4字节 常用
- bigint 较大的数据 8字节
- 小数
- float 浮点数 4字节
- double 浮点数 8字节
- decimal 字符串形式的浮点数 浮点数计算使用
字符串
- char 字符创固定大小 0-255
- varchar 可变字符串 0-65535 常用
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1
时间日期
- 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) – 005
自增
- 在上一条记录的基础上+1(默认)
- 通常用来涉及唯一的主键 , 必须是整数类型
- 可以自定义自增的大小
非空
- 必填项, 不赋值报错
默认
- 设置默认值 , 不复制就是默认值
拓展:
每张表必备的五个字段
id 主键
version 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
2.4-SQL建表
-- not null非空
-- AUTO_INCREMENT 自增
-- COMMENT 备注
-- DEFAULT 默认值
create table if not EXISTS student1(
`id` int(4) not null AUTO_INCREMENT COMMENT '学号',
`name` varchar(20) NOT NULL COMMENT '姓名',
`sex` varchar(2) DEFAULT '男' COMMENT '性别',
`birthday` datetime DEFAULT null COMMENT '出生日期',
PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE [IF NOT EXISTS] `表名`(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
PRIMARY KEY(`主键1`,`主键2`)
)ENGINE = INNODB(表类型) DEFAULT CHARSET=utf8(字符集)
常用命令
show create database 库名 -- 查看创建数据库的语句
show create table 表名 -- 查看创建表的SQL语句
desc student --显示表结构
2.5-数据表类型
-- 数据库引擎
innodb 默认使用
myisam 早年使用
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大 约2倍 |
常规使用操作
- MYISAM 节约空间, 速度较快
- INNNODB 安全性高, 事务处理, 多表多用户操作
物理空间位置
- 数据库根目录data目录下 一个文件夹代表一个数据库
- Mysql引擎区别
- INNODB 数据库表中显示*.frm文件, 以及idb文件
- MYISAM对应文件
- *.frm 表结构定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表字符集编码
1, 建表时添加字符集CHARSET=utf8
2, 在my.ini中配置默认编码 character-set-server=utf8
2.6-修改数据库表
常用命令
-- 添加字段 ALTER TABLE 表名 ADD 字段名 INT(3);
ALTER TABLE student ADD age INT(3);
-- 修改约束 ALTER TABLE 表名 MODIFY 字段 列属性
ALTER TABLE student MODIFY sex VARCHAR (5)
-- 修改约束 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性
ALTER TABLE student CHANGE sex sex1 VARCHAR (2);
-- 删除表字段
ALTER TABLE student DROP age;
-- 删除表
DROP TABLE IF EXISTS student