MySQL学习 (三)

1. DQL语言

概念:DQL全称Data Query Language,是数据库学习最主要的四大语言之一。也是最重要的,因为数据库超过80%的数据操作都是针对查询的;而插入,删除以及更新几乎很少;所以个人感觉DQL,DCL,DML,DDL最重要的是DQL。整个DQL语句都围绕着一个单词Select展开。


2. 基础select语句与别名

  1. 最常见的查询语句 select *from 表名;这句话可以查出表中所有字段的数据。但是面对一个超级庞大的数据表是不可能这样查的。只会筛选出可能需要的一些字段或者一些指定的数据。
//查询grade表中所有的数据
select *from grade;
/*
gradeid = 1, gradename = 大一
gradeid = 2, gradename = 大二
gradeid = 3, gradename = 大三
gradeid = 4, gradename = 大四
gradeid = 5, gradename = 预科班
*/
  1. select 字段,字段… from 表名;从当前表中查询出这些指定字段的数据。因此可以对上面的基础情况认为’ * '是一个通配符表示所有字段。
//查询grade表中gradename字段的所有数据
select `gradename` from grade;

select `gradename` as 年级 from `grade`

在这里插入图片描述
利用重命名可以将获取到的数据表以符合便于人类阅读的方式展示,当查询多个字段时每个字段都可以重命名展示。但是它的字段名并没有改变只是在展示数据的时候改变了,修改表的字段的名字是使用alter。

  1. 可以使用一些函数进行处理,例如使用Concat(a,b)将两个字符串连接,也可以使用distinct进行去重,以及进行一些计算或者执行一些表达式都是可以的。

在这里插入图片描述

在这里插入图片描述

-- 一些常见的基础操作
select 3*9-1		-- 查询计算结果26 

select current_time     -- 查询当前时间

select @@auto_increment_increment	-- 查询当前自增步长

select version()	-- 查询当前MySQL版本

3. 模糊匹配查询

简介:like关键词的使用。在DQL语言中当对具体的数据了解不准确时可以使用like关键词进行模糊匹配查询。

  1. like关键词可以匹配’ % ‘使用,%表示0个或者多个字符。也可以匹配’ _ ‘使用,’ _ '表示单个字符。
-- 查询以张字开头的同学,张字在其他位置查不出来的。
select studentno, studentname from student where studentname like '张%';


-- 查询以张字开头两个字的同学
select studentno, studentname from student where studentname like '张_';


-- 查询以张字开头三个字的同学
select studentno, studentname from student where studentname like '张__';

-- 查询名字中包括 伟 字的同学
select studentno, studentname from student where studentname like '%伟%';

  1. [ ] 指定范围 ([a-f]) 或 ([abcdef]) 中的任何单个字符。
-- 查询studentname字段中含有小写字母的
select studentno, studentname from student where studentname like '%[a-z]%';

-- 查询studentname字段中含有a 或 c字母的
select studentno, studentname from student where studentname like '%[ac]%';
  1. [ ^ ] 查询不属于指定范围 ([c-e]) 或集合([cde]) 的任何单个字符,和上面的结果相反的。
-- 查询studentname字段中不含有c d e字母的
select studentno, studentname from student where studentname like '%[^c-e]%';
  1. ’ * ’ 属于通配符代表多个字符;’ ? '属于通配符代表单个字符; ’ # '属于通配符代表单个数字;用法和上面的 _ 和 % 大致相同。

4. 精确匹配查询

  1. in关键词的使用。DQL语句中in关键词可以大量缩短代码,加速匹配过程。in是精确匹配,待匹配的选项中不能存在模糊的选项,例如带’ % ‘,’ _ '等等。
-- 查询studentno 为 1001 1002 1003的同学

-- 采用级联 or 的形式,过多时代码冗余
select studentno, studentname from student 
where studentno = 1001 or studentno = 1002 or studentno = 1003;

-- 采用in可以达到一样的效果
select studentno, studentname from student where studentno in(1001,1002,1003);

  1. in的括号中不仅仅可以接字段也可以接表达式,in (表达式1,表达式2,表达式3…)这种操作比多级联的or操作有更好的效率,特别是在联表查询的时候非常的又用。可以将一个子select子句作为in的一个匹配参数。

-- 查询学号为1003+x 或者 1001 或者 1005 或者满足后面select语句 学生
select studentno, studentname from student where studentno in (1003+x,1001,1005,select语句);











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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值