开开心心带你学习MySQL数据库之第三篇下

MySQL表的增删改查

previewfile_2989626098

前言

mysql最核心的部分

这里涉及到的都是咱们在工作中最常用到的

这些东西掌握了,就覆盖日常工作80%+以上的内容

励志言论

自己是自己个人成长的第一责任人

如果你是一个想要自己成长的人,势必要主动成长

鸡蛋从外打破是压力,从内打破是成长

CRUD

CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写~~作为一个后端程序猿,做的主要工作,就是CRUD

新增/插入数据

语法(使用)

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

~~insert into 关键字 ~~into 可以省略,不过建议写上

~~values 关键字

~~( ) 括号里是你要插入的值

例子:

insert into student values (1, '小白');

~~ ( ) 括号里你要插入的值的个数,类型,顺序要和表头结构匹配

~~ SQL没有字符类型,‘ ’和“ ”都可以表示字符串

image-20230903222217016


插入的数据错误情况如下

~~主要错误

( ) 括号里你要插入的值的个数,类型,顺序要和表头结构不匹配

image-20230903222440366

~~ 此处还有一种错误

数据库字符集没有正确配置引起的~~

数据库不做任何修改,默认情况下创建的数据库字符集是"拉丁文"字符集,不能表示中文.

解决

此时要做的事情,让咱们的数据库,字符集和你输入的文字的字符集匹配.

如果你输入的文字是utf8,就得在创建数据库的时候设置成utf8

~~ 记得把原有报错的数据库删除,再重新创建一次

create database [数据库名] charset utf8;

注意:—般来说,大部分的终端是utf8的.但是也可能是gbk的 => 就得在创建数据库的时候设置成gbk的

create database [数据库名] charset gbk;

utf8和utfmb4的区别

~~ mysql里的utf8是一个残本(不完整),比正经utf8缺少一部分字符.(主要是缺少emoji表情…)

~~ 使用utf8,正常保存数据都没事.带上表情,可能就出错了

~~ 使用utf8mb4是更完整的utf8

~~ 至于使用utf8还是使用utfmb4,看个人情况

insert语句的变种

create table student (id int, name varchar(20), gender varchar(5));
desc student;

显示结果如下

Field Type Null Key Default Extra
id int(11) YES NULL
name varchar(20) YES NULL
gender varchar(5) YES NULL

在插入的时候,指定某个/某些列来插入.

insert into student (name, gender) values ('fly', '男');

~~ 此时values后面的内容就是和values前面()的内容相匹配的

~~ 要想看到结果,需要使用查询语句

~~最简单的查询 ~~select * from student;

select * from student;

显示结果如下

id name gender
NULL fly

也可以一次插入多个记录~~一次插入values后面写多个()

一次插入values后面写多个( )

insert into student values (2, '初一', '男'), (3, '初二', '男');

image-20230904170200535


~~ 一次插入N个记录,比一次插入一个记录,分N次插入,效率要高一些

原因:MySQL是一个“客户端服务器”结构的程序

一次插入N个记录 ~~ 只需要和服务器交互一次

一个记录,分N次插入 ~~ 需要和服务器交互多次

交互多次的成本要比交互一次高很多

image-20230904164316446

就像是在良品铺子买吃的

买几包芒果干~~下单.商家就接单

再买点核桃仁~~又下单了

商家是把两个订单分开发货,还是合成一个来发货?

一起发!!~~对于商家来说,就降低了成本,只需要一份运费,而不是两份运费


关于时间日期类型的数据插入

插入时间的时候,是通过特定格式的字符串来表示时间日期的.

形如 ‘2023-09-04 17:07:00’

~~ 如果你想把这个时间日期设置成当前时刻,可以使用sql提供的一个特殊函数now()

create table homework (id int, createTime time);

desc homework;

insert into homework values (1, '2023-09-04 17:07:00');

select * from homework;

insert into homework values (2, now());

select * from homework;

image-20230904172026327

查询(Retrieve) 操作

全列查询

~~ 查找整个表,所有行的所有列

select * from 表名;

* 表示所有的列.

这种特殊含义的符号,计算机中叫做“通配符”

例子:在扑克牌中,空白牌(或空牌),即该牌上没有花色和点数。在斗地主游戏中,空白牌可以用来代表任意花色/任意点数,

image-20230904175811567

注意!!!执行select*操作,可能会非常危险!!

原因: 读取返回的数据量庞大

~~如果读取返回的数据量就几百几千,都没啥事,乐意咋 select 就咋搞

~~如果读取返回的数据量有几亿,几十亿…select * from 操作,就麻烦了

你的硬盘可以想象成是建筑工地~~现在从硬盘读数据,相当于很多大卡车从工地往外拉土 ~~

由于要拉的土太多,车也太多,瞬间把路给堵住了~~别人想从这条路走,堵车了,走不了!!!

瞬间吃满硬盘带宽和网络带宽…就可能导致其他程序无法使用硬盘或者使用网络…

带宽 : 数据的传输速率,在单位时间内能传输的数据量

想象一下,一条公路~~

有路比较窄,单位时间能通过的车就比较少.称为"带宽低"有的路比较宽,单位时间能通过的车就很多.称为"带宽高"可以用1s 能够读写多少个字节,或者多少个bit来衡量带宽.

开了1G的宽带,意思就是你的网络速度1秒钟最多可以下载1G bit => 120多MB

猜你喜欢

转载自blog.csdn.net/m0_73740682/article/details/132675351