Day09 Liunx高级系统设计11-数据库1

MySQL

简介

数据库DB

数据库( DataBase DB )从本质上讲就是一个文件系统,它能够将数据有组织地集合在一起,按照一定的规则长期存储到计算机的磁盘中,并且能够供多个用户共享和使用,同时,用户能够对数据库中的数据进行插入、删除、修改和查询等操作。
数据库管理系统 BDMS
数据库管理系统( DataBase Management System DBMS 从本质讲就是一个为管理数据库中的数据而设计的一套管理系统。它依托数据库,对外提供统一管理数据库中数据的功能和接口能够有效地对数据库的安全、认证、数据 备份、数据恢复、数据传输等进行统一的管理。同时,数据库管理系统能够根据所依托的数据库模型对数据库进行相应的分类。大多数的数据库都是通过数据库管理系统对数据库中的数据进行管理和维护的。
DB DBMS 的关系

数据库的分类

关系型数据库
依据所有存储数据的模型之间的关系建立的数据库。所谓关系模型,指的是 一对一、
一对多、多对多
关系型。常见的关系型数据库如下:
        Oracle:是 Oracle 公司的数据库产品
        Mysql: 最早属于瑞典的 MysqlAB 公司的,后被 Sun 公司收购, Sun 2009
4 20 号被 Oracle 收购。
        SQLServer:微软旗下的数据库产品
        Access:微软旗下的数据库产品
        DB2:IBM 公司旗下的数据库产品
非关系型数据库
泛指非关系型的数据库,区别于关系数据库。采用了没有特定关系模型来组织数据。常
见的非关系型数据库如下:
        MongoDB:是一个面向文档的开源 NoSQL 数据库 .MongoDB 使用 JSON 之类的文档来存储任何数据. 它是用 c++ 写的。
        Cassandra:是 Facebook 为收件箱搜索开发的 .Cassandra 是一个用于处理大量结构化数据的分布式数据存储系统
        Redis:是最著名的键值存储。 Redis 是用 C 语言编写的。它是根据 BSD 授权的。
        HBase:谷歌为 BigTable 数据库设计的分布式非关系数据库。

数据库的安装及配置

安装

安装命令:
sudo apt-get update # 更新软件源
sudo apt-get install mysql-server # 安装 mysql
安装过程会提示设置 mysql root 用户的密码
输入 root 账号的密码
确认 root 账号的密码
然后它会自动安装完成
启动或关闭 MySQL
启动命令
service mysql start
关闭命令
service mysql stop
重启命令
service mysql restart
注意 : 默认安装完成后, MySQL 为启动状态
确认是否启动成功
命令 :
        sudo netstat -tap | grep mysql
注意 :
        mysql节点处于 LISTEN 状态表示启动成功
进入 MySQL Shell
命令 :
        mysql -u root -p
        回车
        输入安装mysql 时的密码
mysql 中文乱码
原因
character_set_server 默认设置是 latin1
查看命令 :
show variables like "char%";
查看结果如下
解决方案 : 修改 mysql 配置
步骤 0: 退出 mysql
exit
步骤 1: 编辑配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
步骤 2: 在文件 [mysqld] 下添加 character_set_server=utf8. 保存退出
步骤 3: 重启 mysql 服务
service mysql stop
service mysql start
service mysql restart
步骤 4: 登录 MySQL, 并查看 MySQL 目前设置的编码。 show variables like "char%";
外部工具连接 mysql 失败
原因
Ubuntu 下默认安装 MySQL 只支持本地机的 localhost 127.0.0.1 进行连接访问 , 不能通
过虚拟机的 IP 地址进行远程访问 MySQL
修改
1, 修改 mysql
        1.1:在 Ubuntu 系统的 dos 中打开 mysql 库。
                mysql -u root -p
                这时会提示你输入 root 的密码,输入 root 密码后登陆进入 mysql 控制
台。
                在 mysql 控制台中执行如下 sql 语句
        1.2:切换之 mysql 库中
                use mysql;
        1.3:修改权限表,将 root 的登陆 host 改为 ‘%’, 即允许所有 ip
                update user set host = '%' where user = 'root';
        1.4:立刻刷新权限
                flush privileges;
                注意:如果你还是不能远程连接,则继续执行下一步操作
2, 修改 mysql 配置文件
        sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
                修改其中的 bind-address 后面的 ip 值为 0.0.0.0 ,如下:
                        bind-address = 0.0.0.0
                保存修改,重启 mysql ,即可。命令如下 :
                        service mysql restart
                至此,即可通过远程 ip 登陆 mysql
以上步骤完成后就可以在主机安装 mysql 可视化操作工具了 , sqyog

SQL语句

简介

SQL Structured Query Language )结构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统
SQL 是在 1981 年由 IBM 公司推出,一经推出基于其简洁的语法在数据库中得到了广泛的应用,成为主流数据库的通用规范
SQL ANSI 组织确定规范
在不同的数据库产品中遵守 SQL 的通用规范,但是也对 SQL 有一些不同的改进,形成了一些数据库的专有指令
MySQL limit
SQLServer top
Oracle rownum

