1.最基本通用的查询全表的数据
SELECT * FROM employee ;
2.在dos窗口登录mysql,这里面使用库,给库中表添加一条中文数据,会出现插入数据有问题,中文错误。在dos窗口中,默认的编码格式gbk,而mysql服务器软件使用的编码utf8
- 在dos窗口中需要修改 set character_set_client = gbk ;
- 还需要给结果集的字符集 set character_set_results = gbk ;
- 改动完成,才能在dos窗口中临时插入数据可以支持中文的
3.需要查询全表,需要写全部的字段名称,给表起别名(表的名称比较长), 同时给字段起别名
SELECT s.id '编号', FROM student3 AS s ;
4.查询表,查询指定的字段
SELECT
s.`id` '员工ID',-- 编号
s.`name` '员工姓名',
s.age '员工年龄',
s.`sex` '性别'
FROM
student3 s ;
5. 地址字段:出现数据冗余(重复性太多了) 可以通过DISTINCT 去掉多余的数据
SELECT
DISTINCT address
FROM student3;
6.select 指定的字段名称 from 表名 where 条件 ; where 后面可以使用 赋值运算符=, 比较运算符<,<=,>,>=,!=(支持这个语法的,与java类似的运算符)
SELECT
*
FROM
student3
WHERE
age <= 20 ;
-- mysql里面判断某个条件不等于,<>(不等于) 与!=类似
SELECT
*
FROM
student3
WHERE
age <> 20 ;
-- 查询学生的年龄在20岁到30岁的学生所有信息
SELECT
*
FROM
student3
WHERE
age >= 20 && age <=30 ;
-- between 值1 and 值2 ; 等价于 字段名称 >=值1 and 字段名称<=值2
SELECT
*
FROM
student3
WHERE
age
BETWEEN 20 AND 30 ;
-- mysql语法支持 逻辑双或 ||(或),表示并集的关系
-- 上面这种格式,当有多个或的关系的时候,可以使用in集合语句
-- where 字段名称 in(值1,值2,值3) ;
SELECT
*
FROM
student3
WHERE
age
IN(18,20,45) ; --等价于 ||(或)等于18 或 等于20 或等于45
7.模糊查询
-- 模糊查询(模糊搜索):关键字 like
/*
select 指定字段列表 from 表名 where 字段名称 like '%字符%'
%:就是匹配任意字符(代表多个字符),(使用最多)
_:一个下划线代表一个任意字符值 (包含关系) ,使用不多
*/
-- 模糊查询所有姓为马的学生所有信息
SELECT
*
FROM
student3
WHERE
NAME
LIKE '%马%' ;
-- 模糊查询 学生姓名中第二个字是化的学生所有信息
SELECT
*
FROM
student3
WHERE
NAME LIKE '%_化%';
/*
count(字段名称):查询当前表的记录数
字段名称:一般非业务字段 id,如果业务字段的有些值null,数据存在漏洞的!
sum(字段名称):求和,针对某列字段值进行求和(整数)
avg(字段名称):平均分函数
max(字段名称) :最大值函数
min(字段名称) :最小值函数
*/
select
count(english) AS '总记录数' -- AS 可以省略
from
student3 ;
-- 数学成绩的平均分
SELECT
AVG(math) '数学平均分'
FROM
student3;
-- 获取出数学成绩最高分,和最低分
SELECT
MAX(math) '最高分',
MIN(math) '最低分'
FROM student3 ;
-- 要查询出来学生数学成绩最高分的学生信息
SELECT
*
FROM
student3
WHERE
math = (SELECT MAX(math) FROM student3) ;
-- 多个字段排序
-- 语法:select 字段列表 from 表名 order by 字段名称1 排序规则1 ,字段名称2 排序规则2 ;
-- 需求:查询数学成绩降序,英语成绩是升序的所有学生信息
-- 如果数学成绩相同,按照英语成绩排序规则进行操作
SELECT
*
FROM
student3
ORDER BY math DESC ,english ASC ;