MySQL (DQL)

1.DQL(Date Query Language)数据查询语言
2.它是SQL中最核心的部分,可难可易。!

1.掌握MySQL标准查询语句

select [all|distinct]
 {*|表名.*|表名.字段名....[as 别名]}
  from 要查询的表名[as 别名]
 [left|right|inner join 连接表名[as 别名]]
  where 查询条件;

1.1 select 后 from 前的这一块内容 它是用来筛选查询字段的(查询的条件)

1.查看学生表中的所有信息 查看所有写 *(不推荐) 效率较低
SELECT*FROM student;      
2.查看学生表中的学生姓名和性别   (查看什么写什么字段名)(推荐)
SELECT stuName,gender FROM student;

1.2 别名(比较常用)
AS关键字可以省略 ’ ’ 符号也可以省略

SELECT 
 stuName AS '姓名',
 gradeId + 1 年级 
FROM 
 student;

1.3 all 所有的 全部 distinct 直接的 明显的 去重

SELECT ALL stuName,gradeId FROM student;
distinct 用来在制定的查询字段值范围内 去除重复数据 
SELECT DISTINCT stuName,gradeId FROM student;
SELECT DISTINCT stuName,gender,gradeId FROM student;

**1.4 where查询条件 **

在 修改 和 删除时用过 目的是为了防止修改/删除全表。
用于检索数据表中符合条件的记录的
简单理解:上方的操作是用来筛选列的 where是用来筛选行的
在where条件语句中 可以由一个或者多个逻辑表达式组成 结果一般为真或假

1.<关系/比较运算符和逻辑运算符>

1.查询年纪是大于1的学生信息s
elect * from student;

SELECT * FROM student WHERE gradeId > 1;

2.查询姓名为张三且性别为女的学生信息
复杂条件的处理:逻辑运算符 与 and 或 or 非 not

SELECT * FROM student WHERE stuName = '张三' AND gender = '女';

3.查询性别是女 或者 年级 为 3 的

SELECT * FROM student WHERE gender = '女' OR gradeId = 3;

4.查询性别不是女的

SELECT * FROM student WHERE NOT gender = '女';
SELECT * FROM student WHERE  gender <> '女';
SELECT * FROM student WHERE  gender != '女';

2.特殊的比较运算符

1.查询地址为空的学生姓名
is null (为空) is not null(不为空)

SELECT stuName FROM student WHERE address IS NULL;
SELECT stuName FROM student WHERE address IS NOT NULL;

2.查询年级在2-3之间的学生姓名
between … and 在…之间/范围内 它等价于 >= and <=

SELECT stuName FROM student WHERE gradeId BETWEEN 2 AND 3;

3.查询年级为1或年级为3的学生信息
in 查询 在…内/里面 not in 不在…里面

SELECT * FROM student WHERE gradeId IN(1,3);
SELECT * FROM student WHERE gradeId NOT IN(1,3);

2.掌握模糊查询 like 像…一样 / 喜欢

1.查询姓为张的学生信息
%表示任意单个/多个字符 _表示任意单个字符

SELECT * FROM student WHERE stuName LIKE '张%';

查询姓张的两个字的学生信息

SELECT * FROM student WHERE stuName LIKE '张_';

查询名称中带有三的学生信息

SELECT * FROM student WHERE stuName LIKE '%三%';

查询三是姓名第二个字符的学生信息

SELECT * FROM student WHERE stuName LIKE '_三%';

3.理解连接查询原理及掌握连接查询的使用(多表连查)

连接查询:内连接查询 外连接查询 【自连接查询】
1.内连接:显示内连接、 隐式内连接
查询学生姓名和所在年级

select stuName,gradeId from student;

采用显示内连接 [ 推荐给多表起别名、区分清楚 防止出现模糊不清错误 ] 内连接可以理解为交集

SELECT
 stu.stuname,g.grandeName
FROM
 student stu
INNER JOIN grade g
ON stu.gradeId = g.gradeId; --- 关联条件

采用隐式内连接查询

select
 stu.stuName ,g.gradeName
from 
 student stu,grade g --- 笛卡尔积
--------------------------------------
select
 stu.stuName,g.gradeName
from
 student stu,grade g
where 
 stu.gradeId = g.gradeId;

查询所有的学生姓名/课程名称/考试成绩

select
 stu.stuName,sub.subject,r.result
from
 student stu,`subject` sub,result r
where
 stu.stuId = r.stuId
 AND
 sub.subjectId = r.subject;

**2.外连接:左外连接、 右外连接 **
查询学生的姓名和所在年级

-- 采用左外连接 以左表为主  left join 前面就是左表
SELECT
 stu.stuName,g.gradeName
FROM
 student stu  LEFT OUTER JOIN  grade g
ON stu.gradeId = g.gradeId;
-- 采用右外连接
SELECT
 stu.stuName,g.gradeName
FROM
 student stu  RIGHT (OUTER  可省略 ) JOIN  grade g
ON stu.gradeId = g.gradeId;

自连接

查询游戏名称和所属分类
select 
 cl.categoryName ,c2.categoryName
from
 category c1,category  c2
where
 c1.pid = c2.id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值