DQL数据库查询语言

样例表

create table tb_user(
	id bigint peimary key auto_increment,
	username varchar(20) not null,
	password varchar(32) not null,
	birth date,
	sex char,
	score number(8,2)
	)engine=innodb default charset utf8;

语法:

  • select all/distinct <目标表达式>,<目标表达式>,...... from 表名称或者视图名称,表名称或者视图名称,...... --mysql中允许查询语句没有from where 条件语句;
  • select all/distinct <目标表达式>,<目标表达式>,...... from 表名称或者视图名称,表名称或者视图名称,...... group by 分组条件 having 条件表达式 -- having后跟分成的组满足的条件;
  • select all/distinct <目标表达式>,<目标表达式>,...... from 表名称或者视图名称,表名称或者视图名称,...... order by 排序条件 desc/asc; -- desc是逆序输出,asc是正序输出
  • select all/distinct <目标表达式>,<目标表达式>,...... from 表名称或者视图名称,表名称或者视图名称,...... limit ....

查看表中所有数据

语法:select * from tb_user;
“*”是一个通配符,表示获取表中所有列的值。
如果是获取表中一部分列,例如只想获取用户名和id值,可以这样写select username,id from tb_user;

使用✳的优势:
  • 一定程度上减少了编码量;
  • 可以避免书写具体字段名称时的繁琐和笔误;
  • 新增字段时,不需要修改select代码,在一定程度上提高了代码的复用率。
使用✳的不足:
  • 使用✳会增加查询分析器的解析成本;
  • 在使用MyBatis等持久层框架时,增删字段容易出现操作和配置不一致的问题;
  • 查询无用的字段会增加网络消耗,尤其是针对text/blob之类的大对象字段;
  • 可会失去优化器中覆盖索引策略优化

带条件查询

例如:
查看表中id值大于等于10的所有用户信息:
select * from tb_user where id >=10;
查看表中生日在1999年之后的所有用户信息:
select * from tb_user where year(birth)>1999;
在SQL语句中,等值判断使用=,而不是==。
等于 = , 大于> , 小于< , 大于等于>= , 小于等于<=

在条件查询是可以使用and、or、between、not
select * from tb_student where (id,name) >(1,"aaa");

select * from tb_student where id>1 and name>"aaa";

select * from tb_student where age<20 and sex='男';

select * from tb_student where age >20 and age <25;

select * from tb_student where age between 20 and 25;

select * from tb_student where name="张三" or name like '张%' ;

select * from tb_student where not(sex='男');
在具体应用中一般不会直接存储年龄,而是记录生日,通过year(now())-year(birth) as age

非空或者空值判断

空值判断:is null
非空判断:is not null

字符串比较

模糊查询 like/not like 通配符_或者%
通配符"_“表示一个任意字符
通配符”%"表示任意个任意字符
例如:

-- 查询所有姓杨的用户,这个用户只能叫杨某,名字是两个字的
select * from tb_student where username like '杨_';

-- 查询所有姓杨的用户,这个用户叫杨某某.....,名字可以是任意个字符
select * from tb_student where username like'杨%';

通配符_和%可以在字符串的任意位置

选择表中的若干元组

元组就是事物特征的组合,可以用于描述一个具体的事物。
关系:一个带有表头的二维表格,表中的每一行数据就是一个元组,元组的集合就是关系,每个列就是一个属性。在二维表中元组耶可以称为行,属性是列。

  • 字段:某个事物的一个特征,也可也称为属性或者列;
  • 表:记录属性的一个特征,表示同一类事物的组合;
  • 主键:能够唯一标识一行数据的列组合。一个表只能由有一个主键,但是主键可以由多个列构成;
  • 域:属性的取值范围;
  • 关系模式:关系的描述;
  • 关系约束:实体完整性、参照完整性、用户自定义完整性。
    例如:
    select * from tb_user where (id,name) > (1,'aaa');
    select * from tb_user where id>1 and name>'aaa';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值