Mysql数据库基本概念和Sql语言

一、数据库基本概念

1.1 数据库概述

数:数字信息
据:属性
数据:对一系列对象的具体属性的描述的集合
数据库:数据库就是用来组织(各个数据之间是有关联的,按照规则组织起来的)、存储和管理(对数据的增、删、改、查)的仓库

数据库是企业的重要信息资产,在使用数据库进行增删改查时,要注意删和改需要谨慎

1.2 数据库管理系统(DBMS)

  • 实现对数据的有效组织,管理和存取的系统软件
  • 用户是通过DBMS(各种数据库软件)来对数据库进行操作
  • 数据库是一个系统,是一个人机系统,由硬件、os(操作系统)、数据库、DBMS和数据库用户共同组成

1.3 数据库的分类

关系型数据库

mysql(中小类型的数据并发请求)、oracle(大数据量)、sql-server、mariaDB、postgresql等

存储数据的结构是一个二维表格
表:以行+列的形式组成
行:记录,用来描述一个对象的信息
列:字段,用来描述对象的一个属性

  • 关系型数据库中,表里面的数据是关联的,表和表之间的数据也是关联起来
  • 多表关联,最多可以关联三张表

非关系型数据库

redis(缓存型数据库)、es(索引型数据库)、MongDB(文档型数据库)等

存储数据不以关系模型为依据,用键值对来保存数据

  • 关系型数据查询速度更慢一些
  • 非关系型数据库可以支持高并发读写,对海量数据依旧保持着高效率的存储和访问

1.4 Mysql数据库的存储引擎

5.5之间:MyISAM是默认的、不支持事务和外键的存储引擎。

5.6之后:默认的存储引擎为InnoDB成为默认并且可以支持事务、外键、行级锁定的存储引擎

支持高并发性能的应用

事务

事务:在数据库当中,一个或多个操作组成的数据操作的序列

这些操作要么全部成功,失败一个就全部不执行,需要确保数据一致性和完整性

事务的特点

  • 原子性:数据库最小工作单元,要么全部执行成功,要么全部不执行,只要有一个操作时间,整个执行的序列都会被回滚。完成的操作也会被撤销
  • 一致性:事务执行前后,数据库的完整性约束不能被破坏,只有在满足所有的约束条件情况下,事务才能被提交
  • 隔离性:事务的执行是相互隔离,一个事务的执行不能受到其他执行事务的干扰。并发事务之间互相隔离。防止数据不一致的情况发生。
  • 持久性:事务一旦提交,他所作的所有修改会被永久的保存在数据库中。即使系统崩溃,提交的数据也不丢失。确保数据库始终处于一致性的状态,确保数据的完整和一致

1.5 Mysql的名词

  • 1、数据库:database
  • 2、表:table 行:row 列:column
  • 3、索引:index
  • 4、视图:view
  • 5、存储过程:procedure
  • 6、触发器:trigger
  • 7、用户:user
  • 8、权限:privilege

1.6 Mysql的语句规范

  • 在数据库系统中,sql不区分大小写,但是建议大写。语句不区分,但是表名是严格区分大小写
  • sql语句可以单行也可以多行书写,但是默认都以;结尾
  • 换行时关键词不能跨行或者简写
  • 子语句通常位于独立行,便于编辑,提高可读性

1.7 数据库的命名规则

  • 必须以字母开头,后面可以包含数据,特殊字符
  • 不要使用Mysql的保留字来命名表
  • 数据库名、表名、用户名严格区分大小写

1.8 数据库的字符类型

int:4个字节,用来存储整数
char:用来存储固定长度的字符串,用来存储定长的字符串
varchar:存储可变长度的字符类型,存储可变长度的字符串(无限制的可以随便写)
float(m,d):单精度浮点,存储浮点数,m表示总位数,d表示小数位
double(m,d):双精度浮点,存储浮点数,m表示总位数,d表示小数位
text:用于存储大文本数据,文档,或者长字符串
image:二进制存储图像、图片、多媒体
decimal(m,d):用于存储固定精度的小数,
date:存储日期:yyyy-mm-dd
datetime:存储日志:YYYY-MM-DD HH:MM:SS
timestamp:和datetime格式一致,可以自动地更新为当前的时间戳

二、Sql语句

2.1 DDL数据定义语言

