浅析数据库/DBMS

228 阅读3分钟

什么是数据库?

简单来说,数据库及时存储大量数据的地方。

使用数据库的前提:安装docker

docker常用命令

  1. 安装mysql
docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.27
  1. 查看所有进程
docker ps
  1. 关闭某个进程
docker kill mysql1

可能会导致需要重装mysql

  1. 重新运行mysql
docker container start musql1
  1. 删除容器
docker rm mysql1

注意:docker运行的容器不会进行数据持久化,一旦删除,十九就没了,可以通过 数据目录持久化解决


query命令

  1. 进入运行mysql1 的 linux虚拟机
docker exec -it mysql1 bash
  1. 连接上mysql
mysql -u root -p
  1. 展示databases(数据库)
show databases;
  1. 进入数据库
use databasename;
  1. 展示库内表名
show tables;
  1. 展示表内所有内容
select * from tablename
  1. 对标进行描述
desc tablename;
  1. 删除库/表
DROP TABLE/DATABASE name

尽可能不要通过update/delete直接操作数据库,若未写where,所有的数据都将被覆盖!!!!!!!!

尽可能不要通过update/delete直接操作数据库,若未写where,所有的数据都将被覆盖!!!!!!!!

尽可能不要通过update/delete直接操作数据库,若未写where,所有的数据都将被覆盖!!!!!!!!

在命令行中返回上一层 ===> ctrl + D


DBMS

DBMS 的全称就是 databases management system 及 数据库管理系统。


通过nodejs使用mysql

  1. 安装mysql库
yarn add mysql
  1. mysql 的基本结构
// 引入mysql
	var mysql = require('mysql');
// 创建链接
	var connection = mysql.createConnection({
  		host: 'localhost',
  		user: 'root',
  		password: '123456',
	});
// 进行链接
	connection.connect();
// 通过链接 传递query命令,进行操作等
	connection.query( query, [ (error, results, fields)=>{} ] )
//结束链接
	connection.end();
  1. 创建database
connection.query('CREATE DATABASE IF NOT EXISTS huang DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci;', function (error, results, fields) {
  // 创建数据库
  if (error) throw error;
  console.log('The solution is: ', results);
});

在mysql中,我们不能直接使用utf8,需要使用utf8mb4

  1. 创建table
//使用表
connection.query('use huang;');
connection.query(`CREATE TABLE IF NOT EXISTS user(
//我们必须对表进行描述
name text,
age int
)`, function (error, results, fields) {});

表内数据的增删查改

insert into tablename (key1,key2) values (value1,value2)
delete from tablename where name='xxx'
  1. 查(最近的10个)
select */name from tablename limit 10
update tablename set xxx='yyy' where name='xxx'

为表添加一列

alter table tablename add id serial;

mysql 的数据类型

mysql的数据类型分为五大类:

  1. 数字
  2. 字符串
  3. 时间/日期
  4. JSON
  5. 特殊类型

我们下面来着重介绍一下前三种

  1. 数字
类型大小
tinyint1 byte
smallint2 byte
mediumint3 byte
int/integer4 byte
bigint8 byte
float4 byte
double8 byte
double8 byte
serial
bool

其中 serial 等价于 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE , 他是一个自动增长递增唯一值。

  1. 字符串
类型特点
char(100)永远是100个字符长度
varchar(100)字符长度 <= 100
binary(1024)永远是1k大小
varbinary<= 1k
blob一个很长的二进制
text一个很长的文本
enum('v1' 'v2')字符串只能是 v1 或 v2
set('v1' 'v2')可以是v1 也可以是v2 也可以是v1 v2
  1. 时间
类型特点
dataxx年xx月xx日
timexx点xx分xx秒
datatimexx年xx月xx日xx点xx分xx秒
timstamp时间戳
yearxx年

在将时间传给前端时,最好先将其格式化为ISO 8601格式。

例如:'1990-12-01T15:30.000+08:00'

new Date(Date.parse('2000-12-01T15:30:00.000+08:00'))
//Fri Dec 01 2000 15:30:00 GMT+0800 (中国标准时间)

除了上述使用mysql库以外,我们也可以通过Sequalize 来实现对数据库的管理