DQL数据库的查询语言
基本的DQL查询
select * from teacher;不推荐使用,效率不高
给teacher表取别名为t,查询name和age两列信息
select t.name,t.age from teacher as t;
select name,age from teacher; 与上一条等效
select语法(讲述了where、between和in等,左右并没有总结)
select [all | distinct]
{*| table.*|[table.field1[as alias1][,table.feild2[as alias2]][,...]]}
#(*代表所有的内容;table.*代表一个表中的所有内容,table意思是一个表的名字;table.field1代表着表中的某一个字段;as alias是给该字段取一个别名;|是或者的意思,是这么多选项中选择)
from table_name [as table_alias]#想要查找的表
[]代表可选的
{}代表必须写的
#代表注释
例如:我们这里为了方便查找先创四个互相关联的表
resul、student、subject、grade;
select * from subject; #查找subject表中的所有内容
这里需要注意的是desc subject;的意思是查找subject表中的字段
where
mysql> select * from result where studentresult=100;
#查找result表中studentresult等于一百的信息
有趣的是我们可以在*前加一个distinct,它的意思是去除重复的信息那输出的是啥呢?
答案是不变,因为它去除的是所有字段中的信息完全一样的行。
我们在判断80到90分数之间的行信息时可以有两种方法
第一种方法:
mysql> select * from result where studentresult>=80 and studentresult<=90;
#查找result表中studentresult在80到90之间的信息
第二种是:
mysql> select * from result where studentresult between 80 and 90;
在看见这个between的时候肯定有小伙伴疑惑了,他的取值区间是否包括两个边界呢
答案肯定是包括的来看图
那除了and肯定也是有or的
select * from result where studentresult<=70 or studentresult=100;
#查找小于70和等于100的行
除了能查等于一个数值的那我们是不是可以指定不等于一个值并且对这一行的其他字段进行限制呢?
比如 select * from result where studentresult!=100 and subjectno=1;
#查找student result不等与100且subjectno=1的行
in
where是在哪里,而in是拥有;而且渣男语录是可以拥有多个的,随意挑选一个的。
mysql> select * from result where subjectno in (1,2,3);
#查找subjectno是1或者2或者3的(他是或关系)
in是要放在where里面一起用的没有where怎么知道是哪里呢,连哪里都没有更不谈有木有了。
当然他这里面也是可以用not来排除几个特定的值从而得到其他的。
mysql> select * from result where studentresult not in (100) and subjectno=1;
#得到subjectno等于1且studentresult不是100的行。
like
同样他也是要放在where里面的,它是用来查找一些我们已经忘记完整信息时候使用的,比如一个叫李四的人,现在我们只知道他姓李,那我们便可以使用like来查找,这便是模糊查找
而他也分多种书写方法
第一个是使用%
使用一个%时,%在查找信息后的意思是以该信息开头的行
%在查找信息的前面的意思是以该消息结尾的行
使用两个%的时候是将模糊记得的信息放在两个%之间
第二个是使用_(下划线)
需要注意的是一个_代表着一单位的词
好了今天的总结就到这里,明天是联合查询和左右。