当前位置: 首页 > article >正文

MYSQL数据库基础-01.数据库的基本操作

数据库的语法是大小写不敏感的,可以使用大写,也可以使用小写。

每条语句要以;结尾,可以多行输入。

名称不能是关键字,若想用关键字命名,要用反引号 `` 引起来。


目录

一.数据库的基本操作

1.创建数据库:

2.查看数据库:

3.选中数据库:

4.删除数据库:

二、对表的基本操作

1.常见的数据类型

数值类型:

字符串类型:

日期类型:

1.创建表:

2.查看所有表

3.查看表结构

三、对表内容的增删查改

1.新增

2.查找

全列查询:

指定列查询:

表达式查询:

带别名的查询:

去重

排序

条件查询

分页查询 limit

3.修改

4.删除


一.数据库的基本操作

1.创建数据库:

create datadase 数据库名;

注意:1.单词之间用 空格隔开,每条语句以分号结尾。 

           2.不能创建已经存在的数据库(同名数据库)。

当数据库量很大时,为防止创建的数据库名子不重名,可以这样创建:

create database if not exists 数据库名;

(当出行同名的数据库时,会创建数据库失败,但不会报错)

此时java109数据库已经存在,再次创建,仅有一个警告,不会报错,也不会再次创建。

创建数据库的时候,可以手动指定一下字符集:

character set 字符集名字/charset 字符集名字

create database 数据库名 charset 字符集名;

后来又有了utf8mb4,是完全的utf8.

什么是字符集:

在计算机中,一个汉字,占几个字节?

这个问题,不同的字符集,在不同的编码下,答案是不同的。

VS默认的字符集和系统自带的编码都是gbk,对应的一个汉字占两个字节。

utf8编码下,一个汉字占3个字节。

还有一种编码:unicode编码:是对字符进行编码,但无法对字符串进行编码,

2.查看数据库:

列出当前mysql服务器中有哪些数据库。

show databases;

3.选中数据库:

use  数据库名;

选中数据库后,就可以在这个数据库中创建表了,并对表进行操作(对数据库进行操作,最主要的就是对表进行操作了)。

4.删除数据库:

drop database 数据库名;

注意:删除数据库是一个非常危险的操作,特别是处理相关业务的时候,删除数据库,删除的不仅仅是这个数据库,数据库中的表及相关的数据都被删除了,且是不可再恢复的,因此一定要谨慎删库。

1.设置权限

2.提前把数据做好备份

3.当要进行类似的危险的,重要的操作时,可以找一个人,对上述操作一起进行,可以尽量防止误操作。

二、对表的基本操作

对表操作的前提是 先选中数据库。

1.常见的数据类型

数值类型:

整形:

浮点型:

float(M,D) :括号中的 M表示小数的长度,D表示小数点后保留几位。

decimal(M,D): 更加精确的保存浮点数。decimal(M,D)虽能更加精确的保存浮点数,但运算速度会变慢,还会浪费更多的空间,因此要在特定的场合使用。

数值类型可以指定为无符号:unsigned ,表示不取负数。

字符串类型:

varchar(size) :size表示最多存储字符的个数。

text ,mediumtext 都是用来存储文本数据的。

blob 用来存储二进制数据。

日期类型:

timespace 就是一个时间戳,用1970年0时0分0秒为一个基准时间,计算 现在时间与基准时间的秒/毫秒/微妙之差.

以后使用时间类型,一般用datatime,timespace的大小为4字节,表示的范围是到2038年,很快就到了,到时就没法再用了,

1.创建表:

一个表可以有很多行,每一行代表一条记录;也可以有很多列,每一列称为一个字段,代表的是一种具体的数据类型。

create table 表名(列名 类型,列明 类型,....);

类型:整形 int long

        浮点型 float decimal

        字符串 varchar

        日期 datatime

2.查看所有表

show tables;

3.查看表结构

desc 表名;

desc :describe描述

field:字段,列名

type:类型

NULL :表示是否允许为空,YES表示可以为空,

KEY:表示是否为关键字

default:表示默认值,没有指定是默认为NULL

Extra:表示其他的

4.删除表

drop table 表名;

删除表操作也是一个非常危险的操作,删除表不仅把表格删除,表中的数据也全被删除了。

三、对表内容的增删查改

1.新增

insert into 表名 values (值,值,...);

这里插入的值的类型,个数 要和创建表时的结构 相匹配。

插入指定列:

inset into 表名 (列名,列名...) values (值,值...);

对某些指定的列进行插入.

一次插入多条记录:

insert into 表名 values (值,值...),(值,值...)...;

2.查找

全列查询:

select * from 表名;

在真正使用的时候,select *查询操作是很危险的操作,mysql查询都是在硬盘上进行的,当要查询的表中有大量数据时,可能会是硬盘损坏,是数据丢失,这造成的后果是非常严重的,因此一定要谨慎使用.

指定列查询:

select (列名,列名,...) from 表名;

表达式查询:

select 表达式 from 表名;

表达式指的是针对每列进行加减乘除类似的运算,把当前表的每一行对应的列进行运算.

这里的运算仅是针对从数据库中查询出的数据,进行计算,是一份临时的数据,不会修改数据库中原本保存的数据。