用于创建数据库的对象,创建库、表、索引等

数据库相关操作:

  • SHOW:查看
  • CREATE创建
  • DROP删除
  • ALTER修改

进入Mysql数据库

mysql -u root -p密码;

查看当前数据库使用端口 

show global variables like 'port';

查看当前数据库

show databases;

使用某个库 

use mysql 库名;  

查看当前库中的表 

show tables;

查看表结构 

describe 表名;
缩写:
desc 表名;
纵向查看表结构:
describe user\G;

创建库

create database 库名;

 创建表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型...,primary key(主键名));
例:
create table ky32 (id int(4) not null,name varchar(10) not null,score decimal(5,2),passwd char(48),primary key(id));

null和空格的区别:null是什么都没有,空格也算是字符

删除表

drop table 表名;

删除库

drop database 库名;

2.2 DML数据操纵语言

对表中的数据进行管理,包括select、update、insert、delete等

清空表中数据

truncate table 表名;

向表中添加数据

insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);
例:
insert into naruto(id,name,score,passwd) values(1,'naruto',95,111);
insert into naruto(id,name,score,passwd) values(2,'sasuke',90,222);查看表:
select * from 表名;

 给表中数据加密

例:
insert into naruto(id,name,score,passwd) values(3,'sakura',85,password('333'));

删除表中数据

例:
delete from naruto where id = 3;

2.3 DQL查询数据记录

查询表中指定行

降重查询

select distinct 字段 from 表名;
多个字段的话是所有条件都包含

修改表名

alter table 原表名 rename 新表名;

添加列

alter table 表名 add 字段 字符类型;

更新数据

例:
update uzumaki set birth=date('2020-1-1') where id = 4;

修改字段(列)名

例:
alter table uzumaki change birth birthday datetime;

删除字段(列)

例:
alter table uzumaki drop birthday;

修改列的字段类型

alter table 表名 modify column 字段 字段类型;
例:
alter table uzumaki modify column passwd varchar(52);

2.4 DCL数据控制语言

用于控制数据库用户的访问权限

GRANT:用于授权用户访问权限
REVOKE:用于取消用户的访问权限。

2.5 TCL事务控制语言

用于控制数据库事务的提交和回滚

COMMIT:用于提交事务
ROLLBACK:用于回滚事务
SAVEPOINT:用于设置保存点,以便在发生错误时回滚到该点

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

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

相关文章

Godot 官方2D C#重构(4):TileMap进阶使用

文章目录 前言完成内容项目节点结构TileMap设置图片资源备选图片添加物理碰撞添加y轴遮罩判断Y Sort Enable是干什么的? 脚本代码 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 完成内容 项目节点结构 TileMap设置 图片资源 备选图…

[Python]unittest-单元测试

目录 unittest的大致构成: Test Fixture Test Case-测试用例 Test Suite-测试套件 Test Runner 批量执行脚本 makeSuite() TestLoader discover() 用例的执行顺序 忽略用例执行 skip skipIf skipUnless 断言 HTML测试报告 错误截图 unittest是python中的单元测…

在Python的虚拟环境中卸载eric6的方法

问题描述 之前在电脑的Python虚拟环境中安装了PyQt5及相应的界面设计器eric6。当时安装eric6后,没成功运行,提示少一个什么系统文件。我已在旁边的台式机上安装了较新版的PyQt6,决定不再用老版本的eric6,于是我需在笔记本电脑上卸…

Redis(02)| 数据结构-SDS

一、键值对数据库是怎么实现的? 在开始讲数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型…

创建进程中的内核操作

fork 是一个系统调用,流程的最后会在 sys_call_table 中找到相应的系统调用 sys_fork。 _do_fork 里面做的第一件大事就是 copy_process,咱们前面讲过这个思想。如果所有数据结构都从头创建一份太麻烦了,还不如使用惯用“伎俩”,…

深入探究Python中的深度学习:神经网络与卷积神经网络

当下,深度学习已经成为人工智能研究和应用领域的关键技术之一。作为一个开源的高级编程语言,Python提供了丰富的工具和库,为深度学习的研究和开发提供了便利。本文将深入探究Python中的深度学习,重点聚焦于神经网络与卷积神经网络…

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】 课本里章节里所有蓝色字体的思维导图

