YanranのblogYanranのblog
主页
知识学习
工具积累
其他
GitHub
主页
知识学习
工具积累
其他
GitHub
  • 知识学习

    • README
    • C++基础
    • C++基础入门
    • C++提高编程
    • C++核心编程
    • Git基础
    • Java基础
    • Linux基础
    • MFC
    • Qt
    • Thead
    • Vue
    • Web基础
    • 操作系统
    • 数据库
    • 数据结构
    • 计算机基础
    • 计算机编译
    • 计算机网络

数据库

1. 基础

  • SQL, 全称为Structured Query Language(结构化查询语言)。 要讲SQL就绕不开database(数据库), 平时所说的数据库,一般就是指的 Relational database(关系型数据库).
  • 数据库本质是个软件,是个服务器软件
  • 写SQL是写在客户端里,实现从数据库里筛选处理数据

2. 语法

count是对分完组后的每个组的数据统计,没有group by相当于所有数据是一个组。

3. Linux使用MySql

3.1 充分必要性

  • 如果一个项目是动态(内容会变化的,网页后缀.jsp、.php、.shtml等)内容的话,则数据库是必不可少的一个环节。

  • MySQL是一个关系型数据库管理系统,开源、跨平台、所占内存较小。

3.2 MySQL安装

  • mysql默认端口号是3306
  • 数据库存储目录:/var/lib/mysql
  • 配置文件:/etc/my.cnf
步骤指令说明
安装服务端yum install mysql-server注意是服务端。不是客户端
启动mysqlsystemctl start mysqld
初始化mysql_secure_installation设置密码,是否允许远程登录等
启动/关闭/重启systemctl start/stop/restart mysqld
进入mysqlmysql -u 用户名 -p [密码]建议这里不要输入密码,是明文显示
退出mysqlexit

3.3 MySQL操作

  • 文件层级:数据库,数据表,记录(行),字段(列)。
  • MySQL指令不区分大小写
  • 显示指定连接字符集,避免中文乱码,每次连接MySQL后都需要设置。Mysql> set names utf-8
  • 三码一致:服务器数据库的字符集+传输过程中字符集(set names)+客户端终端字符集
//库操作
SHOW DATABASES;//显示当前MySQL中全部的数据库
CREATE DATABASE 库名;//创建数据库
DROP DATABASE 库名;//删除数据库
USE 库名;//切换数据库

//表操作
CREATE TABLES 表名称 (
	列名称1 数据类型 [NOT NULL AUTO_INCREMENT],
	列名称2 数据类型,
	列名称3 数据类型,
	...,
	PRIMARY KEY(主键字段名)
);
Create table oo(
	Id int(11) not null auto_increment,
	Username varchar(20),
	Password char(32),
	Primary key(Id)
);
//常见的数据类型:int(整型)、char(定长字符)、varchar(不定长字符)。
//主键一般就是序号所在的那一列,主键不能重复。
SHOW TABLES;
DESC 表名;//查看表的结构
DROP TABLE [IF EXISTS] 表名;//删除数据表

//记录操作
INSERT INTO 表名称 VALUES (值1, 值2,....);
INSERT INTO 表名称 (列1,列2,...) VALUES (值1,值2,....);
UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2,… WHERE 列名称 = 某值;
SELECT 列名称1,列名称2,… FROM 表名称 WHERE 条件;
SELECT \* FROM 表名称 WHERE 条件;
DELETE FROM 表名称 WHERE 列名称 = 值;
  • 以下关于MySQL整体的操作是在bash环境下执行,需要退出MySQL
//备份(导出)
//导出其实只有表操作,没有库级的操作
mysqldump -uroot -p123456 -A > 备份文件路径//全量备份(数据+结构)
mysqldump -uroot -p123456 库名 > 备份文件路径//指定库备份(数据+结构)
mysqldump -uroot -p123456 --databases db1 db2 > 备份文件路径//指定多个库备份(数据+结构)

//还原(导入)
//mysql命令行source还原方法
//系统命令行还原方法

mysql> source 备份文件路径//mysql还原全部数据库:
mysql -uroot -p123456 < 备份文件路径//linux还原全部数据库

//(需指定数据库名,因为单个库的备份是没有库名字的,即需要先搭好新库,在新库里source)
use 库名
source 备份文件路径//mysql还原指定单个数据库,mysql还原指定数据库的表
mysql -uroot -p123456 库名 < 备份文件路径//linux还原指定单个数据库,linux还原指定数据库的表

//(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
source 备份文件路径//mysql还原指定多个数据库
mysql -uroot -p123456 < 备份文件路径//linux还原指定多个数据库

  • 脚本执行定期备份demo
#!/bin/bash
## 在计划任务中执行该Shell脚本
filename="test_"`date +'%Y%m%d%H%M%S'`".sql"
mysqldump -uroot -p123456 test > /root/$filename

3.4 MySQL远程连接

  • B/S:B是指浏览器,S是指服务器。例如:百度搜索应用就属于BS架构软件。
  • C/S:C是指客户端,S是指服务器。例如:QQ、电脑端微信等应用程序都是CS架构。
  • BS中mysql典型的管理工具:PMA(phpMyAdmin)
  • CS中mysql典型的软件:navicat、mysql workbrach
//- 修改可以远程连接的主机与用户字段,其位于mysql数据库的user表中的host,user字段。
mysql> use mysql;

//修改链接地址,实现远程连接数据库,有利于数据库和服务分离。host字段为“%”表示任意主机ip。
mysql> select host,user from user;
mysql> update user set host='%' where user='root';
mysql> commit;

//修改后需要刷新权限表(`mysql> flush privileges`)或者重启mysql。
systemctl restart mysqld.service
Prev
操作系统
Next
数据结构