Mysql数据库的初体验

news2024/11/17 9:41:43

数据库管理系统是一个由因相互关联的数据的集合和一组用访问这些数据的程序组成,这个数据集合通常称作数据库,其中包含了关于某个企业的信息。DBMS的主要目标就是提供一种可以方便高效的存取数据库信息的途径。

一、数据库的基本概念

1.数据库的组成

①.数据(Date):

描述事物的符号记录
包括数字,文字、图形,图像、声音、档案记录等
以“记录”形式按统一的格式进行储存
相同格式和类型的数据统一存放在一起,而不会把"人”和"书"混在一起存储。这样,数据的存储就能够井然有序。

数据如何保存:

最外层是mysql服务—》mysql数据库—》数据表—》记录为行,字段为列—>数据保存在一行行记录中
②.表:

将不同的记录组织在一起
用来储存具体数据
记录:行
字段(属性):列
以 行+列 的形式就组成了表(数据存储在表中)

关系数据库的表由记录组成,记录由字段组成,字段由字符或数字组成。它可以供各种用户共享,具有最小冗余度和较高的数据独立性,它是统一管理的相关数据的集合。

③.数据库

表的集合,是存储数据的仓库,​以一定的组织方式存储的相互有关的数据集合

2.数据库的管理系统(DBMS)

是实现对数据库资源有效组织、管理和存取的系统软件,在操作系统的支持下,支持用户对数据库的各项操作

DBMS主要包括以下功能:

  1. 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能。
  2. 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出。
  3. 数据操纵功能:包括数据查询统计和数据更新两个方面。
  4. 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能。
  5. 通信功能: DBMS 与其他软件系统之间的通信,如Access能与其他office组件进行数据交换。
     

3.数据库系统(DBS)

  • ​是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
  • ​用户可以通过DBMS或应用程序操作数据库​

4. DBMS的工作模式

  

 

  1. 接受应用程序的数据请求和处理请求
  2. 将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
  3. 实现对数据库的操作
  4. 从数据库的操作中接受查询结果
  5. 对查询结果进行处理(格式转换)
  6. 将处理结果返回给用户

二、数据库的发展史

1.第一代数据库(人工管理)

  1. 自20世纪60年代起,第一代数据库系统问世
  2. 是层次模型与网状模型的数据库系统
  3. 为统一管理和共享数据提供了有力的支撑

2.第二代数据库(文件管理)

  1. 20世纪70年代初,第二代数据库——关系数据库开始出现
  2. 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
  3. 到目前为止,关系数据库系统仍占领数据库应用的主要地位

3.第三代数据库(数据库系统管理)

  1.  自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现 
  2. 面向对象的数据库系统,实用性强、适应面广 
  3. 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面 
  4. 一些新的元素被添加进主流数据库系统中;例如,Oracle支持的“关系对缘

三、当今主流的数据库

 SQL Server (微软公司产品)

  • 面向Windows操作系统
  • ​简单、易用​

​Oracle (甲骨文公司产品)

  • 面向所有主流平台
  • 安全、完善、操作复杂

DB2 (IBM公司产品)

  • 面向所有主流平台
  • 大型、安全、完善

MySQL (甲骨文公司收购)

  • ​免费、开源、体积小​

四、关系型数据库与非关系型数据库 

1.关系型数据库

关系数据库系统是基于关系模型的数据库系统​;关系模型的数据结构使用简单易懂的二维数据表​

  • 每一行称为一条记录,用来描述一个对象的信息
  • 每一列称为一个字段,用来描述对象的一个属性

关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL 

2.非关系型数据库

 非关系型的数据库有以下常见的几个种类:

      缓存性数据库: redis     Memcache

      索引型数据库:  ES(Elasttic search)

      时序型数据库:Prometheus

       文档型数据库:MongoDB

非关系型数据库:是键对值的存储结构(key ——————>   VALUE) 

优点:可高并发读写,对海量数据依旧保持着高效率的存储和访问,具有高扩展性和高可用性

  

五、源码编译和yum安装mysql

1.源码编译安装

 
 
---------------安装环境包-----------------
 
