MySQL数据库——初步安装与数据表结构数据管理

news2024/12/24 0:42:03

MySQL数据库——初步安装与数据表结构数据管理

  • 一、数据库的基本概念
      • 1.数据库基本常识
      • 2.数据库系统发展史
  • 二、数据库的分类
      • 1.关系数据库(SQL)
      • 2.非关系数据库(NO SQL)
  • 三、mysql的数据类型
      • 1.常用的数据库类型
      • 2.char与varchar的区别
  • 四、mysql的数据库结构
      • 1.查看库信息
      • 2.查看数据库中包含的表
      • 3.查看表的结构(字段)
  • 五、SQL语句
      • 1.SQL中的名词介绍
      • 2.SQL语言规范
      • 3.数据库的组件(对象)
      • 4.命名规则
      • 5.SQL语言分类
  • 六、Mysql数据库基本的增删改查命令
      • 1.创建及删除数据库和表
      • 2.管理表中的数据记录
      • 3.修改表名和表结构
  • 七、数据表高级操作
      • 1.克隆表,将数据表的数据记录生成到新的表中
      • 2.清空表,删除表内的所有数据
      • 3.创建临时表
      • 4.创建外键约束,保证数据的完整性和一致性

一、数据库的基本概念

1.数据库基本常识

  • 数据(Data)
    描述事物的符号记录
    包括数字,文字,图形,图像,声音,档案记录等
    以"记录"形式按统一的格式进行存储


  • 将不同的记录组织在一起
    用来存储具体数据

  • 数据库
    表的集合,是存储数据的仓库
    以一定的组织方式存储的相互有关的数据集合
    是按照数据结构来组织、存储和管理数据的仓库

  • 数据库管理系统(DBMS)
    是实现对数据库资源有效组织、管理和存取的系统软件
    数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能

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

2.数据库系统发展史

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

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

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

二、数据库的分类

随着时代的发展,当今数据库可分为两大类:关系数据库(SQL)和非关系数据库(NO SQL)两大类 。

1.关系数据库(SQL)

关系数据库的存储结构是二维表格 ,表是有行和列。行称为记录,是用来描述一个对象的信息。列称为字段,是用来描述对象的一个属性
关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL

2.非关系数据库(NO SQL)

非关系型的数据库有以下常见的几个种类:
缓存性数据库: redis Memcache
索引型数据库: ES(Elasttic search)
文档型数据库:MongoDB

非关系型数据库:是键对值的存储结构(key ——————> VALUE)
优点:可高并发读写,对海量数据依旧保持着高效率的存储和访问,具有高扩展性和高可用性

三、mysql的数据类型

1.常用的数据库类型

类型名称含义
int4个字节(32个比特位),整数型,范围(-2147483648~2147483647)
float单精度浮点,8位精度,4字节32位。m数字总个数,d小数位
double双精度浮点,16位精度,8字节64位 。m总个数,d小数位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位

2.char与varchar的区别

CHAR(4)存储需求VARCHAR(4)存储需求
‘’’ ’4个字节‘’1个字节
‘ab’'ab ’4个字节'ab ’3个字节
‘abcd’‘abcd’4个字节‘abcd’5个字节
‘abcdefgh’‘abcd’4个字节‘abcd’5个字节

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

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

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

四、mysql的数据库结构

大小写不区分,分号“;”表示结束

1.查看库信息

SHOW DATABASES;	

在这里插入图片描述

2.查看数据库中包含的表

USE 数据库名;
SHOW TABLES;

在这里插入图片描述

3.查看表的结构(字段)

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

在这里插入图片描述

五、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 缩进来提高语句的可读性。
子句通常位于独立行,便于编辑,提高可读性。

3.数据库的组件(对象)

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

4.命名规则

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

5.SQL语言分类

SQL语言说明示例
DDL:数据定义语言(Data Definition Language)用于创建数据库对象,如库、表、索引等。CREATE,DROP,ALTER 等。
DML:数据操纵语言(Data Manipulation Language)用于对表中的数据进行管理。SELECT、UPDATE、INSERT、DELETE 等。
DQL:数据查询语言( Data Query Languag )用于从数据表中查找符合条件的数据记录。SELECT
DCL:数据控制语言(Data Control Language)用于设置或者更改数据库用户或角色权限GRANT,REVOKE
TCL:事务控制语言(Transaction Control Language)用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。COMMIT,ROLLBACK,SAVEPOINT

六、Mysql数据库基本的增删改查命令

1.创建及删除数据库和表

1.创建新的数据库
CREATE DATABASE 数据库名;

2.创建新的表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

例:CREATE TABLE ztm001 (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT '',PRIMARY KEY (id));

3.删除指定的数据表
DROP TABLE [数据库名.]表名;				#如不用USE进入库中,则需加上数据库名