【教学类-40-02】A4骰子纸模制作2.0(统计表、棋盘)

作品展示 背景需求 上次做了一个骰子1.0(纸盒插口式样),但是无论是裁剪纸模(去掉白边),还是凹造型(立体、黏贴),4/5大班幼儿都感到困难。因此我想让纸模更简单。 1、裁…

git 推送到github远程仓库细节处理(全网最良心)

我查看了很多网上的教程都不是很好 我们先在github创建一个仓库,且初始化 readme 我们到本地文件初始化仓库 添加远程仓库 这时候我们就 git add . , git commit ,再准备git push 的时候 显示没有指定远程的分支 我们按照提示操作 提示我们要先git pull 提示我…

[2021]不确定成本下的处理分配

英文题目:Treatment Allocation under Uncertain Costs 中文题目:不确定成本下的处理分配 单位:swager、uber 时间:2021 论文链接:https://arxiv.org/pdf/2103.11066.pdf 代码: 摘要: 我…

[AutoSar NVM] 存储架构

依AutoSAR及公开知识辛苦整理,禁止转载。 专栏 《深入浅出AutoSAR》, 全文 1600 字. 图片来源: 知乎 汽车的ECU内存中有很多不同类型的变量,这些变量包括了车辆各个系统和功能所需的数据。大部分变量在ECU掉电后就会丢失&#xf…

uniapp实现瀑布流

首先我们要先了解什么是瀑布流: 瀑布流(Waterfall Flow)是一种常见的网页布局方式,也被称为瀑布式布局或砌砖式布局。它通常用于展示图片、博客文章、商品等多个不同大小和高度的元素。 瀑布流布局的特点是每个元素按照从上到下…

EtherNet/IP转profienrt协议网关连接EtherNet/IP协议的川崎机器人配置方法

EthernetIP 协议一般用于采集机器人,控制器等设备的数据。 下面介绍通过远创智控YC-EIPM-PN网关把EtherNet/IP协议的川崎机器人通过西门子1500PLC的控制方法。有些 EIP 的从站设备提供了 EDS 文件,可以从EDS 文件中获取点位信息。这些信息是需要填写到网…

多个相同地址的I2C设备,如何挂载在同一条总线上

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 (2&#xff0…

python爬虫selenium和ddddocr使用

python爬虫selenium和ddddocr使用 selenium使用 selenium实际上是web自动化测试工具,能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。 通过pythonselenium结合来实现爬虫十分巧妙。 由于是模拟人的点击来操作,所以实际上被反…

JVM调优(10)JVM的运行时数据区

一、概述 对于 C C 来说,在内存管理领域,JVM既拥有最高的权利,但是同时他们又是从事最基础工作的劳动人员,因为他们担负着每一个对象从开始到结束的维护责任。而对于Java来说,再虚拟机自动内存管理的帮助下&#xff0…

windows 设置nginx、redis、jar包开机自启、mysql自动备份

1、--------------设置nginx------------------- cd到nginx 根目录与nginx.exe平齐 1.1下载WinSW.NET4.exe 放入nginx.exe平齐目录命名为nginx-servier.exe 链接: https://pan.baidu.com/s/1obKTinD1Z9BKgMJxZMtk2Q?pwdg47u 提取码: g47u 复制这段内容后打开百度网盘手机App…

玩转ChatGPT:批量下载Alphafold的蛋白pdb文件

一、写在前面 突发奇想,想批量下载Alphafold网站的蛋白pdb文件,后续再做个分子对接用。又不想手动下载,来求助CSDN和GPT。 二、CSDN白嫖基础代码 CSDN大神多,这不,找到一个:Alphafold批量下载蛋白的pdb文…

2318.不同骰子序列的数目

经典的DP题目,求方案数 从序列中最后一个数字往前考虑 当前状态取决于前一个的状态和再前一个的状态所以dp(n,last,last1)为当前考虑的是第n个并且前一个数字是last 再前一个数字是last1的所有方案数,递归的…

一个基于Excel模板快速生成Excel文档的小工具

介绍 DocumentGenerator是一个Excel快速生成工具,目标以后还能实现Word、pdf等的文件的生成。该程序独立运行,可通过HTTP接口调用其生成接口。 典型使用场景为如下: 使用者编写模板文件使用者准备模板文件的填充JSON数据内容使用者通过网络…