确认安装 gcc 、 gcc-c++ 、make、cmake 
ncurses-devel、(字符终端屏幕控制基本库)
bison、(语法分析器)
libaio-devel (支持同步I/O)的软件包
yum -y install gcc gcc-c++ make ncurses ncurses-devel bison cmake libaio-devel
yum install autoconf -y     ####安装5.6版本是需要安装autoconf库
 
---------------添 加mysql用户并加入到mysql组----------------
 
useradd  -s /sbin/nologin mysql
mkdir -p /usr/local/mysql
 
tar zxvf mysql-5.5.24.tar.gz -C /opt/
 
cd   mysql-5.5.24
 
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/home/mysql \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306                               
 
指定安装路径
指定家目录  sock 数据库连接文件
指定字符集
指定字符编码
扩展性的字符集 支持其他的字符集
开启各种功能的存储引擎机
存储引擎机
存储引擎机
支持readline程序平台 读取数据按行读取,一行是一个对象
本地写入文件,方便导入导出
数据库的家目录  数据库存放的路径
指定管理用户和端口号
 
make -j 2 && make install  
 
------如果报错,清空缓存文件-如果正常可忽略-------
find -name CMakeCache.txt
rm -f ./CMakeCache.txt                          
---------------------------------
 
chown -R mysql:mysql /usr/local/mysql     
 
 
 
export PATH=$PATH:/usr/local/mysql/bin/   \*开机时刷新*\          
 
或者可选择vi /etc/profile 在最后一行加入后 运行source /etc/profile 
 
cp support-files/my-medium.cnf /etc/my.cnf                  
或
cp support-files/my-default.cnf /etc/my.cnf
 
cp support-files/mysql.server /etc/init.d/mysqld              
 
chmod 755 /etc/init.d/mysqld                             
chkconfig --add /etc/init.d/mysqld                      
chkconfig mysqld --level 35 on                                  
 
--------------初始化数据库------------------------------------------------
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
 
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock           /*直接建立软连接*/
 
vi /etc/init.d/mysqld      #####46行和47行添加
basedir=/usr/local/mysql
datadir=/home/mysql
 
service mysqld start
netstat -tnl 3306
mysql    #####初始登录mysql
grant all privileges on *.* to 'root'@'%' identified by 'abc123';    ### ##授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限。
 
 
#数据库密码设置
mysqladmin -u root password "abc123"
---------------------------------------------------------------
mysql -u root  -p  
abc123
mysql>show databases;

2.yum安装mysql5.7

1. #创建mysql安装包的在线源
 cd /etc/yum.repos.d/
 vim mysql.repo
 [mysql]
 name=mysql5.7
 baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
 gpgcheck=0
  
 2. #安装服务mysql-community-server
 yum -y install mysql-community-server
  
 3. #启动服务
 systemctl start mysqld
 ss -ntap |grep 3306
  
 4. #此时无法使用mysql命令直接登入数据库。需要查看本地root用户的默认密码,使用密码登录。
 grep password /var/log/mysqld.log    #查看默认密码
 mysql -u root -p'34/Jeoiq0fZb'       #使用密码登录,特殊符号用单引号引起来
  
 5. #登入数据库后必须修改密码。
 mysql> alter user root@'localhost' identified by 'abc123';
 ​
 #为保证安全,密码的复杂性要足够,需要包含英文字母大小写、数字和特殊字符。
 ​
 #可以使用"\h;"查看帮助
 

 六、常用数据库类型

类型名称含义
tinyint(n)1个字节,范围(-128~127)
smallint(n)2个字节,范围(-32768~32767)
mediumint(n)3个字节,范围(-8388608~8388607)
int(n)4个字节(32个比特位),整数型,范围(-2147483648~2147483647)
bigint(n)8个字节,整数型,范围(+-9.22*10的18次方)
float(m,d)单精度浮点,8位精度,4字节32位。m数字总个数,d小数位
double(m,d)双精度浮点,16位精度,8字节64位 。m总个数,d小数位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位(例如123.56)

重点了解:char与varchar的区别 

  

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。  

字节大小:

  • char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
  • varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。

