数据库的基本使用

一、数据库的简介

RDBMS简介:

Relational Database Management System,通过表来表示关系类型。当前主要使用两种类型的数据库:关系型数据库和非关系型数据库。所谓的关系型数据库RDBMS是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库的主要产品:
oracle:在以前的大型项目中使用,银行,电信等项目;
mysql:web时代使用最广泛的关系型数据库;
my sql server:在微软项目中使用;
sqlite:轻量级数据库,主要应用在移动平台。
在这里插入图片描述

RDBMS包含很多具体的数据库工具:

还有就是mysql,redis,monggodb;
mysql:一般用于网站,存储一些数据;
redis:一般用来缓存;
mongodb:一般用来存储非关系数据结构比如爬虫用

SQL语言:

是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle,sql server,mysql,sqlite等所有的关系型数据库

SQL语句主要分为:

DQL:数据查询语言,用于对数据进行查询,如select;
DML:数据操作语言,对数据进行增加、修改、删除,如insert/update/delete;
TPL:事务处理语言,如begin transaction/commit/rollback;
DCL:数据控制语言,进行权限与授权回收,如grant/revoke;
DDL:数据定义语言,进行数据库、表的管理如create/drop等;
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
SQL语言不区分大小写,支持多种数据库工具。

二、Mysql

Mysql简介:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,现在属于Oracle公司。它是最流行的开源数据库之一,广泛应用于网页应用软件,特别是用于构建动态网站和在线交易系统等基于网络的应用。

MySQL的主要特点包括:

开源:MySQL是开源的,这意味着任何人都可以下载和使用它,而且可以查看和修改其源代码。

性能高:MySQL使用了许多优化技术来提供高性能、高吞吐量的数据读写。

可扩展性强:MySQL可以处理包含上亿条记录的大型数据库,同时也适用于较小的应用程序。

易于使用:MySQL易于安装,并且提供了大量的工具和库来帮助开发者和数据库管理员。

支持多种数据类型:MySQL支持多种数据类型,包括数值、日期和时间、字符串等。

安全性:MySQL提供了一套完整的权限管理系统,可以对用户在每个数据库上的权限进行细粒度的控制。

跨平台:MySQL可以在多种操作系统上运行,包括Linux、Windows、Mac OS等。

因此,无论是在企业级应用还是在个人项目中,MySQL都是一个非常好的关系型数据库选择。

Ubuntu虚拟机安装好,查看采用如下linux命令

在这里插入图片描述

这就登陆上了

在这里插入图片描述

查看版本命令

在这里插入图片描述

调好了,以后输入sudo mysql -u root即可登录mysql

三、Navicat

下载完运行,试用14天
在这里插入图片描述
改了密码,登录,双击变绿连上了
在这里插入图片描述

新建数据库

建好之后双击即可启动连接该数据库(变绿),然后里面的表是最重要的,可以右键teble新建,新建之后可以输入数据,后面有一个钥匙的符号,钥匙就意味着这个字段就是主键主键作用:唯一标记每个记录。
按照一个excel创建表格
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

当数据表里数据量巨大的时候,增删改查都将变的很难搞,所以用到sql语句

四、SQL语句

数据库要保证数据的完整性,数据类型的原则是够用就行,尽量使用取值范围小的,而不用大的,这样可以更多节省存储空间。
常用的数据类型:整数:int,bit;
小数:decimal(eg:decimal(5,2)表示共存5位数,小数占两位);
字符串:varchar(eg:varchar(3)表示如果存储‘ab’那么就存储‘ab’),char(eg:char(3)表示如果填充了‘ab’会自动在后面补个空格);
日期时间:data,time,datetime;
枚举类型(比如男女):enum;
字符串text表示存储大文本,当字符大于4000时推荐使用。
对于图片、音频、视频等文件不存在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径。
更全的数据类型可参考:http://blog.csdn.net/anxpp/artical/details/51284106

约束:

1.主键primary key:物理上存储的顺序;
2.非空not null:此字段不允许填写空值;
3.唯一unique:此字段不允许重复;
4.默认default:当不填写此值时会使用默认值,如果填写时以填写为主;
5.外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增删改查)时都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证?答:可以在逻辑层进行控制。

命令行脚本对数据库进行操作:

mysql -u root -p(连接数据库);

exit/quit/ctrl+d(退出数据库);

show databases;(展示数据库内容分号别忘了写!!!);

在这里插入图片描述

显示当前数据库时间:select now();

在这里插入图片描述

显示数据库版本:select version();

在这里插入图片描述

创建数据库

:create database
你要创建的数据库名称 charset=utf8;
在这里插入图片描述
在这里插入图片描述
查看创建数据库的语句,可以看看当时创建用的是不是utf-8的设定啥的:show create database python04;
在这里插入图片描述

删除数据库

