- 数据库:数据的仓库(集散地),他解决了数据持久化和数据管理的问题,
持久化 —> 将数据从内存转移到硬盘(可以长久保存数据的存储介质)。
数据库的分类:
1972年 —> Codd —> 如何使用关系模型来保存大规模数据
~关系型数据库 —> 首选方案
- 理论基础:关系代数、集合论 - 具体表象:用二维表保存数据(行(记录)和列(字段)) - ***编程语言:SQL(结构化查询语言)---> SQL方言***
~ 非关系型数据库
- NoSQL —> NO SQL —> NO, SQL —> Not Only SQL
- NewSQL —> 保存数据的方式可能完全不同于传统的关系型数据库,
但是允许使用关系型数据库的编程语言操作/获取数据
- Hadoop生态圈 —> Hive —> HQL ---->跟MySQL中使用的SQL无限雷同
关系型数据库的产品:
~ Oracle —> Oracle(甲骨文) —> 金融、证券、电商、电子政务 —> 好、贵 —> No.1
~ MySQL —> GPL —> 社区版 —> No.2
~ PostgreSQL / IBM、DB2 / Microsoft SQLServer
命令行:
登录mysql:mysql -u root -p
mysql -u guest -h 47.104.31.138 -p
查看数据库:show databases;
退出:quit
清空:cls
创建数据库:create database 数据库名 default charset utf8mb4;
删除数据库:drop database if exists 数据库名;
查看创建数据库的过程:show create database 数据库名;
切换到指定的数据库:use 数据库名;
显示数据库中所有的表:show tables;
创建二维表:
create table tb_student
(
stu_id integer unsigned not null comment ‘学号’,
stu_name varchar(20) not null comment ‘姓名’,
stu_sex boolean default 1 comment ‘性别’,
stu_birth date comment ‘出生日期’,
primary key (stu_id)
)engine=innodb comment ‘学生表’;
非空约束 – not null,默认值约束 – default 1,
SQL()-- 结构化查询语言
~ DDL(数据定义语言) – 创建删除修改各种对象 – create / drop / alter
~ DML (数据操作语言) – 插入、删除、修改数据 – insert / delete / update
~ DQL (数据查询语言) – 检索(查询语言)数据 – select
~ DCL (数据控制语言) – 授予或者召回用户权限 – grant / revoke
- 数据类型
int – 整数(integer)
bigint – 大整数
smallint – 小整数
tinyint – 特别小的整数
unsigned – 无符号整数(正整数)
小数 — float 、double、decimal
时间日期 — time – 时间、 date – 日期、datetime–时间日期、timestamp – 时间戳
字符串:char–定长字符串 / varchar–变长字符串
大对象:longtext / longblob — 4G
auto_increment — 自动增长
- 主键(primary key):
能够唯一确定一条记录的列
- sql代码笔记
-- 删除表
drop table if exists tb_student;
-- 创建表
create table tb_student
(
stu_id integer unsigned not null comment '学号',
stu_name varchar(20) not null comment '姓名',
stu_sex boolean default 1 comment '性别',
stu_brith date comment '出生日期',
primary key (stu_id)
)engine=innodb comment '学生表';
-- 修改表
-- 添加一个列
alter table tb_student add column stu_addr varchar(50) default '' comment '籍贯';
-- 删除一个列
alter table tb_student drop column stu_addr;
-- 修改一个列(修改列的名字)
alter table tb_student change column stu_sex stu_gender boolean default 1 comment '性别';
-- 修改一个列 (修改列的数据类型)
alter table tb_student modify column stu_dender char(1) default '男' comment '性别';
-- 修改学生表添加一个列来维护学生对学院的多对一关系
-- 多对一关系都是在多的一方添加一个列来维护
alter table tb_student add column col_id int unsigned not null comment '学院编号';
-- 修改学生表,添加一个外键约束,限制学生表中的学院编号必须参照学院表的学院编号
alter table tb_student add constraint fk_student_col_id foreign key (col_id) references tb_college (col_id);