分类

根据 SQL 指令完成的数据库操作的不同,可以将 SQL 指令分为四类
数据存在表中 , 表是存储在数据库中 ,mysql 中可以有多个数据库表: 类似与 Execl
- DDL Data Definition Language )数据定义语言
- 用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改
- DML Data Manipulation Language )数据操作 / 操纵语言
- 用于完成对数据表中的数据的添加、删除、修改操作
- 添加:将数据存储到数据表
- 删除:将数据从数据表移除
- 修改:对数据表中的数据进行修改
- DQL Data Query Language )数据查询语言
- 用于将数据表中的数据查询出来
- DCL Data Control Language )数据控制语言
- 用于完成事务管理等控制性操作

基础语法

MySQL Command Line Client 或者 Navicat 等工具中都可以编写 SQL 指令
- SQL 指令不区分大小写
        但是在后期编写sql 指令时 ,sql 提供的关键字一般使用大写 , 自定义的名称用小写
- 每条 SQL 表达式结束之后都以 ; 结束
- SQL 关键字之间以空格进行分隔
- SQL 之间可以不限制换行(可以有空格的地方就可以有换行)
- MySQL 注释:
- 单行注释: -- 注释内容
注意 : -- 后要加空格
- 单行注释: # 注释内容
- 多行注释: /* 注释内容 */

DDL:数据定义语言

作用:用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改

数据库操作