:drop database 数据库名;如果没有反应那就试试在数据库名加两边各加一个`,键盘左上角那个
在这里插入图片描述
使用数据库:use 数据库名称;
不管你现在何处都可以
查看当前使用的数据库:select database();
在这里插入图片描述

数据表(表设计)操作:

查看当前数据库中所有的表:show tables;

在这里插入图片描述

创建一个数据表

:create table 数据表名字 (字段 类型 约束[,z字段 类型 约束]);
也可以这么写:create table xxx(id int primary key not null auto_increment,name varchar(30))
在这里插入图片描述

查看一个表的结构

:desc 数据表名字;
在这里插入图片描述
创建一个students表:create table students(id int unsigned非负 然后写约束not null auto_increment 主键primary key,name varchar(30),age tinyint unsign default 0,high decimal(5,2),gender enum(“男”,“女”,“保密”) default "保密"默认值,cls_id int unsigned);
–xxxxx前面两个横杠是注释的意思
在这里插入图片描述
在这里插入图片描述

往表里插入数据:

insert into students values(0,“淅淅”,10,188.88,“女”,2201);
查看表中数据:select * from students;
在这里插入图片描述

修改表结构:

添加字段

:alter table 表名 add 列名 类型;(eg:alter table students add birthday datetime;)

修改字段重命名

:alter table 表名 modify 列名 类型及约束;(eg:alter table students change birthday birth datetime not null;)

修改字段不重命名

:alter table 表名 modify 列名 类型及约束;(eg:alter table students modify birth date not null;)

删除字段

:alter table 表名 drop 列名;(eg:alter table students drop birthday;)

删除表

:drop table 表名;(eg:drop table students;)

查看表的创建语句

:show create table 表名;
添加
在这里插入图片描述
修改不重命名
在这里插入图片描述
修改重命名
在这里插入图片描述
删除字段
在这里插入图片描述
删除表
在这里插入图片描述

数据表内数据的增删改查(curd–create.update.retrieve.delect)

查询所有列

select *from 表名;(eg:select *from classes;)
select *from students where name=“道”;

查询name为道的所有信息

select *from students where id>2;

查询指定列

select 列1,列2,… from 表名;(eg:select id,name from classes;)
可以用as为列或表指定别名:select name as 姓名,gender as 性别 from students;

增,插入,insert into 表名 values(…)

没有指明给那个列插入就默认全部插入
部分插入:insert into students(name,gender) values (“道”,2);
多行插入:insert into students(name,gender) values (“风信子”,1),(“多肉”,3);
在这里插入图片描述

部分插入

在这里插入图片描述

多行插入

在这里插入图片描述

修改

update 表名 set 列名=1 where name/id=”你要改的数据“;
update students set gender=1;全改;update students set gender=1 where name=“道”;只要name是道的全改;update students set gender=1 where id=3;id为3的进行修改;update students set age=22,gender=1 where id=3;只要id是3的进行修改。
在这里插入图片描述

删除数据

物理删除

delete from 表名 where 条件
delete from students;–清空数据表
delete from students where name=“风信子”;

逻辑删除

用一个字段来表示,这条信息是否已经不能再用,给students表添加一个is_delete字段bit类型
alter table students add is_delete bit default 0;
想删第5条就可以:update students set is_delete=1 where id=5;
然后就可以用is_delete=1/0进行筛选
在这里插入图片描述

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

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

相关文章

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为…

Spingboot落地国际化需求,Springboot按照请求的地区返回信息

文章目录 一、国际化1、概述2、Spring国际化 二、springboot简单使用国际化1、定义MessageSource2、定义message配置文件3、测试 三、根据请求的地区获取信息1、定义message配置文件2、定义配置类3、基础模板工具4、消息模板定义枚举5、测试一下6、总结 一、国际化 1、概述 国…

设计模式-结构型-装饰器模式-decorator

发票基本类 public class Invoice {public void printInvoice() {System.out.println("打印发票正文");} } 发票正文类 public class Decorator extends Invoice {protected Invoice ticket;public Decorator(Invoice ticket) {this.ticket ticket;}Overridepubl…

Java配置自定义校验

1、自定义注解State message、groups、payload package com.zhang.anno;import com.zhang.validartion.StateValidation; import jakarta.validation.Constraint; import jakarta.validation.Payload;import java.lang.annotation.*;import static java.lang.annotation.Eleme…

javaScript中原型链

一、原型链 js 的对象分为普通对象和函数对象。每个对象都有__proto__ 但是只有函数对象 (非箭头函数) 才有 prototype 属性。 new的过程: 1、创建一个空的简单 javaScript对象 2、将空对象的 __proto__连接到该函数的 prototype 3、将函数的this指向新创建的对象…

鲁棒线性模型估计(Robust linear model estimation)

鲁棒线性模型估计 1.RANSAC算法1.1 算法的基本原理1.2 迭代次数N的计算1.3 参考代码 参考文献 当数据中出现较多异常点时,常用的线性回归OLS会因为这些异常点的存在无法正确估计线性模型的参数: W ( X T X ) − 1 X T Y \qquad \qquad W(X^TX)^{-1}X^T…

【docker】Docker 简介

Docker 简介 什么是虚拟化、容器化?为什么要虚拟化、容器化?虚拟化实现方式应用程序执行环境分层虚拟化常见类别虚拟机容器JVM 之类的虚拟机 常见虚拟化实现主机虚拟化(虚拟机)实现容器虚拟化实现容器虚拟化实现原理容器虚拟化基础之 NameSpace 什么是虚拟化、容器…

人体跟随小车(旭日x3派、yolov5、目标检测)

人体跟随小车(yolov5、目标检测) 前言最终结果接线实现注意 前言 上板运行的后处理使用cython封装了,由于每个版本的yolo输出的形状不一样,这里只能用yolov5-6.2这个版本。 ①训练自己的模型并部署于旭日x3派参考: ht…

RuntimeError: Library cublas64_12.dll is not found or cannot be loaded

运行guillaumekln/faster-whisper-large-v2模型进行语音识别的时候报错了 RuntimeError: Library cublas64_12.dll is not found or cannot be loaded 代码: from faster_whisper import WhisperModelmodel WhisperModel("H:\\model\\guillaumekln\\faster…

【C++】优先级队列(priority_queue)的用法与实现

目录 一、概念: 二、仿函数(Functor): 概念: 应用: 三、底层实现: 基本操作: 完整代码: 测试示例: 一、概念: 优先级队列(pri…

PostgreSQL入门到实战-第六弹

PostgreSQL入门到实战 PostgreSQL查询语句(三)官网地址PostgreSQL概述PostgreSQL中ORDER BY理论PostgreSQL中ORDER BY实操更新计划 PostgreSQL查询语句(三) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.post…

tcp的全连接队列和半连接队列满时,客户端再connect发生的情况

首先简单介绍下tcp的全连接队列(accept queue)和半连接队列(syn queue), 1.客户端发起syn请求时,服务端收到该请求,将其放入到syn queue,然后回复acksyn给客户端。 2.客户端收到acksyn,再发送ack给服务端。 3. 服务端从…

3、最大池化maxinmum pooling

了解有关最大池化特征提取的更多信息。 简介 在第二课中,我们开始讨论卷积神经网络(convnet)的基础如何进行特征提取。我们了解了这个过程中的前两个操作是在带有 relu 激活的 Conv2D 层中进行的。 在这一课中,我们将看一下这个序列中的第三个(也是最后一个)操作:通过…

3dmax渲染十几个小时怎么办?3dmax怎么多机渲染

当使用3ds Max进行渲染作业时,如果发现单张图像的渲染时间长达十数小时,这可能是由于计算机硬件配置较低或渲染场景过于复杂所致。为了缩短渲染时间并提高效率,我们可以考虑采用多台计算机进行协同渲染。下面,让我们一起探讨如何通…

MyBatis操作数据库(2)

MyBatis XML配置文件 MyBatis开发有两种方式: 1.注解 2.xml 上面我们学习了注解的方式, 下面来学习xml的方式 使用MyBatis的注解方式, 主要是为了完成一些简单的增删改查功能, 而下面我们介绍的xml方式, 则一般用于写一些比较复杂的sql语句. MyBatis XML的方式需要以下两步: …

《荒野大镖客》游戏提示emp.dll文件丢失如何解决?

emp.dll它作为一种动态链接库(DLL)文件,在Windows操作系统中扮演着重要角色。当打开一个程序时,操作系统会将程序的代码和数据加载到内存中,并创建一个进程来运行该程序。在这个过程中,emp.dll负责将这些代…

OpenHarmony开发-连接开发板调试应用

在 OpenHarmony 开发过程中,连接开发板进行应用调试是一个关键步骤,只有在真实的硬件环境下,我们才能测试出应用更多的潜在问题,以便后续我们进行优化。本文详细介绍了连接开发板调试 OpenHarmony 应用的操作步骤。 首先&#xf…

实现几何对象按照一定距离向外缓冲

1、首先&#xff0c;确保你已经引入了Turf.js库。你可以通过在HTML文件中添加以下代码来引入 <script src"https://cdn.jsdelivr.net/npm/turf/turf6.5.0/turf.min.js"></script>2、使用turf.buffer实现几何对象按照设定距离扩充 let originalCoordinat…

【MATLAB源码-第183期】基于matlab的图像处理GUI很全面包括滤波,灰度,边缘提取,RGB亮度调节,二值化等。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. RGB颜色亮度调整 1.1 RGB颜色模型 RGB颜色模型是一种加色模型&#xff0c;使用红色&#xff08;R&#xff09;、绿色&#xff08;G&#xff09;、蓝色&#xff08;B&#xff09;三种颜色的不同组合来表示各种颜色。每种…

每日OJ题_两个数组dp⑤_力扣10. 正则表达式匹配

目录 力扣10. 正则表达式匹配 解析代码 力扣10. 正则表达式匹配 10. 正则表达式匹配 难度 困难 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c…