数据库是软件用来储存数据的地方,可以类比人类的大脑,
二,数据库连接
1,打开navicat 点击连接,点击MySQL
2,输入对应信息
3,新建查询(数据库中已有表存在)
4,数据库查询过慢解决方法
三,数据库MySQL语句查询--基础
1,查询单个字段,查询学生表中的学生name
SELECT name from students;
2.1,查询多个字段,字段中用英文逗号间隔
SELECT name,age,workyear from students;
2.2,也可以加上表名查询,表名后面加上英文的点,这种方法在虚拟表或者多表连接的时候会使用,后面会详细的介绍
SELECT students.name,students.age,students.workyear from students;
3.1,as 别名,在查询的时候,可以对查询的字段利用as 给字段起个别名,as 可以省略不写
select name as 姓名 from students; select name 姓名 from students;
3.2,多个别名之间可以用英文的逗号间隔
select name as 姓名, age as 年龄, workyear as 工作年限 from students;
4,查询学生表中的所有数据
select * from students;
5,去除重复的数据,一个表中,可能有些数据是重复的,比如年龄,或者成绩等,可用distinct去重
-- 去除重复数据; SELECT DISTINCT age FROM students;
6,limint 显示查询的条数,有时需求不同,我们需要看到的数据不同,不如查看学生的前10条记录
-- 将结果限制在10条;
select id,name from students LIMIT 10;
6.2,也可以查询多少条到多少条的记录
-- Limit 10,15 10表示从第11位(也就是第10位后面一位)开始查询, -- 15 表示显示15条数据。 SELECT id,name from students LIMIT 10,15;
7.1,排序,从上面查看的结果可以知道,出现的结果是默认按照id排序的,有时我们需要查看工作年限排列……
-- 根据workyear 进行排序,默认从小到大进行排序 SELECT name,workyear from students ORDER BY workyear;
order by 字段名 asc --是正序,即从小到大,asc 可不写
-- 根据数据库中 age字段进行排序 SELECT name,workyear from students ORDER BY age;
-- ORDER BY 后面跟2个字段,先根据第一个字段进行排序,在第一个字段数据一样情况下, -- 再根据第2个字段进行排序。 select name,age,workyear from students ORDER BY age,workyear;
-- 查询表中年龄最大的前三个年龄是多少 -- 1.去除重复数据 SELECT DISTINCT age from students -- 2. order by 列名 desc 表示倒序,从大到小进行排序 ORDER BY age desc -- 3. limit 进行结果限制 LIMIT 3; --完整版 SELECT DISTINCT age from students ORDER BY age desc LIMIT 3;
7.2 倒叙排列 order by 字段名 desc 倒叙
SELECT id,name from students ORDER BY id DESC
8,课间小练习,前面的知识点你都学会了吗?来我们一起练习一下
查看班级内sql_score成绩最高的学生的姓名和成绩
SELECT name,sql_score from score ORDER BY sql_score DESC LIMIT 1;
查看前10名学生的python和sql_score姓名和成绩,先按照python排列,然后按照sql_score排列
SELECT * from score -- python成绩从大到小进行排序,成绩一样时候sql成绩再按从大到小进行排序 ORDER BY python_score desc,sql_score desc LIMIT 10
查询python成绩在20-30名学生的姓名和sql_score成绩
SELECT name,sql_score from score ORDER BY python_score desc LIMIT 19,11
四,数据库查询--过滤
1,当我们需要查询满足特定条件的数据时,使用where语句
select * from table where 条件
2,查询python成绩大于等于60分的学生姓名和python成绩信息
SELECT name,python_score from score -- 添加条件 WHERE python_score >= 60;
SELECT name,python_score FROM score WHERE python_score = 92
SELECT name,python_score FROM score -- 90-100 包含90,100 WHERE python_score BETWEEN 90 AND 100
SELECT name,python_score FROM score -- 90-100 包含90,100 WHERE python_score BETWEEN 90 AND 100 -- 进行排序操作 ORDER BY python_score DESC
3,查询空值,is null
SELECT name,python_score FROM score -- 过滤Python成绩为 空的信息 WHERE python_score is NULL;
4,is not null 代表非空
SELECT name,python_score FROM score WHERE python_score is NOT NULL;
5,NOT 代表的是相反
SELECT name,python_score from score -- 不大于等于60 WHERE NOT python_score >= 60;
SELECT name,python_score FROM score -- 不为空 WHERE NOT python_score is NULL;
6,多个条件同时满足,用and
SELECT * FROM score where -- 第1个条件 python_score >= 60 AND -- 表示并且 -- 第2个条件 sql_score >=60
7,多个条件满足其中一个条件即可,or
SELECT * FROM score where python_score >= 60 OR -- 表示或者 sql_score >= 60
8,and 与 or 可以一起使用,可以用()来限制顺序,如果没有() 默认先and 然后 or
SELECT * FROM score WHERE test_score >= 60 AND -- 使用() 先把() 中结果运算出来,之后再跟上面做And运算 (python_score >= 60 OR sql_score >= 60 )
9,IN 操作符,各数据中满足其中一个即可
SELECT * FROM score where python_score in (80,90,100)
10,模糊查询 like %(代表0-无数个) -(代表一个字符)
SELECT * from score WHERE -- 使用 '' 或者 "" 表示字符串 name LIKE '张%';
SELECT * from score WHERE -- 使用 '' 或者 "" 表示字符串 name LIKE '张%' Or name like "王%" OR name LIKE "李%" OR name LIKE "赵%"
SELECT * from score WHERE name like "王_"
SELECT * from score WHERE name like "_玉_"
-- 既不姓王 也不姓李的学员信息 select * from score where not name like "王%" AND not name like "李%"