查询数据库
- > 显示当前 mysql 中的数据库列表
> show databases;
- > 显示指定名称的数据的创建的 SQL 指令
> show create database 库名 ;
创建数据库
- > 创建数据库
> create database 库名 ;
- > 创建数据库,当指定名称的数据库不存在时执行创建
> create database if not exists 库名 ;
- > 在创建数据库的同时指定数据库的字符集(字符集:数据存储在数据库中采用的编码格
utf8 gbk
> CREATE DATABASE IF NOT EXISTS 库名 CHARSET 'utf8';
修改数据库字符集
- > 修改数据库的字符集
> alter database 库名 CHARSET 字符集 ;
删除数据库
- > 删除数据库
> drop database 库名 ;
- > 如果数据库存在则删除数据库
> drop database if exists 库名 ;
使用 / 切换数据库
use 库名 ;

数据表操作

创建完数据库之后,接下来就是在数据库中创建数据表。在 MySQL 中,数据表以二维表格的形式展示,表格中的一行代表一条完整的数据记录,表格中的一列代表数据的某个
特定属性。
需要注意:
在数据库中创建表之前,需要查看当前使用的数据库
语法: select database();
然后切换到你需要操作的数据库
use db_name;
建表
语法
create table 表名 ( 字段 1 字段类型 , 字段 2 字段类型 , ... 字段 n 字段类型 );
字段类型
int :整型
double :浮点型,例如 double(5,2) 表示最多 5 位,其中必须有 2 位小数,即最大值为
999.99
char :固定长度字符串类型;
char(10): 'aaa ' 10
varchar :可变长度字符串类型;
varchar(10): 'aaa' 3
text :字符串类型;
blob :字节类型;
date :日期类型,格式为: yyyy-MM-dd
time :时间类型,格式为: hh:mm:ss
timestamp :时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime: 日期时间类型 yyyy-MM-dd hh:mm:ss
boolean:mysql 不支持 ,oracle 支持
示例
创建一张存储学员信息的表 :stu
表中的字段有 :
        s_id 一条数据的唯一标识符 int primary key auto_increment
        s_name 学员姓名 varchar(30)
        s_sex 学员性别 varchar(10)
        s_age 学员年龄 int
        s_class 学员所在班级 varchar(50)
        s_num 学号 varchar(16)
        s_type 学员专业 varchar(50)
sql 语句
create table stu(
        s_id int primary key auto_increment,
        s_name varchar(30),
        s_sex varchar(10),
        s_age int,
        s_class varchar(50),
        s_num varchar(16),
        s_type varchar(50)
);
查看所有表
语法
SHOW TABLES;
重命名表
rename table 原表名 to 新表名 ;
查看表信息
语法
SHOW CREATE TABLE 表名 ;
修改字符集
语法
ALTER TABLE 表名 CHARACTER SET 修改后的字符集 ;
注意 : 一般使用 utf8( 就是 utf-8)
查表字段信息
语法
DESC 表名;
备份表
语法
create table 新表名 as select * from 要备份的表的名称 ;
:
create table tname2 as select * from tname1;
备份表结构
语法
create table 新表名 like 要备份的表的名称 ;
:
create table tname2 like tname1;
删除表
语法
DROP TABLE 表名 ;
添加列
语法
ALTER TABLE 表名 ADD 添加的列名 填加的列字段类型 ;
修改列
alter table 表名 modify 要修改的列名 修改后的字段类型 ;
删除列
alter table 表名 drop 列名 ;
注意 : 一次只能删一列
列重命名
ALTER TABLE 表名 CHANGE 原列名 新列名 新字段类型 ;

DML:数据操作语言

插入数据
作用 : 给表中添加数据
语法
insert into 表名 ( 列名 1, 列名 2....) values ( 1, 2....);
示例:
# 向数据表中指定的列添加数据(不允许为空的列必须提供数据)
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel)
values ( '20210101' , ' 张三 ' , ' ' , 21 , '13030303300' );
# 数据表名后的字段名列表顺序可以不与表中一致,但是 values 中值的顺序必须与表名
后字段名顺序对应
insert into stus(stu_num,stu_name,stu_age,stu_tel,stu_gender)
values ( '20210103' , ' 王五 ' , 20 , '13030303302' , ' ' );
# 当要向表中的所有列添加数据时,数据表名后面的字段列表可以省略,
# 但是 values 中的值的顺序要与数据表定义的字段保持一致 ;
insert into stus values ( '20210105' , ' 孙琦' , ' ' , 21 , '13030303304' , '666666' );
# 不过在项目开发中,即使要向所有列添加数据 , 也建议将列名的列表显式写出来 ( 增强
SQL 的稳定性 )
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq)
values ( '20210105' , ' 孙琦 ' , ' ' , 21 , '13030303304' , '666666' );
修改数据
语法:
update 表名 set 列名 1= 1 ,列名 2= 2 [ where 条件 ];
示例:
# 将学号为 20210105 的学生姓名修改为 孙七 (只修改一列)
update stus set stu_name= ' 孙七 ' where stu_num= '20210105' ;
# 将学号为 20210103 的学生 性别修改为 ”, 同时将 QQ 修改为 777777 (修改多列)
update stus set stu_gender= ' ' ,stu_qq= '777777' where
stu_num= '20210103' ;
# 根据主键修改其他所有列
update stus set stu_name= ' 韩梅
' ,stu_gender= ' ' ,stu_age= 18 ,stu_tel= '13131313311' ,stu_qq= '999999'
where stu_num= '20210102' ;
# 如果 update 语句没有 where 子句,则表示修改当前表中所有行(记录)
update stus set stu_name= 'Tom' ;
删除数据
语法:
delete from 表名 [where 条件 ];
示例:
# 删除学号为 20210102 的学生信息
delete from stus where stu_num= '20210102' ;
# 删除年龄大于 20 岁的学生信息 ( 如果满足 where 子句的记录有多条,则删除多条记录 )
delete from stus where stu_age> 20 ;
# 如果删除语句没有 where 子句,则表示删除当前数据表中的所有记录 ( 敏感操作 )
delete from stus;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux篇:信号

一、信号的概念: ①进程必须识别能够处理信号,信号没有产生,也要具备处理信号的能力---信号的处理能力属于进程内置功能的一部分 ②进程即便是没有收到信号,也能知道哪些信号该怎么处理。 ③当进程真的受到了一个具体的信号的时候…

猫粮哪个牌子质量好性价比高?分享十款主食冻干猫粮品牌排行榜!

一款好的、健康的主粮对猫整体有很大的提升,主食作为猫的日常饮食,直接关乎着小猫是否能摄入充分的营养,达到最佳的理想状态,因此对于每一位铲屎官来说,主食选得好不好至关重要。面对种类众多的主食,很多人…

c/c++ 结构体、联合体、枚举

结构体 结构体内存对齐规则: 1、结构体的第一个成员对齐到结构体变量起始位置偏移量为0的地址处 2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 对齐数:编译器默认的一个对齐数与该成员变量大小的较小值。 vs 中…

编程实际应用实例:洗车店会员管理系统操作教程

一、前言 洗车店在会员管理有时候需要一卡多用,基本也不需要做卡,直接报手机号或车牌号即可完成电子会员卡录入。 下面以 佳易王洗车店会员管理系统软件为例说明, 软件试用版下载或技术支持可以点击下方的官网卡片 如图:这个卡…

【教程】Autojs脚本实现暂停和超时重启功能的思路和示例代码

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 autojs本身不支持暂停脚本,现有网上大部分最直接的做法就是在每条语句后面添加检查是否暂停。当脚本功能和代码量非常打的时候,每一条语句后面都加检测,未免不太现实。…

