mysql 中select语句

1、select * from 表名;查询出来所有的信息(不推荐使用)
2、select 列名 、列名、列名,列名 from 表名; 查询表中列的信息(推荐)
3、select distinct english from exam;过滤表中重复数据。过滤掉重复的英语成绩

查询出语文、数学成绩,并过滤掉语文和数学分数一样的数据:

select exam.name,exam.chinese,exam.math from exam;

4、别名:(as可以省略)

4.1、select e.`name`,e.chinese,e.math from exam;(表的别名引用)

4.2、select exam.`name`,exam.chinese,exam.math from exam;(表名当别名引用)

4.3、SELECT e.`name` as '姓名',e.chinese as '语文' from exam as e;(给字段起别名)

4.4、少数民族的关羽语文加10分,只在查询的时候加10分,不修改数据

SELECT e.name,e.chinese+10 '语文' FROM exam e WHERE e.name='关羽';

5、条件查询:

select * from 表名 where 条件

查询顺序 ,先执行where 在查询出来结果集

SELECT * FROM exam e WHERE e.name='关羽';

不能将别名作为条件查询,因为会先执行where。再执行查询输出。

SELECT e.name '姓名',e.chinese+e.english+e.math 总成绩 FROM exam e WHERE

e.chinese+e.english+e.math>200;

6、.sql结尾的文件,叫sql脚本

sql脚本导入:选择数据库 -->运行sql文件 -->选择需要导入的.sql脚本

7、where 字句查询

7.1、比较运算符

>:大于 =:等于 <:小于 >=:大于等于 <=:小于等于 '<>' :不等于

语文成绩不小于90分,有哪些

SELECT e.name '姓名',e.chinese '语文' FROM exam e WHERE e.chinese>=90;

7.2、BETWEEN 数值 AND 数值 区间的值 注意:前边的数值一定要比后边的数值小

between 数值1 and 数值2 ; 查出来的数值是大于等于数值1并且小于等于数值2的

查询语文成绩大于等于70小于等于90的学生:

SELECT e.name,e.chinese from exam e WHERE e.chinese BETWEEN 70 AND 90;

<> 和!=是一样的,推荐使用<>

7.3、in(值1,值2,值3,...)列的值等于这个括号中的任意一个就可以 类似or

找出语文成绩是(70,80,90)这些人有谁

SELECT e.name,e.chinese FROM exam e WHERE e.chinese in(70,80,90);

7.4、OR 逻辑或 多个条件只要一个成立就行

SELECT e.name,e.chinese FROM exam e WHERE e.chinese=70 or e.chinese=80 or e.chinese=90;

7.5、模糊查询 like( %表示是任意字符 _表示占位符)(一个下划线一个字符)

如果要匹配'_'和'%'的话用\来匹配

以张开头的学生:

SELECT e.name FROM exam e WHERE e.name LIKE '张%';

SELECT e.name FROM exam e WHERE e.name LIKE '\_';

null 比较特殊,不参与运算,与任何数据运算的结果都是null

7.6、判断某个值是否为null不能使用=,只能使用is null,不是null用is not null

使用=null不会报错,但是没有意义;

查找语文成绩是null的:

SELECT *FROM exam e WHERE e.chinese is NULL;

查找数学成绩不是null:

SELECT *FROM exam e WHERE e.math is NOT NULL;

7.7、逻辑运算符

1)、条件1 and 条件2 与逻辑运算一样,必须条件1和条件2同时成立才算符合条件

语文成绩和数学都>80分的学生信息

SELECT e.name,e.chinese,e.math FROM exam e WHERE e.chinese>80 AND e.math>80;

2)、条件1 or 条件2与逻辑或一样,满足条件1或者条件2都行

3)、in 可以转为or ,但是or不一定可以转换为in

语文和数学或英语任意一门大于90分的学生信息:

SELECT * FROM exam e WHERE e.chinese>90 OR e.english>90 or e.math>90;

4)、not 不单独使用,一般是配合in 和is使用 is not null或 not in

查找语文成绩不是70,80,90的人·有哪些

SELECT * FROM exam e WHERE e.chinese NOT in (70,80,90);

不能这样写,这样只是把null值筛选出来。

SELECT * FROM exam e WHERE e.chinese !=70 OR e.chinese!=80 OR e.chinese!=90;

7.8、排序 order by asc :升序 desc:降序

1)、第一列数据相同时,才会按照第二个列排序。

2)、排序的列名越靠前,越能起主导作用,后边的列可能一次也用不上

3)、from表 再where条件 然后再查字段之类的,第四布才是排序

按照数学的最高分到最低分进行排序显示,如果数学分数相同的话按照语文降序排序,语文相同,按照英语降序排序:

SELECT *FROM exam e ORDER BY e.math DESC,e.chinese DESC,e.english DESC;

按照总分数来进行排序,倒序输出:

SELECT *, e.chinese+e.english+e.math '总成绩' FROM exam e ORDER BY e.chinese+e.english+e.math DESC;

查找总成绩不为null的人再按照成绩进行降序输出

SELECT*,e.chinese+e.english+e.math 'totle' FROM exam e

WHERE e.chinese+e.english+e.math is not NULL

ORDER BY totle DESC;

7.9、null值,

1)、null值,只要参与运算,结果都是null

2)、函数 ifnull (可能为null的数据,如果左侧的数据是null的话显示这个数据)

3)、ifnull(列名,默认值);如果这个值是null,就以默认值使用

按照总分数来进行排序,倒序输出:

SELECT e.name,IFNULL(e.chinese,0) '语文',IFNULL(e.english,0) '英语',IFNULL(e.math,0) '数学',

IFNULL(e.chinese,0)+IFNULL(e.english,0)+IFNULL(e.math,0) 'total'

FROM exam e ORDER BY total desc;

7.10、聚集函数:分组函数 不能在where字句中使用,因为where在分组函数之前执行

1)、求和: 是sum();

2)、求平均值:avg();

3)、最大值:max();

4)、最小值: min();

5)、求数量 count();

6)、 count (1/0/*);查看表中有多少数据0或1或*结果都是一样的都是查询有多少条数据

查询这个列中不包含null的数据条数:

SELECT COUNT(chinese)FROM exam;

查询英语成绩大于80分的人的数量:

SELECT COUNT(*) FROM exam e WHERE e.english>80;

7)、sum(列名) ------统计该列的所有的值的和。sum 也可排除null

select sum(列名) from 表名 where 条件

表中所有人员的总成绩

SELECT SUM(e.chinese)+SUM(e.english)+SUM(e.math) '总成绩'FROM exam e;

求数学平均分 ,总人数

SELECT SUM(e.math)/COUNT(*) '数学平均分'FROM exam e;

有成绩的平均分

SELECT SUM(e.math)/COUNT(e.math) '数学平均分'FROM exam e;

8、注意:

8.1、起别名的时候 as 可以省略。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值