数据库的基本使用

一、数据库的简介

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进行筛选
在这里插入图片描述

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

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

相关文章

蓝桥杯第十三届省赛C++B组(未完)

目录 刷题统计 修剪灌木 X进制减法 【前缀和双指针】统计子矩阵 【DP】积木画 【图DFS】扫雷 李白打酒加强版 DFS (通过64%,ACwing 3/11); DFS(AC) DP(AC) 砍竹子(X) 刷题统计 题目描述 小明决定从下周一开始努力刷题准…

《QT实用小工具·十八》高亮发光按钮控件

1、概述 源码放在文章末尾 该项目实现了高亮发光按钮控件 可设置文本,居中显示。可设置文本颜色。可设置外边框渐变颜色。可设置里边框渐变颜色。可设置背景色。可直接调用内置的设置 绿色、红色、黄色、黑色、蓝色 等公有槽函数。可设置是否在容器中可移动&#…

git应用场景(进阶)

Git场景运用-CSDN博客 专有名词 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库HEAD HEAD,指向当前分支最新提交点。所处分支变化,或产生新…

Open CASCADE学习|旋转变换

物体在三维空间中的旋转变换操作通常可以通过三种不同的方式来表示:矩阵(Matrix)、欧拉角(Euler Angles)和四元数(Quaternion)。下面详细解释这三种表示方法。 矩阵(Matrix&#xf…

写JDBC遇到的问题

执行会出现以下错误信息 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ? and loginPwd ? at line 1 at com.mysql.cj.jdbc.exceptions…

图书管理系统

❤️❤️前言~🥳🎉🎉🎉 hellohello~,大家好💕💕,这里是E绵绵呀✋✋ ,如果觉得这篇文章还不错的话还请点赞❤️❤️收藏💞 💞 关注💥&a…

Vue - 你会在同一个元素上使用v-for和v-if吗

难度级别:初级及以上 提问概率:50% 在初学者看来,v-for和v-if同时使用是非常方便的,二者共同使用的常见场景有两种。例如有两个列表,分别用于渲染学生数据和老师数据,然后有两个单选按钮,用于切换当前页面中需要展示学生列表还是老师列…

鸿蒙HarmonyOS 与 Android 的NDK有什么不一样?

1. 序言 就像开发Android要用Android Studio一样,Android Studio(简称AS)其实是基于IDEAgradle插件android插件开发而来。 鸿蒙系统,你可以认为它和android有点像,但又是超越android的存在,除了手机&…

笛卡尔树[天梯赛二叉树专项训练]

文章目录 题目描述思路AC代码 题目描述 输入样例1 6 8 27 5 1 9 40 -1 -1 10 20 0 3 12 21 -1 4 15 22 -1 -1 5 35 -1 -1 输出样例1 YES 输入样例2 6 8 27 5 1 9 40 -1 -1 10 20 0 3 12 11 -1 4 15 22 -1 -1 50 35 -1 -1 输出样例2 NO思路 见注释 AC代码 #include <bits/st…

搭建python编译环境

目录 1.安装依赖包 2.安装失败进行换源 3. 更新系统 通过C 语言调用 Python 代码&#xff0c;需要先安装 libpython3 的 dev 依赖库&#xff08;不同的 ubuntu 版本下&#xff0c; python 版本 可能会有差异&#xff0c; 比如ubuntu 22.04 里是 libpython3.10-dev &#xff09…

2024/4/1—力扣—最小高度树

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ struct TreeNode* buildTree(int *nums, int l, int r) {if (l > r) {return NULL; // 递归出口}struct…

[StartingPoint][Tier1]Sequel

Task 1 During our scan, which port do we find serving MySQL? (在扫描过程中&#xff0c;我们发现哪个端口为 MySQL 提供服务&#xff1f;) 3306 Task 2 What community-developed MySQL version is the target running? (目标正在运行哪个社区开发的 MySQL 版本&…

Python实现【坦克大战】+源码分享

写在前面&#xff1a; 坦克大战&#xff0c;这款经典的电子游戏&#xff0c;无疑是许多80后和90后心中不可磨灭的童年记忆。它不仅仅是一款游戏&#xff0c;更是那个时代科技娱乐方式的缩影&#xff0c;见证了电子游戏行业的起步与发展。 在那个电脑和网络尚未完全普及的年代…

c语言实现2048小游戏

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h>int best 0 ;// 定义2048游戏的结构体 typedef struct { int martix[16]; // 当前4*4矩阵的数字 int martixPrior[16]; // 上一步的4*4矩阵的数字 int emptyIndex[16…

LeetCode 1017. 负二进制转换

解题思路 相关代码 class Solution {public String baseNeg2(int n) {if(n0) return "0";String s"";while(n!0)if(Math.abs(n)%20){nn/(-2);ss0;}else{ss1; n (n-1)/(-2);}String t reverse(s);return t;}public String reverse(String s){Str…

前端三剑客 —— JavaScript (第一节)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1&#xff09;创建外部JS文件 2&#xff09;编写页面 对话框 警…

【Threejs进阶教程-效果篇】1.Threejs文字与css2d/css3d技术

Threejs文字与css2d/css3d技术 学习ThreeJS的捷径学习之前先搞清楚自己想要什么样的效果贴图文字准备一张带文字的png贴图使用sprite来进行贴图实现2D始终面朝相机的文字使用planeGeometry来贴图实现3D文字使用planeGeometry来贴图实现伪3D文字动态贴图文字html2Canvas 文字几何…

操作系统复习

虚拟内存 内存(memory)资源永远都是稀缺的&#xff0c;当越来越多的进程需要越来越来内存时&#xff0c;某些进程会因为得不到内存而无法运行&#xff1b; 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存&#xff0c;而实际上&#xff0…

HTML基础知识详解(下)(如果想知道html的全部基础知识点,那么只看这一篇就足够了!)

前言&#xff1a;在上一篇文章中&#xff0c;我们已经学习完了超链接标签、列表标签和表格标签&#xff0c;但是我们还有一些标签没有学习&#xff0c;在这篇文章中&#xff0c;我们将学习剩余的标签。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页…

JAVA并发编程(一)

JAVA并发编程&#xff08;一&#xff09; 1.1JAVA线程API 1.1.1currentThread package com.lisus2000.thread;/** * 当前线程 * */ public class Test07 extends Thread {public Test07() {System.out.println("new Test07()......" Thread.currentThread().getNa…