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

news/2025/1/23 4:53:58/

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

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

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


目录

一.数据库的基本操作

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.ppmy.cn/news/1565396.html

相关文章

MySQL(4)多表查询

引言:为什么需要多表的查询? A:提高效率,多线进行。 高内聚、低耦合。 一、多表查询的条件 1、错误的多表查询: SELECT employee_id,department_name FROM employees,departments; SELECT employee_id,department…

用css和html制作太极图

目录 css相关参数介绍 边距 边框 伪元素选择器 太极图案例实现、 代码 效果 css相关参数介绍 边距 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}div{width: …

NoETL | 数据虚拟化如何在数据不移动的情况下实现媲美物理移动的实时交付?

在我们之前的文章中&#xff0c;我们回顾了Denodo在逻辑数据仓库和逻辑数据湖场景中所使用的主要优化技术&#xff08;具体内容请参阅之前的文章&#xff09;。 数据架构 | 逻辑数据仓库与物理数据仓库性能对比_物理数仓、逻辑数仓-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞…

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…

第15章:Python TDD应对货币类开发变化(二)

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…

【Spring Boot】Spring原理:Bean的作用域和生命周期

目录 Spring原理 一. 知识回顾 1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象&#xff0c;现在先来回顾一下IOC/DI的知识吧&#xff01; 首先Spring I…

C# 多线程 安全数据结构

多线程技术 在如今 cpu技术发展的前提下&#xff0c;可以说是高频率使用技术&#xff0c;自然会有相应的一些封装好的 数据结构 在内部满足了 线程安全&#xff0c;以供使用。 ConcurrentQueue 线程安全队列 队列的特点 先进先出 如何保证线程安全的其实就是 用了线程同步的sp…

.Net 学习指南与资料分享

.NET学习资料 .NET学习资料 .NET学习资料 在当今数字化时代&#xff0c;软件开发领域蓬勃发展&#xff0c;.NET 作为微软推出的强大开发平台&#xff0c;凭借其出色的性能、跨平台特性以及丰富的生态系统&#xff0c;在企业级应用、Web 应用、移动应用等众多领域都有着广泛的…