4.删除指定的数据库
DROP DATABASE 数据库名;

在这里插入图片描述
在这里插入图片描述

2.管理表中的数据记录

1.向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);

SELECT * FROM 表名;					#查询表的数据记录

2.查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];

select name from ztm001\G; 				#以列表方式竖向显示
select * from ztm001 limit 2;			#只显示头2行
select * from ztm001 limit 2,3;			#显示第2行后的前3行


3.修改、更新数据表中的数据记录
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];

4.在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式];

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.修改表名和表结构

1.修改表名
ALTER TABLE 旧表名 RENAME 新表名;

2.扩展表结构(增加字段)
ALTER TABLE 表名 ADD 字段名 varchar(50) default '地址不详';
#default '地址不详':表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用

3.修改字段(列)名,添加唯一键
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

4.删除字段
ALTER TABLE 表名 DROP 字段名;


案例扩展:
use ztm777;
create table if not exists info (
id int(4) zerofill primary key auto_increment,				#指定主键的第二种方式
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));
----------------------------------------------------------------------------------------------------------
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001
#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次
#unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、数据表高级操作

MySQL中6种常见的约束:
主键约束(primary key)
外键约束(foreign key)
非空约束(not null)
唯一性约束(unique [key|index])
默认值约束(default)
自增约束(auto_increment)

1.克隆表,将数据表的数据记录生成到新的表中

方法一:
create table test01 like ztm;				#通过 LIKE 方法,复制 KY08 表结构生成 test01 表
insert into test01 select * from ztm;
此方法能保证 新表的表结构、表数据 跟旧表都是一致的

方法二:
CREATE TABLE test02 (SELECT * from ztm);
此方法创建的新表的表数据和旧表是一样的,但可能会出现新表的表结构和旧表的不一致

show create table test02\G					#获取数据表的表结构、索引等信息
SELECT * from test02;

在这里插入图片描述

2.清空表,删除表内的所有数据

方法一:
delete from test01;
#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。

方法二:
truncate table test01;
#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。

在这里插入图片描述

3.创建临时表

临时表创建成功之后,使用SHOW TABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。

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

insert into test03 values(1,'zhangsan',123456,'running');
select * from test03;
show tables;
quit
select * from test03;

在这里插入图片描述

4.创建外键约束,保证数据的完整性和一致性

外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

主键表和外键表的理解
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)

注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

`创建主表 profession`
create table profession (pid int(4),proname varchar(50));

`创建从表 student`
create table student (id int(4) primary key auto_increment,name varchar(10),age int(3),proid int(4));

`为主表 profession 添加一个主键约束。主键名建议以“PK_”开头。`
alter table profession add constraint PK_pid primary key (pid);

`为从表 student 表添加外键,并将 student 表的 proid 字段和 profession 表的 pid 字段建立外键关联。外键名建议以“FK_”开头。`
alter table student add constraint FK_pro foreign key (proid) references profession (pid);


`删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录。`
delete from student where proid=1;
delete from profession where pid=1;

`查看和删除外键约束`
show create table student;
desc student;
alter table student drop foreign key FK_pro;
alter table student drop key FK_pro;

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

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

相关文章

ijkplayer 支持srt协议 rtmp协议编译步骤

写在前面 ffafaf这个编译真的太垃圾了 一堆毛病 感受下webrtc 傻瓜式编译 环境首先必须ndk 是android-ndk-r15c 或者 android-ndk-r14b ubuntu 系统随便22或者20,18都行 有个非常重要的点python必须是2.7 不然你会看到一大堆报错 高版本的ubuntu默认都是python3…

回溯算法基本思想及其实现

文章目录 基本思想回溯算法的递归框架组合问题组合总和组合去重子集全排列 基本思想 回溯算法是一种递归算法,它试图通过尝试不同的选择,解决一个问题。它的基本思想是从可能的决策开始搜索,如果发现这条路往下走不能得到有效的解答&#xf…

12-事件模型(也就是一个先后触发顺序)

一、事件与事件流 HTML文档、浏览器中发生的一种交互。使得具备互动性,加载、鼠标、自定义事件。 由于DOM是一个树结构,意味着标签存在嵌套关系,当绑定事件的时候,当触发子节点的时候,一个顺序问题,概念-事…

人机交互学习-4 交互设计过程

交互设计过程 交互设计过程基本活动关键特征 设计过程中的问题如何选取用户?如何明确需求?如何提出候选方案?如何在候选方案中选择? 交互设计生命周期模型星型生命周期模型可用性工程生命周期模型 交互设计过程管理界面设计的4个支…

这三个方法可以视频音频转换你知道吗?

小明:你听说过音频转换吗?最近我在学习音乐制作,发现这个功能特别有用! 小红:啊,好像没有听说过。它是用来干嘛的? 小明:简单来说,就是可以将不同格式的音频文件进行转…

