mysql数据库基本介绍
- 基本知识
- 数据库分类
- SQL简介
- MySQL访问
基本知识
数据库: database , 是一种存储数据的仓库
- 根据数据结构组织,存储和管理数据
- 长期, 高效的管理和存储数据
- 存, 读
数据库分类
现在常用数据库模型
- 关系型数据库: 基于关系模型的数据结构 (二维表) 通常存储在磁盘
- 非关系型数据库: 没有具体模型的数据结构 (键值对) 通常存储在内存
关系型数据库
- 关系模型
- 关系数据结构 (存储)
- 关系操作集合 (操作)
- 关系完整性约束 (约束)
- 存储在磁盘 (永久性存储)
- 关系数据库 (DBS) 有四层结构
- 数据管理系统 (DBMS): 管理系统运行
- 数据库 (DB)
- 数据表 (Table)
- 数据字段 (Field) 列
- 关系数据库产品
- 大型: Oracle , DB2
- 中型: MySQL, SqlServer
- 小型: Sybase, Acess
SQL 介绍
针对关系型数据库特殊标准化的编程语言
MySql 安装 | 配置
安装:
https://downloads.mysql.com/archives/installer/
教程:
https://zhuanlan.zhihu.com/p/37152572
# 公司
root/luojin
安装 Navicat Premium 12
https://www.cnblogs.com/wei9593/p/11907307.html
# 密文登录 -h$HOST -P$PORT -u账户 -p
mysql -uroot -p
MySQL 基本操作
- SQL基本语法
- SQL库操作
- SQL表操作
- SQL数据操作
SQL语法规则
SQL语句一定要有结束符
eg:
- 结构创建
create 结构类型 结构名 结构描述;
// eg
create database basename;
create table tablename;
- 显示结构
# 查看结构
show 结构类型(复数);
eg: show tabels;
# 显示结构创建详情
show create 结构类型 结构名;
eg: show create table tablename;
- 数据操作 (数据表)
# 新增数据
insert into 表名 values;
# 查看
select form 表名;
# 更新
update 表名 set;
# 删除
delete form 表名;
SQL库操作
创建数据库
create database 数据库名 [数据库选项]
数据库选项:
- 字符集 charset / character set
- 排序规则(校对集) collate
#eg
create database db_1;
create database db_2 charset utf8MB4;
create database db_3 charset utf8MB4 collate utf8mb4_general_ci;
查看数据库
作用: 查看数据库是否存在. 数据库字符集相关信息
show databases;
# 显示创建详情
show create database db_1;
使用数据库
简化后续操作. (不必加上数据库名)
use db_1
修改数据库
- 字符集 charset / character set
- 排序规则(校对集) collate
alter database 数据库名 库选项
# eg 如果字符集修改了. 那校对集也要同时修改
alter database db_1 charset gbk collate gbk_chinese_ci;
删除数据库
drop database 库名
SQL表操作
创建表
格式:
create table [数据库名.]表名(
字段名 字段类型,
...,
字段名 字段类型
)表选项;
# eg
create table db_1.t_1(
name varchar(50),
age int
);
create table db_1.t_2(
name varchar(50),
age int
)engine Innodb charset utf8MB4;
# 复制相关结构的表
create table t_3 like db_1.t_2
查看表
所有表:
show tables;
指定库的表:
show tables from 库名;
匹配关联表: (_单个匹配, %模糊匹配)
以 (单字)like 结尾的表 eg: alike
show tables like ‘_like’;
以 (多个)like 结尾的表 eg: t_alike
show tables like ‘%like’;
查看详情: 三种写法
desc 表名;
describe 表名;
show columns from 表名;
以什么结尾
\g: 以\g结尾和分号;没区别
\G: 以行显示
更改表
- 修改表名 rename table 旧表 to 新表
- 修改选项 alter table 表名 [表选项]
rename table t_3 to t_1;
SQL(表)字段操作
更改字段(增删改-前提表存在)
都需要跟上字段类型
新增字段
alter table 表名 add 字段名 字段类型 [字段属性] [字段位置];
# eg
alter table t_1 add email vachar(255);
字段位置
- 分两种
- 第一: first
- 某字段之后: after 存在的字段名
- 适用于新增字段, 修改
alter table 表名 字段操作 字段位置;
# eg
alter table t_1 add id int first;
alter table t_1 add create_time time(255) after age;
修改字段名, 类型.
alter table 表名 change 旧字段 新字段 字段类型 [字段属性] [字段位置];
修改字段类型, 属性, 位置.
alter table 表名 modify 字段名 字段类型 [属性] [位置];
删除字段
alter table 表名 drop 字段;
SQL 数据操作
新增数据
全字段插入: insert into 表名 values ( 字段列表顺序对应的所有值 )
部分字段插入(灵活自己定顺序): insert into 表名 (部分字段) values (部分字段对应的值)
eg:
# 全字段
insert into t_1 values(2, 'yewq2', 18);
# 部分字段插入, 可自己调整顺序. 值需要对应
insert into t_1 (id, name, age) values(3, 'yewq3', 18);
insert into t_1 (`id`, `name`, `age`) values(4, 'yewq4', 18);
查询数据
select * | 字段列表 from 表名 [where查询条件];
查询条件: where [条件]
select * from db_1.t_1;
select id,name from db_1.t_1;
# 带条件
select `id`,`name` from db_1.t_1 where id = '1';
select id,name from db_1.t_1 where name = 'yewq';
select id,name from db_1.t_1 where name like 'yewq_';
select id,name from db_1.t_1 where name like 'y%';
更新数据
update 表名 set 字段 - 新值 [, 字段 = 新值] [where条件];
# 更新所有
update db_1.t_1 set age = 19;
# 带条件 常用
update t_1 set name = 'yewq_new' where id = 1;
删除数据
delete from 表名 [where条件];
delete from db_1.t_1 where id = 4;
字符集, 校对集
字符集
- 字符集概念
- MySQL字符集关系
# 查看MySQL支持的字符集
show charset;
- 解决乱码问题
# 设置客户端字符集
set name gbk;
# 查看字符集
show variables like 'character%';
- 字符集设置原理
校对集
概念
数据比较的规则
- 大小写不敏感: _ci, case insensitive (不区分大小写)
- 大小写敏感: _cs, case sensitive (区分大小写)
- 二进制比较: _bin (区分大小写)
show collation;
升序
select * from t_5 order by [字段名];
字段类型
四大类型:
- 整数类型
- 小数类型
- 字符串类型
- 时间日期类型
整数类型 int
有效的整数数据;
- 迷你: tinyint, 1字节
- 短: smallint, 2字节
- 中: mediumint, 3~
- 标准: int, 4~
- 长: bigint, 8~
再看 是否有无符号: (正数 /负数);
- unsigned: 无符号
- 默认有符号.
create table t_6(
money smallint,
age tinyint unsigned
);
显示宽度 eg: int(L)
数值宽度(位数), 不影