RFID技术在物流仓储解决方案中的应用

行业现状 当前市场竞争日益激烈,提高生产效率、降低运营成本对企业至关重要。仓库和物流管理在各行业中广泛应用。建立完善的仓库管理流程,提高仓库周转率,减少资金占用,实现资产变现,降低仓库淘汰成本,是…

c++面经总结

C基础语法 C和c的区别 c中new和delete是对内存分配的运算符,取代了c中的malloc和free 标准c中的字符串类取代了标准c函数库头文件中的字符数组处理函数(c中没有字符串类型). 在c中,允许有相同的函数名,不过他们的参数类型不能完全相同&…

【状态机FSM 序列检测 饮料机_2023.12.1】

同步状态机 概念 同步状态机(同一脉冲边沿触发):有限个离散状态及某状之间的转移 异步状态机无法综合 分类 Moore状态机 只和状态有关,与输入无关 Mealy状态机 和状态和输入都有关 Mealy型比Moore型少一个状态 结构 由状态寄…

Tomcat从认识安装到详细使用

文章目录 一.什么是Tomact?二.Tomcat的安装1.下载安装包2.一键下载3.打开Tomcat进行测试4.解决Tomcat中文服务器乱码 三.Tomcat基本使用1.启动与关闭Tomcat2.Tomcat部署项目与浏览器访问项目 四.Tomcat操作中的常见问题1.启动Tomcat后,启动窗口一闪而过&#xff1f…

排序 | 冒泡插入希尔选择堆快排归并计数排序

排序 | 冒泡插入希尔选择堆快排归并计数排序 文章目录 排序 | 冒泡插入希尔选择堆快排归并计数排序冒泡排序插入排序希尔排序选择排序堆排序快速排序--交换排序三数取中快速排序hoare版本快速排序挖坑法快速排序前后指针法 快速排序--非递归实现归并排序归并排序非递归实现非比…

【AutoDL】使用云服务器跑深度学习代码

一、AutoDL租用服务器 1.选用服务器 1.算力市场 租用服务器,选择自己心仪的服务器 2.镜像 可以选择一些基础的镜像,社区镜像里是git上有的环境。 3.上传文件 在文件存储中,选择上传的区,在右边点击上传,选择自己的文…

Dockerfile创建镜像LNMP+WordPress

目录 实验部署 nginx 配置mysql 配置php 实验部署 INMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php nginx 关闭防火墙和安全机制在opt目录创建nginx MySQL php目录 cd nginx mysql php vim Dockerfile#声…

Arduino中读取SD卡文本文件数据

1、硬件 2、代码 #include <SD.h> #include <SPI.h> // needed for Arduino versions later than 0018const long _1000msTime 1000; // 1000 milli seconds unsigned long _1000msLastTime;File myFile; int date; int Lastdate; String strDate;//…

YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野

💡💡💡本文自研创新改进:SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积,使SPPF增加大kernel,提升感受野,最终提升检测精度 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?(二)

接上一篇文章垃圾回收 (GC) 在 .NET Core 中是如何工作的&#xff1f;-CSDN博客 GC 会分配堆段&#xff0c;其中每个段都是一系列连续的内存。 置于堆中的对象归类为 3 个代系之一&#xff1a;0、1 或 2。 代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。 编号…

【亚马逊云科技】使用Vscode Amazon-Q完成GUI界面粉笔脚本开发

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前言 亚马逊云科技-Q&#xff0c;可以快速获得紧迫问题的相关答案&#xff0c;解决问题…

生物信息学分析领域领先的特制语言环境NGLess(Next Generation Less)介绍、安装配置和详细使用方法

介绍 NGLess&#xff08;Next Generation Less&#xff09;是一种用于生物信息学分析的领先的领域特定语言&#xff08;DSL&#xff09;。它旨在简化和加速NGS&#xff08;Next Generation Sequencing&#xff09;数据的分析过程。NGLess具有清晰的语法和功能&#xff0c;使用户…

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

[Unity]关于Unity接入Appsflyer并且打点支付

首先需要去官方下载Appsflyer的UnityPackage 链接在这afPackage 然后导入 导入完成 引入此段代码 using AppsFlyerSDK; using System.Collections; using System.Collections.Generic; using UnityEngine;public class AppflysManager : MonoBehaviour {public static App…

测试总监给我分享的《接口自动化测试》总结,让我成功的入门接口自动化门槛......

前两天在测试技术交流群里&#xff0c;听了一位字节跳动的测试总监分享的接口自动化测试的内容&#xff0c;对接口自动化更加了解了&#xff0c;也为自己接下来在公司实施接口自动化项目提供了思路。 前言 自动化测试&#xff0c;算是近几年比较火热的一个话题&#xff0c;当…