优劣比较:

  • varchar比char节省磁盘空间。
  • 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,e而varchar在多次增删改查中会产生一些磁盘空间碎片

七、mysql的数据库结构 

1.查看表信息

#格式:use 库名
mysql> use mysql;
 
mysql> show  tables;

   

#格式:  show tables  from 库名
 
 
mysql> show tables from mysql;

   

 2.直接查看表结构

 DESCRIBE [数据库名.]表名;
 可缩写成:DESC 数据库名.表名;

3.SQL语句

关系型数据库,都是使用SQL语句来管理数据库中的数据。

SQL,即结构化查询语言(Structured Query Language) 。

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

1)SQL中的名词介绍

  • 数据库:database
  • 表:table,行:row 列:column
  • 索引:index
  • 视图:view
  • 存储过程:procedure
  • 存储函数:function
  • 触发器:trigger
  • 事件调度器:event scheduler,任务计划
  • 用户:user
  • 权限:privilege

 2)SQL语言规范

  • 在数据库系统中,SQL 语句不区分大小写,建议用大写。
  • SQL语句可单行或多行书写,默认以 " ; " 结尾。
  • 关键词不能跨多行或简写。
  • 用空格和TAB 缩进来提高语句的可读性。
  • 子句通常位于独立行,便于编辑,提高可读性。

数据库对象和命名:
    数据库的组件(对象):

    数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等。

    命名规则:

  • 必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
  • 不要使用MySQL的保留字,如table、select、show、databases。
  • 数据库名、表名、用户名区分大小

3)SQL语言分类 

1、DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。

例如:CREATE,DROP,ALTER 等。

2、DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。

例如: SELECT、UPDATE、INSERT、DELETE 等。

3、DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。

例如: SELECT

4、DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限

例如: GRANT,REVOKE

5、TCL:事务控制语言(Transaction Control Language),用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。

八、数据库基本增删改查命令

1.创建数据库及数据库表

CREATE DATABASE 数据库名;

   

 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]);

  

2.插入数据

1) 指定字段插入数据

 
 ​
#为指定字段插入值
 INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);    #注意字段的属性not null,则必须为该字段插入值
 

  

3)直接 按照字段顺序插入数据

为所有字段插入值
 insert into 表名 values (所有字段的值);   #每个字段值用逗号相隔;

  

  

 3.查找数据表中的数据

 SELECT * FROM 表名;      #查询表中所有记录
 ​
 #按条件查找数据记录,且只显示指定字段的值
 SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
 ​
 #mysql的分页语句:
 select * from 表名 limit 2; 
 select * from 表名 limit 2,3;       #显示第2行后的前3行(即显示第3~5行)
 

  

4.修改表中数据

修改时:建议指定的条件表达式为主键,主键具有唯一性,避免错改 

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

  

  

5.删除表中数据

 DELETE FROM 表名 [WHERE 条件表达式];     #删除一定要加条件,不然会删除整个表

   

6.删除指定表

DROP TABLE 数据库名.表名;
或
USE 库名;
DROP TABLE 表名;

     

7.删除指定库

DROP DATABASE 数据库名;

 

8.修改表名

 ALTER TABLE 旧表名 RENAME 新表名

   

1)扩展表结构 

 ALTER TABLE 表名 ADD 字段名 数据类型;

  

  

九、Mysql中常见约束

  • 主键约束(primary key) PK

主键具有唯一性,不可重复性,不可为空的特点。一般用于删除,查询时条件语句的条件。主键在一张表中只能有一个

  • 自增长约束(auto_increment)

该约束针对于整数类型的字段,当插入该字段数据为空时,系统会根据上一个数,自动加1

  • 非空约束(not null)

该约束到字段后,该字段中的数据插入不能为空

  • 唯一性约束(unique)

该约束添加后,该字段的数据每行均为唯一的,不可重复。唯一性约束可以在一张表中有多个

  • 默认值约束(default)

默认值约束,为该字段设置初始值,如果没有为该字段插入数据,就为初始值

  • 零填充约束(zerofill)

