MySQL基础操作(续)

 日升时奋斗,日落时自省

目录

一、新增数据

1.单行数据,全列插入

2.多行数据,指定列插入

(1)多行数据

(2)指定列出入

二、查询

1、全列查询

 2、指定列查询

3、加一个别名

 4、去重(distinct)

 5、排序

 (1)单列进行排序

(2)多列进行排序

6、where 条件使用

(1)单个条件

(2)and与IN使用比较

(3)范围 between and使用

(4)like模糊查询

  (5)判断是否为空

7、limit查询

 三、修改

 四、删除

在基本操作之前,还需要知道一些MySQL的基本数据类型,SQL是比较早的语言,于当前的编程语言有稍许不同

在MySQL常用基本数据类型

整型和浮点型int(4个字节)float(4个字节)double(8个字节)decimal(精确计算)

浮点类型并不是很精确 

我们了解浮点型是计算精确数字的一种类型,但是在数据库存储中一般不用,涉及到“钱”这种需要精确的类型使用decimal

 字符串类型:varchar (65,535字节) 可变文本数据,text (65,535字节)长文本数据

日期类型:datetime (8个字节)从1000年到9999,这个时间戳,足够维持稳定了,建议平常使用的时候就使用这个日期类型,如果有想法可以去了解另一种日期类型。

一、新增数据

添加数据之前,这里提及一个写注释的方法“-- ” 或者 “#”   

创建一个数据库之后就需要添加数据,添加命令行又分为两种,一种是单行数据,全列插入,另一种是多行数据,指定列添加。

1.单行数据,全列插入

添加命令行 insert into 表名  values()

 这里就是单行数据插入,只插入一条数据

在写varchar类型时,使用的是单引号括起来,其实双引号也是可以的,在数据库中没有很强的类型划分,单双引号都可以表示字符串类型

2.多行数据,指定列插入

(1)多行数据

添加代码 insert into books values(值,值,值。。。),(值,值,值。。。)

 有时候呢,书可能还没有上架,没有价格,那现在这个指定的数据库可以插入吗?  当然可以,只需稍加注意,便可以实现

(2)指定列出入

insert into books(需要插入的指定类型) values ( 值,值,值。。);

(3) 多行数据+指定插入是可以同时使用的,就是连起来就可以了

 这里肯定也会有友友会对于这个没有插入的地方有疑惑,不插入的地方我怎么知道他是啥

这里显示为空,是默认来的,我们查看一下表的结构

 这里有一行默认值对应不同类型,都是null所以当我们没有给price赋值的时候,它就被默认为空

二、查询

前面为了方便我们解释添加操作,我们其实已经进行查询表的操作,能够更清楚的看清插入情况

1、全列查询

命令行 查询代码 select * from 表名    ;

解释: * 表示全列  ,其实这个也好理解,如果学有其他语言的话,例如java中就有导包,导包很多人为了方便*表示所有

当然查询方式全部列也不一定非得用* ,也可以把表中的每一个列都写出来

 2、指定列查询

命令行 select  列名(可以是多个) from 表名;

 当前想给书的库存显示加50本,那怎么查询加50以后的结果呢

 这不就来了,,但是就会觉得这个名字太长了,列名同时也被写成了加50,那想改怎么办,能改

3、加一个别名

命令行

(1)select 列名 as 别名 from 表名;   或者是    (2)select 列名 别名 from 表名 ;

 

建议: 使用带有as 取别名,看着更加规范

注意:这里进行查询的是一个临时表,并没有存在数据库中,下次查询的全列是还是原来的表单,(查询终究是查询)

 4、去重(distinct)

查询多数据的时候,难免会有重复的数据,去重就是不可避免的了

去重 命令行 select distinct 列名 from 表名;

 那去重多列可以吗,可以但是有要求就是,多列都是相同的

 错误示范:那肯定有试我把distinct加在一个列的后面不就行了,那来看下

 5、排序

命令行 : order by  列名 (desc/aec)

排序需要使用的是 order by 来解决问题

排序 分 升序 、降序

升序 表示的是 aec  (aecend)

