Day1 数据分析 关系数据库和MySQL
关系数据库概述
1. 为什么要使用数据库
2. 数据库的类型
- 关系(型)数据库
- 非关系型数据库 —> NoSQL数据库 —> No SQL —> No, SQL —> Not Only SQL
- KV数据库 - 文档数据库 - 列族数据库 - 图数据库
关系数据库的特点
- 理论基础:关系模型 - 关系代数 - 关系运算 - 谓词逻辑
- 具体表象:用二维表组织数据
- 行(row):记录(record) - 元组(tuple)
- 列(column):字段(field) - 属性(attribute)
- 主键(primary key)
- 外键(foreign key)
- 编程语言:SQL - 结构化查询语言
3. 关系数据库产品
~ Oracle / MySQL / DB2 / SQLServer / PostgreSQL / MariaDB
~ MySQL
- reliable / mature / open-source
- 中小型网站开发的黄金组合 - LAMP = Linux + Apache + MySQL + PHP
Structured Query Language - 结构化查询语言
- 数据定义语言(DDL)- create / drop / alter / rename / truncate
- 数据操作语言(DML)- insert / delete / update / select
- 数据控制语言(DCL)- grant授权 / revoke召回
- 事务控制语言(TCL)- start transaction / commit / rollback
中小型网站开发的黄金组合 LAMP = Linux + Apache + MySQL + PHP
4. MySQL命令行
显示所有数据库:show databases; 显示数据库下所有表:show tables; 显示所有的字符集:show charset;
5. 结构化查询语言(SQL)
~ DDL - Data Definition Language - 数据定义语言 - create / drop / alter
Unicode ---> utf-8 / utf-16 / utf-32
'a' ---> 1字节
'骆' ---> 3字节
'' ---> emoji ---> 4字节
utf8mb4 - 最大4字节的utf-8编码 - MySQL8默认
-- 如果存在名为school的数据库就删除它
drop database if exists school;
-- 创建名为school的数据库并指定默认的字符集
create database school default charset utf8mb4;
-- 切换数据库
use school;
-- 创建二维表
create table tb_student
(
stu_id integer not null comment '学号',
stu_name varchar(20) not null comment '姓名',
stu_gender boolean not null default 1 comment '性别',
stu_birth date default '2000-1-1' comment '出生日期',
primary key (stu_id)
) engine=innodb comment '学生表';
-- 删除表
drop table if exists tb_student;
-- 修改表添加列
alter table tb_student add column stu_addr varchar(200) default '' comment '家庭住址';
alter table tb_student add column stu_tel varchar(20) not null comment '联系电话';
-- 修改表删除列
alter table tb_student drop column stu_tel;
-- 修改表修改列
alter table tb_student modify column stu_gender char(1) default '男' comment '性别';
alter table tb_student change column stu_gender stu_sex char(1) not null default 'M' comment '性别';
6. 数据类型
~ help data types; / ? data types;
~ 整数
- bigint(64bit ---> 8byte ---> -2^63 ~ 2^63-1)---> bigint unsigned(0 ~ 2^64-1)
- integer / int (32bit ---> 4byte ---> -2^31 ~ 2^31-1)---> int unsigned(0 ~ 2^32-1)
- smallint(16bit ---> 2byte ---> -32768 ~ 32767)---> smallint unsigned
- tinyint (8bit ---> 1byte ---> -128 ~ 127) ---> tinyint unsigned
~ 小数
- float / double ---> 不推荐使用
- decimal ---> decimal(10, 2)
~ 字符串 ---> 底层都是边长编码
- char
- varchar ---> varchar(20) ---> 65535 / 16383
- longtext / longblob ---> 4G ---> 不推荐使用 ---> 用字符串保存文件路径即可
~ 日期时间
- date
- time
- datetime
- timestamp ---> 不推荐使用 ---> 底层是一个整数 ---> 2038年1月19日3时14分07秒
~ JSON
- json数组
- json对象
7. 高级文本编辑工具
~ Visual Studio Code
~ Sublime
~ Atom
~ Textmate
~ Notepad++
~ Editplus
|