带别名的查询:

select  列名 as 别名 from 表名;

as 别名: as可以针对列名/表名/库名,as是可以省略的,但不建议省略.

去重

distinct

用于修饰某一列/多列,当值相同时,仅保存一条记录.

select distince 列名,列名... from 表名;

排序

针对列进行排序,把每一行的数据进行排序。

order by 列名  asc/desc

asc为升序排列(升序为默认排序规则,可以不写),desc为降序排序.

select 列名 from 表名 order by 列名 asc/desc;

当没有使用order by 时,对数据库查询出的结果是无序的,随机的.

按指定列进行查询,若查询结果未对排序列进行查询,也是可以的,不影响查询结果.

对多列进行排序:

select 列名 from 表名 order by 列名 asc/desc,列名asc/desc...;

 以指定列顺序为优先级,对指定列按指定排序顺序先进行排序,再按照下一个列的指定列排序.

条件查询

where

指定具体的条件,对条件进行查询.

select 列名 from 表名 where 条件;

遍历表的每一条记录,把每一条数据带入条件,条件成立,就显示在结果表中;不成立就不会显示.

比较运算符:

逻辑运算符:

注意:where条件可以使用表达式,但不能使用别名.

创建学生成绩表exam_result,保存chinese,math,english三门成绩.

查询总成绩大于200的同学:

查询语文成绩为90的同学:

注意:mysql中的=表示判断的意思,和java中的含义不一样.

and / or

查询语文成绩大于80分,且英语成绩大于80分的同学:

查询语文成绩大于80分,或英语成绩大于80分的同学:

注意:and的优先级大于or,使用时,可以通过()来设置执行顺序.

between and:通常用来查询区间段的数据,闭区间.

查询语文成绩在 [80, 90] 分的同学及语文成绩

in:通常用来查询离散的数据

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

模糊查询:% 匹配任意多个(包括 0 个)字符,_匹配任意一个字符

查询姓张的同学成绩:

未知NULL:

查询语文成绩未知的人:

分页查询 limit

select 列名 from 表名 limit n (offset m);

从m行开始,最多筛选n条记录.(offset m 不写,默认从第0行记录开始)

使用select * 查询表是比较危险的,可以使用分页查询,限制查询数据的个数

从第3行开始,筛选3条记录:

从第4行开始,筛选3行记录:

只剩下两行记录,就显示两行.

3.修改

update  表名 set 列名=值,列名=值,... where 条件;

对制定条件下的某行的值进行修改,若为设置条件,则会对所有行都修改.

 将张张同学的数学成绩变更为 80 分,语文成绩变更为 60 分

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

 这里有一个报错:out of range value for column math:数学这个字段超出范围.

成绩的类型为double(3,1),加上30后,成绩大于100,超出范围.修改为将数学成绩减30:

注意:mysql中没有+=  -=  *=  /= 类似语法

将所有同学的语文成绩更新为原来的 1/2 

4.删除

delete from 表名 where 条件;

删除满足条件的行,若条件没写,则会将表中的数据都删除.

将表中的数据删空 delete from ,和删除表drop table 这两个操作,表中的数据都将不存在,但第一个操作,表还存在,只是表中的数据不存在了;第二个数据会将表和表中的数据都给删除.

注意:

修改(update),和删除(delete)都是对数据库进行的操作,都是永久性的,这两个操作也是危险操作,操作时,要谨慎使用.

数据库的很多操作都是危险操作,可以进行备份,应对误操作:


http://www.kler.cn/a/510534.html

相关文章:

  • 数字图像处理:实验二
  • 深度学习 DAY1:RNN 神经网络及其变体网络(LSTM、GRU)
  • leetcode-买卖股票问题
  • v2富文本框封装 @wangeditor/editor-for-vue
  • 【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间
  • 本地仓库管理之当前分支内的操作
  • Windows图形界面(GUI)-QT-C/C++ - Qt控件与布局系统详解
  • 汇旺财支付PHP代码
  • 服务化架构 IM 系统之应用 MQ
  • 数据库服务体系结构
  • 基于机器学习的用户健康风险分类及预测分析
  • 数据结构 (C语言) 链表
  • C#里await Task.Run死锁的分析与解决
  • 【错误解决方案记录】spine3.8.75导出的数据使用unity-spine3.8插件解析失败报错的解决方案
  • 知识库管理系统的用户体验之道:便捷、高效、智能
  • PyTorch 基础数据集:从理论到实践的深度学习基石
  • 洛谷P1807 最长路(拓扑排序)
  • 【MySQL索引:B+树与页的深度解析】
  • 将n变为一个可以被表示为2^{a}+2^{b}的正整数m
  • ChatGPT Task功能初探
  • 机器学习和深度学习的概念
  • Simple Live (直播聚合应用:斗鱼、虎牙、哔哩哔哩、抖音)
  • Sealos 将计算节点加入 kubeadm 安装的 Kubernetes 集群
  • Linux 查看目录下的文件夹命令与 find 查找某个目录但不包括该目录本身
  • 美食推荐系统 协同过滤余弦函数推荐美食 Springboot Vue Element-UI前后端分离
  • 019:什么是 Resnet50 神经网络