零填充针对整数型的字段,例如int默认为11位,除了填写的数字以外其他用零填充

  • 外键约束(foreign key)FK

外键约束,至少将两张表进行关联。我们将这两张表分为主表和从表,主表的主键作为从表的外键。增加数据时,先进行主表操作,如果增加的数据外键值在主表中没有,就要先在主表中添加。

若进行删除操作,就要先进行从表操作,只要将从表有关主表(主键值)全部清除后,才能清除该主表的主键值

十、总结

1.查看数据库和表:

show databases;

use 库名;

show tables;

desc 表名;

desc 表名\G

show  table 表名;

2.创建及删除数据库和表:

create database 库名;

create table 表名(字段1 数据类型 [属性], 字段2 .....);

DROP TABLE [数据库名.]表名;

DROP DATABASE 数据库名;

3.表数据的增删改查:

insert into 表名 values (所有字段的值);

insert into 表名 (指定字段名称) values(字段的值);

delete from 表名 [where ...];

update 表名 set 字段=值[, 字段2=....] [where ...];

select 字段1[,字段2....] from 表名 [where ...];

select * from 表名;

主键
主键:primary key    特点:具有唯一性和不可复用性。通常作为条件表达式用于查询,删除,修改的条件

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

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

相关文章

一文让你了解appium自动化的工作原理

目录 前言: 一、Appium加载的过程图解 二、初步认识appium工作过程 三、bootstrap介绍 四、所使用的技术 五、Capabilities 六、自我理解的工作原理 前言: Appium是一个流行的开源自动化测试框架,支持移动应用程序的自动化测试。 一…

Varnish开源HTTP反向代理缓存服务器

第三阶段基础 时 间:2023年6月13日 参加人:全班人员 内 容: Varnish 目录 Varnish 端口号:TCP/6081 TCP/6082 配置文件:/etc/varnish/default.vcl 安装部署: 测试功能: Varnish V…

6月14日晚 19:00公开课直播 | 入门必看:40min 掌握低代码基础功能

大家好,新一期「ONEIN 公开课」要和大家见面啦! Onein 公开课介绍 Onein 公开课,是万应低代码开设的直播课堂,专注低代码领域,希望帮助每一位用户更好的使用万应低代码。 随着低代码的兴起,低代码这一名词…

从小白到大神之路之学习运维第39天---第三阶段---MongoDB非关系型数据库(概述、安装、设置管理员、简单操作、配置文件说明,备份和还原)

第三阶段基础 时 间:2023年6月13日 参加人:全班人员 内 容: 目录 MongoDB概述 端口号:TCP/27017 配置文件:/etc/mongod.conf MongoDb安装部署 MongoDB设置密码 MongoDB操作命令与说明 配置文件说明 备份操作 1. 热备…

chatgpt赋能python:Python怎么居中对齐

Python怎么居中对齐 在Python中,输出对齐是一项基本功能。当我们想要打印表格或美化输出时,居中对齐是一个常见的要求。本文将介绍如何使用Python进行居中对齐,以及一些相关的技术和应用。 如何居中对齐? 要在Python中实现居中…

TypeScript知识汇总

一、ts简介 1、什么是ts 2、ts增加了什么 二、TypeScript开发环境搭建 注:如果npm i运行报错,需要以管理员身份运行一次,以上主要就是tsc xxx.ts 三、ts的基本类型——ts相当于是给js可以指定类型 //number、string、boolean等常用类型&am…

[游戏开发][Unreal]项目启动

新建项目时会有 [项目名].uproject文件,鼠标右键该文件点击Switch Unreal Engine version 如果你的 [项目名].uproject文件是个纯白的图标,证明没有关联到Unreal,该怎么办呢 使用搜索工具搜UnrealVersionSelector.exe 或者直接去你的UE5安装目…

在华为外包待了3年,我秃了,但没变强...

我25岁,中级测试,外包,薪资13.5k,人在上海。内卷什么的就不说了,而且人在外包那些高级精英年薪大几十的咱也接触不到,就说说外包吧。 假设以我为界限,25岁一线城市13.5k,那22-24大部…

J.A.Woollam光谱型椭偏仪电源维修M-2000XI

