where 是全等查询
on 是模糊查询

1、简单查询

-- 查询所有
SELECT * from js_user;

-- 查询指定的字段
select id,name,sex from js_user;

-- 别名 as
SELECT id as 编号,name as 姓名 from js_user;
-- 别名可以用来计算
-- id+1 as 自增后的id

-- 拼接字符串 concat()
select CONCAT("姓名:",name) as 新名字 from js_user;

-- 去重 DISTINCT
SELECT DISTINCT name FROM js_user;

示例

mysql> select CONCAT("姓名:",name) as 新名字 from js_user;
+-------------+
| 新名字      |
+-------------+
| 姓名:xiao  |
| 姓名:zhong |
| 姓名:da    |
+-------------+
3 rows in set
mysql> SELECT id+1 as 自增后的id,name as 姓名 from js_user;
+------------+-------+
| 自增后的id | 姓名  |
+------------+-------+
|          2 | xiao  |
|          3 | zhong |
|          4 | da    |
+------------+-------+
3 rows in set

2、模糊查询

运算符

语法

描述

is null

a is null

操作符为null 返回真

is not null

a is not null

操作符不为null 返回真

between

between a and b

若在 [a,b]之间 返回真

like

a lick b

匹配,a【匹配b 则结果为真

in

a in (a1,a2,a3…)

假设 a 在 a1 a2 。。中的某一值为真

-- like结合 %(代表任意个字符) _(一个字符)
-- 查询两个字的 姓刘的
select * from js_user where name like '刘_';
-- 查询所有姓刘的
select * from js_user where name like '刘%';
-- 查询名字中带有在 国字的
select * from js_user where NAME LIKE '%国%';
-- in 是一个具体的值
 select * from js_user where address in ('天津','上海','北京');

例子

mysql> select * from js_user where NAME LIKE '%国%';
+----+----------+--------+-----+---------+--------------+---------+
| id | name     | pwd    | sex | address | telephone    | gradeid |
+----+----------+--------+-----+---------+--------------+---------+
|  4 | 刘国梁   | 123456 | 男  | 北京    | 18863		 |       4 |
|  6 | 欧阳国一 | 123456 | 男  | NULL    | NULL         |       4 |
|  7 | 杨国忠   | 123456 | 男  | NULL    | NULL         |       3 |
+----+----------+--------+-----+---------+--------------+---------+
3 rows in set

3、联表查询

操作

描述

iner join 内连接 或等值连接

如果表中有一个值匹配上 就返回行

left join 左连接

会从左表中返回结果 即使右表中没有匹配

right join 右连接

会从右表中返回数据 即使左表中没有匹配

mysql 查询出来的别名 别名作为查询条件 mysql查询名字_mysql

思路

/*
1、明确要查询的数据 来自哪些数据表
2、确定使用哪种查询?
3、找到各个表相同的部分 确定判断条件
*/
  • 两个表
select u.id,name,subject,score from js_user as u INNER JOIN js_sub as s on  s.id = u.id;
mysql> select u.id,name,subject,score from js_user as u INNER JOIN js_sub as s on  s.id = u.id;
+----+------+----------+-------+
| id | name | subject  | score |
+----+------+----------+-------+
|  1 | 刘翔 | 离散数学 |    90 |
|  1 | 刘翔 | 高等数学 |    89 |
|  1 | 刘翔 | 线性代数 |    86 |
|  2 | 姚明 | 离散数学 |    93 |
|  2 | 姚明 | 高等数学 |    94 |
|  2 | 姚明 | 线性代数 |    89 |
|  3 | 马龙 | 离散数学 |    90 |
|  3 | 马龙 | 高等数学 |    93 |
|  3 | 马龙 | 线性代数 |    96 |
+----+------+----------+-------+
9 rows in set
  • 三个表
-- 查询学生的基本信息和考试情况
select u.id,gradename,name,subject,score from js_user as u 
INNER JOIN js_sub as s 
on  s.id = u.id 
LEFT JOIN grade as g 
on  g.gradeid = u.gradeid;
mysql> select u.id,gradename,name,subject,score from js_user as u INNER JOIN js_sub as s on  s.id = u.id LEFT JOIN grade as g on  g.gradeid = u.gradeid;
+----+-----------+------+----------+-------+
| id | gradename | name | subject  | score |
+----+-----------+------+----------+-------+
|  1 | 研二      | 刘翔 | 离散数学 |    90 |
|  1 | 研二      | 刘翔 | 高等数学 |    89 |
|  1 | 研二      | 刘翔 | 线性代数 |    86 |
|  2 | 大三      | 姚明 | 离散数学 |    93 |
|  2 | 大三      | 姚明 | 高等数学 |    94 |
|  2 | 大三      | 姚明 | 线性代数 |    89 |
|  3 | 大二      | 马龙 | 离散数学 |    90 |
|  3 | 大二      | 马龙 | 高等数学 |    93 |
|  3 | 大二      | 马龙 | 线性代数 |    96 |
+----+-----------+------+----------+-------+
9 rows in set

多个表一起的时候

  • 先做两个的
  • 一一分解即可。

4、自查询

  • 样例表
mysql> select * from js_cate;
+------+---------+------------+
| p_id | cate_id | sub_name   |
+------+---------+------------+
|    0 |       3 | 数学       |
|    3 |       9 | 高等数学   |
|    3 |       2 | 线性代数   |
|    0 |       6 | 物理学     |
|    6 |       4 | 量子力学   |
|    6 |       5 | 热力学     |
|    0 |       7 | 计算机科学 |
|    7 |       1 | 操作系统   |
|    7 |       8 | 数据结构   |
+------+---------+------------+
9 rows in set
--  父子关系
select p.sub_name as 父栏目, s.sub_name as 子栏目 from js_cate as p, js_cate as s where p.cate_id=s.p_id;

+------------+----------+
| 父栏目     | 子栏目   |
+------------+----------+
| 数学       | 高等数学 |
| 数学       | 线性代数 |
| 物理学     | 量子力学 |
| 物理学     | 热力学   |
| 计算机科学 | 操作系统 |
| 计算机科学 | 数据结构 |
+------------+----------+
6 rows in set