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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—459.重复的子字符串【简单】

2023每日刷题(五十九) Leetcode—459.重复的子字符串 算法思想 巧解的算法思想 实现代码 从第一个位置开始到s.size()之前,看s字符串是否是ss的子串 class Solution { public:bool repeatedSubstringPattern(string s) {return (s s).fin…

西南科技大学数字电子技术实验七(4行串行累加器设计及FPGA实现)FPGA部分

一、实验目的 1、掌握基于Verilog语言的diamond工具设计全流程。 2、熟悉、应用Verilog HDL描述数字电路。 3、掌握Verilog HDL的组合和时序逻辑电路的设计方法。 4、掌握“小脚丫”开发板的使用方法。 二、实验原理 三、程序清单(每条语句必须包括注释或在开发…

【产品应用】一体化伺服电机在TO全自动封焊机中的应用

随着科技的飞速发展,自动化设备在各行各业中的应用越来越广泛。在电子制造领域,封焊机是关键设备之一,其性能直接影响产品的质量和产量。近年来,一体化伺服电机在TO全自动封焊机中的应用逐渐受到关注。本文将详细介绍一体化伺服电…

用Rust帮Python加加速

背景 长期以来,Python由于易上手,有GC且生态强大等特点被广泛使用,可是渐渐的人们也发现了它的不足,解释型语言的运行速度终究比不过编译型,况且由于Python设计时的动态数据类型一切皆对象(内存都分配在堆上)等思想,也导致了运行速度缓慢. 随着实时性要求的不断提升,在一些计…

Windows下使用CMake编译lua

Lua 是一个功能强大、高效、轻量级、可嵌入的脚本语言。它支持程序编程、面向对象程序设计、函数式编程、数据驱动编程和数据描述。 Lua的官方网站上只提供了源码,需要使用Make进行编译,具体的编译方法为 curl -R -O http://www.lua.org/ftp/lua-5.4.6.…

Android取消深色适配

从Android10(API 29)开始,在原有的主题适配的基础上,Google开始提供了Force Dark机制,在系统底层直接对颜色和图片进行转换处理,原生支持深色模式。当系统设置深色主题背景或者进入省电模式情况下会进入深色…

【docker】docker入门与安装

Docker 一、入门 Docker的主要目标是:Build, Ship and Run Any App, Anywhere,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能做到一次镜像,处处运行。 Docker运行速度快的原因 Docker有比虚拟…

使用ROS模板基于ECS和RDS创建WordPress环境

本文教程介绍如何使用ROS模板基于ECS和RDS(Relational Database Service)创建WordPress环境。 前提条件 如果您是首次使用ROS,必须先开通ROS服务。ROS服务免费,开通服务不会产生任何费用。 背景信息 WordPress是使用PHP语言开…

算法通关村第十三关—数论问题(黄金)

数论问题 一、辗转相除法 辗转相除法又叫做欧几里得算法,是公元前300年左右的希腊数学家欧几里得在他的著作《几何原本》提出的。最大公约数(greatest common divisor,简写为gcd),是指几个数的共有的因数之中最大的一个,例如8和12的最大公因数是4&#…

+0和不+0的性能差异

前几日&#xff0c;有群友转发了某位技术大佬的weibo。并在群里询问如下两个函数哪个执行的速度比较快&#xff08;weibo内容&#xff09;。 func g(n int, ch chan<- int) {r : 0for i : 0; i < n; i {r i}ch <- r 0 }func f(n int, ch chan<- int) {r : 0for …

ubuntu解决问题:E: Unable to locate package manpages-posix-dev

sudo apt-get install manpages-posix-dev 想要在ubuntu里面安装manpages-posix-dev这个包&#xff0c;发现弹出错误 E: Unable to locate package manpages-posix-dev 解决方法如下&#xff1a; 1 查看当前ubuntu的版本 abhishekitsfoss:~$ lsb_release -a No LSB module…

基于node 安装express后端脚手架

1.首先创建文件件 2.在文件夹内打开终端 npm init 3.安装express: npm install -g express-generator注意的地方&#xff1a;这个时候安装特别慢,最后导致不成功 解决方法&#xff1a;npm config set registry http://registry.npm.taobao.org/ 4.依次执行 npm install -g ex…

CSS新手入门笔记整理:元素类型相互转换

元素类型 块元素&#xff08;block&#xff09; 独占一行&#xff0c;排斥其他元素跟其位于同一行&#xff0c;包括块元素和行内元素。块元素内部可以容纳其他块元素和行内元素。可以定义 width&#xff0c;也可以定义 height。可以定义 4 个方向的 margin。 行内元素&#xf…

格式工厂功能详解!!

格式工厂&#xff08;Format Factory&#xff09;是由上海格诗网络科技有限公司创立于2008年2月&#xff0c;是面向全球用户的互联网软件。 下载地址https://www.onlinedown.net/soft/64717.htm&#xff1a; 该软件的主打产品“格式工厂”发展以来&#xff0c;已经成为全球领…

为什么越来越多的人从事软件测试行业?

1.市场需求增加&#xff1a;随着数字化转型和互联网的普及&#xff0c;各行各业都需要高质量、稳定可靠的软件来支持其业务运作。因此&#xff0c;对软件测试人员的需求也随之增加。同时&#xff0c;新兴技术的发展&#xff0c;如物联网、大数据、区块链、人工智能等&#xff0…

VR全景技术对房产行业有什么好处,如何帮助展示户型

引言&#xff1a; 随着科技的飞速发展&#xff0c;VR全景技术逐渐走入我们的生活&#xff0c;为我们带来了前所未有的沉浸式体验。在房产行业&#xff0c;VR全景技术正逐渐改变传统的户型和样板间展示方式&#xff0c;为购房者带来更为直观、真实的购房体验。 一、VR全景技术在…

如何在 Eolink Apikit 中发起 TCP/UDP 文档测试

TCP/UDP 是两种常用的网络传输协议。TCP 协议提供可靠的连接&#xff0c;而 UDP 协议提供不可靠的连接。 TCP 协议是面向连接的协议&#xff0c;在建立连接之前&#xff0c;客户端和服务器需要先握手。握手完成后&#xff0c;客户端和服务器之间就会建立一个可靠的连接。在连接…

方案分享:如何做好云中的DDoS防御?

所有企业都会有遭受DDoS攻击的风险。由于目前DDoS即服务&#xff08;DaaS&#xff09;的售价低廉&#xff0c;因此对于恶意攻击者来说&#xff0c;发起攻击比以往任何时候都更加容易&#xff0c;技术门槛也更低。分析公司IDC一项关于DDoS防御的调查显示&#xff0c;超过50%的IT…

RocketMQ源码 Broker-ConsumerFilterManager 消费者数据过滤管理组件源码分析

前言 ConsumerFilterManager 继承了ConfigManager配置管理组件&#xff0c;拥有将内存数据持久化到磁盘文件consumerFilter.json的能力。它主要负责&#xff0c;对在消费者拉取消息时&#xff0c;进行消息数据过滤&#xff0c;且只针对使用表达式过滤的消费者有效。 源码版本&…

README

spark基础入门 环境搭建 localstandlonespark ha spark code spark corespark sqlspark streaming 环境搭建 准备工作 创建安装目录 mkdir /opt/soft cd /opt/soft下载scala wget https://downloads.lightbend.com/scala/2.13.12/scala-2.13.12.tgz -P /opt/soft解压scala…