M-2000系列光谱椭圆仪是为满足薄膜表征的需求而设计的。RCE技术结合了旋转补偿器椭圆仪和CCD检测,在几分之一秒内收集整个光谱(数百个波长),并有多种配置。擅长于从原位监测和过程控制到大面积均匀性绘图和通用薄膜表征的椭偏仪。…

mac m1(arm)安装brew(Homebrew)

安装 使用国内脚本安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装完成后使用brew安装tcping试试 brew install tcping发现报错 Error: Cannot install in Homebrew on ARM processor in Intel default prefi…

应急指挥调度系统之指挥中心是由什么构成的

应急指挥调度系统是应急管理的重要组成部分,而指挥中心则是应急指挥系统的控制中枢,可以说是应急指挥调度系统体系中的大脑,应急管理中的所有应急指令都会从指挥中心发出,作为应急指挥系统的控制中枢,应急指挥调度系统…

5款国产优质软件,满足工作效率提升需求,你值得拥有

不少人对国产软件的印象,还停留在各种弹窗、各种捆绑,想要提升工作效率,只能使用国外的软件。今天给大家分享5款国产优质软件,不仅没有各种弹窗、捆绑,还能满足工作效率提升需求。 亿图脑图MindMaster MindMaster是一款…

聊聊如何利用服务定位器模式按需返回我们需要的服务实例

前言 什么是服务定位器模式 服务定位器是一个了解如何提供各种应用所需的服务(或组件)的对象。在服务定位器中,每个服务(或组件)都只有一个单独的实例,并通过ID 唯一地标识。 用这个 ID 就能从服务定位器中…

JVM 调优分析 如何进行JVM调优

文章目录 1.为什么需要进行JVM调优?2.什么情况下可能需要JVM调优3.JVM调优参数4.JVM调优参数设置参考5.JVM内部结构1. 类加载器(Class Loader)2. 运行时数据区(Runtime Data Area)3. 垃圾收集器(Garbage Co…

css常见布局方式

css常见布局方式 0、前言1、两栏布局1.1 浮动 margin1.2 浮动 BFC(overflow: hidden)1.3 定位 margin-left1.4 给父容器设置flex布局,左盒子固定宽度,然后给右子元素设置 flex: 1。1.5 table布局 2、三栏布局2.1 float布局2.2 …

小红书数据分析:流量手到擒来,热点创作大解密!

年中大促618接近尾声,对小红书来说,这次的“反向”营销博得满堂彩。 为了呼吁大家不要冲动消费,线下举办了“反冲动俱乐部”活动,以“365天无理由退货”、“退货的商品可兑换成小红书现金券”等玩法在一众促销信息中呈现差异化内…

如何从Prometheus单独提取个别数据持久化到InfluxDB

背景 首先解释一个问题,为什么会选择让InfluxDB来持久化Prometheus的数据,直接存在Prometheus中不行吗?下面是Claude的回答,我来总结一下: 1)InfluxDB提供了更强大的Flux查询语言,比如提供了复…

长鑫存储面试(部分)

你平时写代码时,如何保证代码可靠、可复用、可扩展、可维护?有总结经验吗,请举例说明。参考答案 by newBing: 编写文档:编写文档是保证代码可维护性的重要手段。文档应该包括代码的设计思路、实现细节、使用方法等。 遵…

NeRF系列(2):NeRF in the wild : Neural Radiance Fields for Unconstrained Photo Collections论文解读与公式推导

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections 论文:https://openaccess.thecvf.com/content/CVPR2021/papers/Martin-Brualla_NeRF_in_the_Wild_Neural_Radiance_Fields_for_Unconstrained_Photo_CVPR_2021_paper.pdfhttps://op…

pyspark安装教程

pyspark安装教程 一、Windows下配置pyspark环境1.1 JDK下载安装1.2 Scala下载安装1.3 spark下载安装1.4 Hadoop下载安装1.5 pyspark下载安装 二、pyspark原理简介 一、Windows下配置pyspark环境 在python中使用pyspark并不是单纯的导入pyspark包就可以实现的,而是需…