数据库 - 数据的仓库 - 数据持久化,管理数据
-
关系(型)数据库(1970s):
要求:① 理论基础:
-
关系代数 - 关系运算 - 集合运算/关系运算/一阶谓语逻辑
-
交集 并集 差集 笛卡尔积 子集 超集 存在
-
投影 选择 别名 连接 (排)除 与 或 非
-
all any exists
② 具体表象:用二维表(行和列)保存数据
-
行:记录 - 元组(tuple)
-
列:字段 - 属性(attribute)
③
编程语言:SQL(Structured Query Language)- 结构化查询语言
-
DDL:数据定义语言 - create(查询) drop(删除) alter(修改)
-
DML:数据操作语言 - *insert(*插入) delete(删除) update(更新)
-
DQL:数据查询语言 - select(选择)
-
DCL:数据控制语言 - grant(给予) revoke(撤回)
关系型数据库产品
- Oracle - Oracle
- Oracle - MySQL - MariaDB
- IBM - DB2
- Microsoft - SQLServer
- PostgreSQL
- SQLite
-
MySQL命令行工具
-
显示所有数据库:show database;
-
创建数据库:create database school default character set utf8mb4;
-
删除数据库:drop database if exists school;
-
切换数据库:alter database school default character set utf8mb4;
-
修改二维表:
~ 添加列:alter table tb_student add column stu_tel varchar(20) not null;
~ 删除列:alter table tb_student drop column stu_adder;
~ 修改列:alter table tb_student modify column stu_sex char(1) default ‘男’;
alter table tb_student change column stu_sex stu_gender char(1) not null default ‘M’;
~ 添加约束条件:alter table tb_student add constraint uk_student_tel unique (stu_tel); # 手机号独一无二,填相同的会报错 唯一约束
alter table tb_student add constraint ck_student_birth check (stu_birth>=‘1990-1-1’); # 检查约束
~ 删除约束条件:alter table tb_student drop constraint uk_student_tel;
-
create table tb_student
(
stu_id int not null COMMENT '学号', # not null 学号不允许为空
stu_name varchar(4) not null COMMENT '姓名', # 长度可变的4个字符
stu_sex varchar(1) not null default 1 COMMENT '性别', # 也可以用boolean,true表示男,false表示女。
stu_birth date COMMENT '出生日期',
PRIMARY KEY(stu_id) # 关键字
)ENGINE = INNODB COMMENT '学生表'; # innodb (默认的引擎)
MySQL的数据类型:
-
查看数据类型帮助:?data types;
-
整数:int / integer (32位) bigint (64位) smallint(16位) tinyint(8位) unsigned(无符号整数)
int ———> -2**31 ~ 2**31-1 bigint ———> -2**63 ~ 2**63-1
-
小数:float / double(这两个不推荐使用)----> decimal(建议使用这个)
decimal(6,2) # 小数点后面有2位 eg: 1234.56
-
日期和时间:date / time / datetime ----> timestamp(不推荐使用)
-
字符串:varchar / char(由于效果一样建议使用varchar)
-
二进制数据:blob ----> binary large object (这个类型不推荐使用)
-
JSON:json
图形化(GUI)的客户端工具
-
MySQL Workbench
-
Navicat for MySQL
-
NoSQL数据库 / NewSQL数据库: