当前位置:网站首页>MySQL基础
MySQL基础
2022-08-04 05:31:00 【小羊的预备程序员】
目录
一、关于数据库
1、什么是数据库
如果一个项目是动态(内容会变化的,网页后缀.jsp、.php、.shtml等)内容的话,则数据库是必不可少的一个环节。
2、MySQL简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,2008年被Sun公司收购,目前属于Oracle旗下产品。MySQL是最流行的数据库管理系统之一,在WEB应用方面,MySQL是最好的 RDBMS(Relational Datebase Management System,关系数据库管理系统)应用软件。其和php是黄金搭档(LAMP/LNMP)。
3、常见的其他数据库软件
目前市面上还有:Oracle(重量级的数据库)、MS SQL(微软)、Access(微软)、PostgreSQL、DB2、Mariadb(MySQL分支)
二、MySQL的安装与初始化
操作之前先确保计算机时间准确
1、Linux下的软件安装方式(初步)
①源码包(建议)
优点:
开源,如果有足够的能力,开源修改源代码
编译安装,更适合自己的系统,稳定高效
缺点:
安装步骤较多,容易出错
编译过程时间较长
案例:使用源码编译安装方式安装ncurses(一种常用的终端库)
扩展:解包
常用语法:
#tar -zxvf *.tar.gz
#tar -jxvf *.tar.bz2
选项含义:
-z或-gzip或-ungzie:通过gzip指令处理文件;
-x或-extract或--get:从文件中还原文件;
-v:显示操作过程;
-f或--file:指定一个文件;
-j:支持bzip2解压文件;
①先将软件包传递到服务器上“usr/local/src”
②解压需要安装的源码包
#tar -zxvf ncurses-6.1.tar.gz
③切换到源码文件夹,然后执行操作
配置(config/configure/bootstrap)->编译(make/bootstrapd)->安装(make install/bootstrapd install)
配置操作主要是用于指定软件的安装目录、需要的依赖在什么地方、指定不需要可选依赖、配置文件的路径、通用数据的存储位置等等。
指定安装的路径:--prefix=路径
需要依赖的路径:--with-PACKGE 包名=包所在的路径
不需要依赖:--without-PACKGE 包名
#./configure --prefix=/usr/local/ncurses
#make
#make install
②二进制包(rpm)
优点:包管理系统简单,只需要几个命令就可以实现包的安装,升级,查询和卸载
缺点:经过编译,不再可以看到源码
回顾rpm相关指令:
#rpm -qa | grep 关键词
#rpm -e 关键词 [--nodeps]忽略依赖关系
#rpm -ivh 完整名称
#rpm -Uvh 完整名称
#rpm -qf 文件路径 【查询指定文件属于那个包】
案例:使用二进制包安装lynx(一款纯命令行的浏览器)
在光盘中就有这个包
例如查看百度:#lynx --dump www.baidu..com
③yum等傻瓜式安装
优点:安装简单,快捷
缺点:完全丧失了自定义性
常用的yum命令:
#yum list 列出当前已经装的和可以装的软件(全部)
#yum search 搜索指定的关键词的包
#yum [-y] install 包名 安装指定的包(-y表示允许不再确认)
#yum [-y] update [包名] 更新指定的包,不指定包则更新全部软件
#yum [-y] remove 包名 卸载指定的包
案例:使用yum指令卸载火狐浏览器
2、安装MySQL(重点)
①MySQL安装
CentOS6目前已经不再维护更新,yum指令很多网上源都下不了,建议直接采取直接下载二进制包解压的方式下载
查看端口号(默认端口号):3306
②MySQL初始化
#service mysqld start
#mysql_secure_installation
③mysql的启动控制
语法:#service mysqld start/stop/restart
进入方式:
#mysql -u用户名 -p
退出mysql到linux命令行:exit
④默认目录/文件位置(了解)
数据库文件目录:/var/lib/mysql
配置文件:/etc/my.cnf
三、MySQL的基本操作(难点)
1、名词介绍
以Excel文件举例:
数据库:可以看作是整个excel文件。
数据表:可以看作是一个excel文件中的工作表。
行(记录):可以看作是一个工作表中的一行
列(字段):可以看作是一个工作表总的一列
2、库操作
SHOW DATABASES; 显示当前MySQL中全部的数据库
CREATE DATABASE 库名; 创建数据库
DROP DATABASE 库名; 删除数据库
USE 库名; 切换数据库
SHOW DATABASES; 效果
创建数据库:创建yunwei数据库
删除数据库:删除运维
新建一个test数据库,并切换到test数据库
3、表操作
SHOW TABLES; 显示当前数据库中所有的表名(必须先use数据库)
CREATE TABLE 表名称 在当前数据库下创建数据表
(
列名称1 数据类型 [NOT NULL AUTO_INCREMENT],
列名称2 数据类型,
列名称3 数据类型,
...,
PRIMARY KEY(主键字段名)
);
常见的数据类型:int(整形)、char(定长)、varchar(不定长字符)
主键一般就是序号所在那一列(主键不能重复)
DESC 表名; 描述一个数据表(查看表结构)
DROP TABLE [IF EXISTS] 表名; 删除数据表
案例:使用上述的语法
查看所有的数据表
创建数据表(去test库中创建)
要求:表明xg,要求有字段如下:
ID字段,11为整形,不为空,自增,主键
Username字段,varchar类型,20长度
Password字段,char类型,32长度
SQL(standard query language)语句:
create xg
(
Id int(11) not null auto_increment,
Username varchar(20),
Password char(32),
Primary key(id)
);
查看表结构
删除数据表:
4、记录/字段操作(重点)
4.1、增加记录
语法1:INSERT INTO 表名称 VALUES(值1,值2,...);
语法2:INSERT INTO 表名称(列1,列2,...) VALUES(值1,值2,...);
要求前面的列名与值要一一对应;
案例:往数据表xg表中新增一个记录username为zhangsan,password为123456(加密结果 E10ADC3949BA59ABBE56E057F20F883E)
SQL语句:
INSERT INTO xg (username,password) VALUES("zhangsan"," E10ADC3949BA59ABBE56E057F20F883E")
4.2、更新记录
语法:UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值... WHERE 列名称 = 某值;
案例:使用更新语句更新id大于等于2的记录,将其密码改为123456789(加密结果25F9E794323B453885F5181F1B624D0B)
SQL语句:UPDATE xg SET password="25F9E794323B453885F5181F1B624D0B" WHERE id >=2;
以后在执行影响行数的SQL操作的时候一定需要注意条件是否写错或者漏写 。
4.3、查询记录
SELECT 列名称1,列名称2,... FROM 表名称 WHERE 条件; (指定列)
SELECT * FROM 表名称 WHERE 条件;
案例:查询刚才新增的记录
只查询用户名和密码,并且id=2的;
SELECT username,password FROM xg WHERE id = 2;
查询全部:
select * from xg;
4.4、删除记录
delete from 表名称 where 列名称 = 值;
案例:删除id=2的记录
索引
5、备份与还原(重点)
5.1、备份(导出)
全量备份(数据+结构):#mysqldump -uroot -p密码 -A > 备份文件路径
指定库备份(数据+结构):#mysqldump -uroot -p密码 库名 > 备份文件路径
多个文件备份(数据+结构):#mysqldump -uroot -p密码 --databases db1 db2 > 备份文件路径
备份文件通常为:xxx.sql、xxx.tar.gz
案例:每一分钟自动备份1次test数据库
计划任务编写:
等待几分钟观察结果:
5.2、还原(导入)
还原部分(1)mysql命令行 source方法 和(2)系统命令方法
1、还原全部数据库:
(1)mysql命令行: mysql> source 备份文件路径
(2)系统命令行:#mysql -uroot -p密码 < 备份文件路径
2、还原单个数据库(需指定数据库)
(1)mysql> user 库名
mysql> source 备份文件路径
(2)mysql -uroot -p密码 库名 < 备份文件路径
3、还原单个数据库的多个表(需指定数据库)
(1)mysql> user 库名
mysql> source 备份文件路径
(2)mysql -uroot -p密码 库名 < 备份文件路径
4、还原多个数据库(一个备份文件里有多个数据库备份,此时不需要指定数据库)
(1)mysql命令行:mysql> source 备份文件路径
(2)系统命令行:#mysql -uroot -p密码 > 备份文件路径
案例1:人为删除xg表(模拟数据表丢失),然后通过最后一次备份还原数据表,先删除数据表,然后执行还原操作:
案例2:需要还原sql文件(moblie.sql31万条数据)
解决中文显示??问题:
设置mysql连接字符集:mysql > set names utf8; [三码一致,服务器端+传输过程中+客户端]
四、扩展
1、mysql的远程管理工具
分为两大类:B/S架构、C/S架构。
B/S:B是指浏览器,S是指服务器。 例如:百度搜索应用就属于BS架构软件。
C/S:C是指客户端,S是指服务器。 例如:QQ、电脑端微信等应用程序都是CS架构。
在BS中,mysql有个典型的管理工具:PMA(PhpMyAdmin)
CS中比较典型的软件:navicat、mysql workbench
要解决的问题:允许mysql远程登录
①先进入数据库选择mysql数据库;
②执行sql语句:select host,user from user;
③将其中一个host值改为“%”,表示可以允许任何地方登录
④刷新权限表或者重启mysql
刷新权限:mysql > flush privileges;
⑤navicat连接成功
想写sql语句按下F6
边栏推荐
- Machine Learning - Processing of Text Labels for Classification Problems (Feature Engineering)
- 指针运算相关面试题详解【C语言】
- 【五一专属】阿里云ECS大测评#五一专属|向所有热爱分享的“技术劳动者”致敬#
- JDBC第一学之进行数据库连接时出现The server time zone.....解决办法
- C语言对文件的操作(完整版)
- How to grow into a senior engineer?
- LeetCode_Dec_2nd_Week
- Completely remove MySQL tutorial
- 第三章 标准单元库(上)
- arm learning-1-development board
猜你喜欢
C语言数组的深度分析
MNIST Handwritten Digit Recognition - Building a Perceptron from Zero for Two-Classification
CSDN spree -- college round table spree
2020-03-27
Pytest common plug-in
Amazon Cloud Technology Build On 2022 - AIot Season 2 IoT Special Experiment Experience
Question 1000: Input two integers a and b, calculate the sum of a+b, this question is multiple sets of test data
线性表之动态数组(ArrayList)的自实现
题目1000:输入两个整数a和b,计算a+b的和,此题是多组测试数据
makefile基础学习
随机推荐
结构体内存对齐-C语言
bind()系统调用的用处
2020-03-27
Windows10重置MySQL用户密码
Object.requireNonNull 方法说明
MNIST handwritten digit recognition, sorted by from two to ten
集合---ArrayList的底层
MNIST Handwritten Digit Recognition - Lenet-5's First Commercial Grade Convolutional Neural Network
位段-C语言
LeetCode_22_Apr_4th_Week
tmux concept and usage
管道重定向
Miscellaneous [development] [VS Code] remote - SSD retry failed
MySQL批量修改时间字段
Socket编程详解
[日常办公][shell]常用代码段
arm学习-1-开发板
Question 1000: Input two integers a and b, calculate the sum of a+b, this question is multiple sets of test data
Install Minikube Cluster in AWS-EC2
Golang环境变量设置(二)--GOMODULE&GOPROXY