持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天
数据库
介绍
数据的仓库(集散地)--database
为什么要使用数据库呢?
- 实现数据持久化(将数据从内存转移到能够长久保存数据的存储介质的过程)
- 主要是可以实现数据的管理
数据库的分类
- 关系型数据库(SQL)
-
理论基础:关系代数和集合论
-
具体表象:用二维来保存数据(学生表)
- 行:一条记录(一个学生的信息)
- 列:一个字段(学生的某个属性,例如:学号,出生日期,姓名)
- 主键列:能够唯一标识一条记录的列(例如:学生学号)
-
编程语言:SQL(结构化查询语言)
- DDL (数据定义语言)
- DML(数据操作语言)
- DCL(数据控制语言)
- DQL(数据查询语言)
-
关系型数据库产品
-
商业版数据库
- Oracle(甲骨文)
- DB2(IBM)
- SQLServer(Microsoft)
-
开源版数据库
- MySQL
- PostgreSQL
- SQLite
- 非关系型数据库(NoSQL)
mysql(mariadb分支)
基础命令
启动服务
systemctl start mariadb
检查服务状态
systemctl status mariadb
登录超级管理员进入数据库
mysql -u root -p密码
- 注意这里的密码可以等你按完回车以后再输入也可以
查看数据库的版本
select version();
查看都有哪些数据库或者看数据库里有哪些表
show databases;
show tables;
- 除了test其他三个数据库不能动
进入数据库
use 数据库名;
DDL(数据定义语言)
create(创建)
创建数据库和建表
-- 创建数据库
create database 数据库的名称;
-- 创建并指定数据库的字符集为utf-8
create database 数据库名称 default charset utf8;
-- 创建表(以学生表为例)
create table tb_student
(
-- 学生id 必填
student_id int not null comment '学号',
-- 学生姓名20个字符,必填
student_name varchar(20) not null comment '姓名',
-- 学生性别,初始值为1
student_sex bit default 1 comment '性别',
-- 学生日期
student_birth date comment '日期',
-- 学生id是主键列
primary key(student_id)
);
-
注意如果不指定字符集的话存入数据库的汉字可能会乱码
-
utf8mb4可以存储汉字的同时存储emoji图片字符
-
;或者\g都是可以作为命令的结尾 -
也可以以comment做注释
drop(丢弃)
删除数据库和删除表
drop database 数据库名;
- 删库必须谨慎
drop database if exists 数据库名;
- 加一层判断数据库是否存在来删库
drop table 表名;
drop table if exists 表名;
alter(修改)
- 添加表的元素
alter table 表名 add column 属性 数据类型
alter table tb_studnet add column student_address varchar(255)
- add column 添加列
- 删除表的元素
alter table 表名 add column 属性
alter table tb_studnet drop column student_address
- 修改表的元素
alter table 表名 change colum 属性 修改的数据类型
alter table tb_studnet add column student_address varchar(500)