数据库select操作

插入数据时,一次插入多条数据,比多次插入多条同样的数据消耗时间少很多。

  • 表的查找

1.全列查找:直接把一个表的所有列所有行都打印。

select * from 表名。

*叫通配符,表示一个表的所有列。

之前说数据库的表存在硬盘上,

 而select * from 表名,查询的临时结果表,不是在硬盘上,而是在内存中,随着进行了输出后,数据也就被释放了。

这个表是永久存储在服务器硬盘的,当输入命令后,客户端会把命令包装成网络请求,发给服务器,服务器收到命令请求,会操作硬盘,从硬盘中读取数据,把数据包装成响应,这个响应就是查询的结果。

客户端收到响应数据后,就会临时的把数据在内存中保存起来,并在显示器上输出。

打印完毕后, 在客户端临时保存的数据也就被释放了。

select不会影响服务器保存的数据。

  • 指定列查询。

select 列名 ,列名 from 表名。 

相比于全列查询,这种查询更高效。

  • 指定查询字段为表达式

 查询时进行一下运算(列与列之间)

例如期望查询结果语文比实际多10分。

 实际表中的数据不会变。

我们也可以查询总分。

下面decimal(3,1)中的三代表数据有效数字为3,但是上面加完后的有效数字不等于3也是可以的。 

 

临时表类型会自动适应,保证结果准确性。 

  • 查询字段指定别名,相当于是给查询结果的临时表,指定新的列名。

 通过指定别名,避免得到的临时表名字比较乱。

  • 查询结果去重 

 如果针对多列去重,那么两个对象,这俩列都相同才会去掉。

  • 排序 

根据临时表排序,磁盘上的数据不变。

select 列名 from 表名 order by 列名 asc/desc (asc是升序,desc是降序)

 "*"代表全部列。asc不写,默认是升序。NULL代表最小。

我们也可以用总分进行升序排序。

也可以取别名排序。

 排序时也可以通过order by来指定多个列进行排序。

先根据第一列排,第一列相同,按第二列排序。

 先按数学排,数学相同按语文排。

如果不指定多个列,只有指定一个列,如果结果相同,彼此之间的顺序都是不可预期的。

  • 条件查询

 select 列名 from 表名 where 条件;

NULL=NULL结果是NULL,会视为假,条件不成立,所以不能这样判断是不是空。

<=>也是比较相等,只是用它比较空值,结果为真。

 下面是同一个人比较。

 然而下面的会报错。

 where语句不能使用别名

查询语句,要查询的列和where后面访问的列是没什么关联的。

下面是个查询的例子

下面是寻找数学大于80或者英语大于80的。

表达式里如果有and和or,先计算and,后计算or,如果想打破优先级 就加括号。

下面例子中,孟德英语小于70,画横线的条件不成立,但是因为和or是或的关系,他chinese大于80条件成立,所以孟德也会打印。

然后下面这个因为和english>70是与的关系,所以没有孟德。 

 下面这两个效果一样。

 between and是左闭右闭的。

in代表是其中的值就为真。

  •  模糊查询

like指令是模糊匹配,搭配统配符使用。

只要对方描述的字符串符合你描述的这个形式就行。 

%代表任意个任意字符,也包含0个字符。

_代表任意一个字符。 

 下面演示一下。

下面这个是全部数据

下面测试一下。 

 

 

模拟匹配其实是指定一个规则,但凡符合这个规则的字符串都会被筛选出来。

%张%代表张前面可以有任意字符,后面也能有任意字符。 

如果抛开SQL,站在更广的角度看通配符体系的话,编程中还有一个对象叫"正则表达式",提供了更多的特殊符号,来描述一个字符串规则。

正则表达式里面特殊符号太多,可读性太差。

因为和NULL=NULL为假,所以即使是NULL,条件也会是假。

  •  分页查询

下面这样,一页就只展示3个数据了。 

 

获取下一页可以下面这样做。

 offset 0,还是前3条。

offert 几代表向后移动几个。

 

 移多后就变空了。

 下面是输出成绩前3高的指令。

select * from 表名,对于生产环境的数据库来说, 非常危险~

~危险不危险,看的是返回结果的数据量是多还是少~

~ 返回的数据量少,其实就还好.返回的数据量多,就比较危险~ 

如何才能让 sql 不那么危险?
1.限制更严格的条件where
2.使用 limit 更稳妥的限制.

  • 修改 

把select换成update

update是会修改数据库磁盘数据的 

where后面的条件就直接决定了多少个记录受到了影响。

没有直接的撤销操作。 

 

 如果出现下面错误,说明数据超出类型范围了。比如说用decimal(3,1),成绩超出100,有效数字就会变为4位,就会出错。

 这里只改了2个,是因为张三丰是NULL,加30不会变。

show warnings可以查看警告具体信息。 

delete from 表名 where 条件 是删除操作。delete是只删除表数据。

drop table是表和数据都没有了。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南种北李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值