嵌入式Linux应用开发笔记:串口

文章目录 目的基础说明开发准备设备树应用程序 应用程序与演示代码演示 总结设备树文件 目的 串口(UART)是嵌入式设备中比较常用的功能。这篇文章将记录下应用程序中串口操作相关内容。 这篇文章中内容均在下面的开发板上进行测试: 《新唐N…

阿里 P8 架构师总结的 Java 面试笔记,上线仅七天,Github 标星 55K

作为一名优秀的程序员,技术面试是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试,肯定会遇到一些这样的问题: 1、看你项目都用的框架,熟悉 …

AI翻唱整合

感谢阅读 不完全原创声明环境部署下载工具包安装人声背景音分离工具分离消除脏数据(比如杂音)准备自己的声音预处理完工效果参考 不完全原创声明 本人使用了多个第三方软件,并修改了一部分代码使得其可以在PC上训练,如有侵权请联…

看板是什么?使用看板进行任务管理有哪些好处?

看板是一个易于使用的工具,用于可视化和管理工作流程。 它的特点是有一列代表工作流程的各个阶段。看板卡被用来跟踪各个任务和活动在各个阶段的进展情况。 看板的两种主要类型是实体看板和数字看板。实体看板最适合办公室内、同地办公的团队。数字看板更适合远程和…

数据库MySQL学习-数据查询(持续更新中...)

MySQL数据库 MySQL是DBMS软件系统,通过这些系统来维护管理数据库。 DBMS类似于用于和数据库之间的桥梁。 一、安装配置 下载免费的MySQL 社区版,安装后需要下载MySQL workbench vscode phpmyadmin等工具来接入MySQL。 MySQL可以管理多个数据库的&…

广告数仓:数仓搭建

系列文章目录 广告数仓:采集通道创建 广告数仓:数仓搭建 文章目录 系列文章目录前言一、环境搭建1.hive安装2.编写配置文件3.拷贝jar包4.初始化源数据库5.修改字符集6.更换Spark引擎1.上传并解压spark2.修改配置文件3.在hadoop上创建需要的文件夹4.上传…

离散数学题目收集整理练习(期末过关进度10%)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 ✨博主的其他文章:点击…

观察者模式(二十)

相信自己,请一定要相信自己 上一章简单介绍了迭代器模式(十九), 如果没有看过, 请观看上一章 一. 观察者模式 引用 菜鸟教程里面 观察者模式介绍: https://www.runoob.com/design-pattern/observer-pattern.html 当对象间存在一对多关系时,则使用观察…

cef支持.net6.0

开发环境:vs2022,.net6.0 cef CefSharp.Common.NETCore 114.2.100 安装 Cefsharp简介 CEF ,全称Chromium Embedded Framework ,基于谷歌 Chromium项目的开源Web Browser控件,它的主要用途是嵌入了第三方应用以实现浏览器相关的功…

【C#】简单认识TransactionScope,以及常见的事务类型

在实际项目开发时,后端编码少不了事务处理。 为什么要用事务,其中一个最直接的原因就是保持数据完整性和一致性 目录 1、C#事务概念1.1、逻辑单元1.2、Transaction对象1.3、事务简单实例 2、事务场景描述3、事务流程图3.1、没有事务流程3.2、有事务流程 …

黑客是怎样练成的?

网学黑客技术的人越来越多了,不少人都不知道该怎么学,今天就来详细的说一说黑客是如何炼成的。 首先,什么是黑客? 黑客 :泛指擅长IT技术的电脑高手 黑客一词,源自英文Hacker,早期其实就是一群…

【MySQL】一文带你了解检索数据

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机

文章目录 21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机21.1 背景介绍22.2 RBM模型表示22.3 Inference问题22.4 Marginal问题 21 RBM(Restricted Boltzmann Machine)——受限玻尔兹曼机 21.1 背景介绍 什么是玻尔兹曼机: 简单来说就是具有条件的Marko…

无线蓝牙耳机排行榜,十大口碑最好蓝牙耳机

近年来,随着生活水平的提高,越来越多的人对高品质蓝牙耳机的需求日益增加。无论我们在选购什么产品,我们都会考虑一个价值范围,买蓝牙耳机也是同样,都会给自己一个预算,然后根据预算去网上搜寻这个价格范围…

【python学习】-读入xlsx文件,将datetime.time转为minute的格式,并将新数据存入csv文件

读入xlsx文件&#xff0c;将datetime.time转为minute的格式&#xff0c;并将新数据存入csv文件 任务概要思路设计代码实现导入相关库时间转换函数算法内核csv文件结果 接到一个需求&#xff0c;师兄在做稳定性测试时&#xff0c;时间显示格式为<class ‘datetime.time’>…