降序 表示的是 desc  (descend)

这里desc是descend降序的缩写,但是我们之前看见了一个desc显示表结构的一个缩写

显示表结构的desc是 description 描述,这个单词的缩写

 (1)单列进行排序

命令行 select 查询列 from books order by 列 (默认是升序)

 对比后是有序的了,这里是升序 MySQL默认的使用了aec来修饰,这里我们就写一个降序

这里的命令行:

  select * from books order by amount desc

 那们来看一下别名能不能排序

 这里能看到 有别名 ,有排序(降序)

这里就有人想,我把别名写在后面,行不行,那就看你报不报错了

 实际上是不行的,MySQL里面还是先跑查询后才开始排序的

那null能排序吗,答案是能排序

 这里仍旧使用的是默认排序(升序),这么看见null是可以排序的,是比较小的,那有多小呢,若如果于到0,或者负数,他还是最小的吗,可以试一下(价格是不会为负数的,一个例子别当真)

 可以看见-10也是大于null的所以,null就当做是一个最小值就行了

(2)多列进行排序

这里排序肯定是可以多列,排序的,但是也会涉及到先后顺序

price(价格)为降序, amount(库存)为升序

 这里能看到,先以price为降序为主来排序,当前序列相同时,在进行amount的升序排列

这里有一个前后关系,靠前的会先进行排序,靠后的会在靠前列排序好后,才会进行

order by 后每一个列后都可以设置一个排序方式

6、where 条件使用

where会联系到一些运算符号

常见的比较运算符:>,<,<=,>=

等于运算符:=   (使用当前运算符等于   null是不安全的)

等于运算符(安全的): <=>

不等号:!= 

确定范围 : between 数值1 and 数值2       范围:[数值1,数值2]

包括 : IN(option。。) 选中一个就返回true

判断为空  is null    ,判断 不为空 is not null

模糊匹配 : like  (基本使用的就是%和_)(%表示的是一个字符串)(_表示的是一个字符)

模糊匹配速度比较慢,耗时多 

 逻辑运算符:
not  就是不等于  ,直接当做英文的意思来理解就行

and  就是和 ,直接当做英文的意思来理解就行

or    就是或 ,直接当做英文的意思来理解就行

命令行 :select * from books where  写条件

(1)单个条件

 (2)and与IN使用比较

命令行:where in (option    )

可以用and,也可以使用IN来写,看哪一种使用起来更加方便

 可以看的出in在这个方面的方便跟突出一些

(3)范围 between and使用

命令行: where 列名 between 数值1  and 数值2

条件可以是多个也可以是一个,使用and逻辑运算符连接一下 

 现在的写法是可以通过其他的形式来写,这个看也已经很简单了,还有更精简的

 使用between 。。and。。就可以解决上面的的问题

 (4)like模糊查询

命令行: where 列名 like ‘’;

%表示一个字符串可以表示前面的,也可以表示后面的

 _表示一个字符任意位置

 _只能表示一个字符不是字符串,所以在三国后面加一个不会被找到,你给后面加两个下划线(__)就可以了,

(5)判断是否为空

is null 为空 ,is not null 不为空

 这里拿为空和不为空的对比一下,基本就是全表了

7、limit查询

命令行 :select 列名 from 表名 limit ( 限制个数) offset  (从第几行开始)

查新也是一个比较危险的操作,因为查询的数据在公司可能会比较大,将内存吃满,影响服务器使用,不能接收,你当前也查询不出来,带来麻烦,这个限制查询个数就会很好的解决当前问题

 设置好限制的条件就可以快速查询

limit也可以与其他的两个关联使用

例如:取价位最高的三本书

 limit还可以从第几个行开始筛选,做到分页的效果

 这里总结一个例子,同时使用这三个条件的

建议使用 limit 多少行 offset 第几行开始

 三、修改

update 表名 set 改变的条件 where 修改条件 

大体上就是按照需求条件进行修改

 四、删除

删除可以删一行也可以删多行,配合where,order by,limit使用

 这里例如我们想要删除前5个

 可以限制删除的个数limit,也可以限制删除的条件where

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值