使用DQL查询

1.查看学生表中的所有信息

效率低

SELECT * FROM student;

2.查看学生表中的学生姓名和性别

SELECT stuName,gender FROM student;
1.2 别名(比较常用) 注意:此处使用中文只不过是方便你理解而已 后面不会采用写中文别名

AS关键字可以省略 ''也可以省略

SELECT stu.stuName AS ‘姓名’,stu.gradeId + 1 年级 FROM student stu;

如果SQL过长可以进行"美化"

目前个人推荐写法

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

以前写法

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条件语句中 可以由一个或者多个逻辑表达式组成 结果一般为真或假

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

SELECT * FROM student;

查询年级是大于1的学生信息

SELECT * FROM student WHERE gradeId > 1;

复杂条件的处理:逻辑运算符 与and 或or 非not

查询姓名为张三 且 性别为女的学生信息

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

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

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

查询性别不是女的

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

特殊的比较运算符

IS NULL IS NOT NULL

查询地址为空的学生姓名 查询空千万记住不能使用=

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

BETWEEN … AND 在…之间/范围内 它等价于>= and <=

查询年级在2-3之间的学生姓名

SELECT stuName FROM student WHERE gradeId >= 2 AND gradeId <= 3;

更加简洁

SELECT stuName FROM student WHERE gradeId BETWEEN 2 AND 3;

IN查询 在…内/里面

查询年级为1或年级为3的学生信息

SELECT * FROM student WHERE gradeId = 1 OR gradeId = 3;

更加简洁

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

【2.掌握模糊查询】LIKE 像…一样 喜欢

%表示任意单个/多个字符 _表示任意单个字符

查询姓为张的学生信息

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.理解连接查询原理及掌握连接查询的使用】(多表连查)
连接查询:内连接查询、外连接查询、[自连接查询]

内连接:显式内连接、隐式内连接

查询学生的姓名和所在年级

SELECT stuName,gradeId FROM student;

采用显式内连接[推荐给多表起别名 区分清楚 防止出现模糊不清错误]

内连接可以理解为交集

SELECT
stu.stuName,g.gradeName
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.subjectName,r.result
FROM
student stu,subject sub,result r
WHERE
stu.stuId = r.stuId
AND
sub.subjectId = r.subjectId;

外连接:左外连接、右外连接

查询学生的姓名和所在年级

采用左外连接 以左表为主 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 JOIN grade g
ON stu.gradeId = g.gradeId;

– 自连接(内连接)

查询游戏名称和所属分类

SELECT
c1.categoryName,c2.categoryName
FROM
category c1,category c2
WHERE
c1.pid = c2.id

### DQL查询语法及使用方法 DQL(Data Query Language)是SQL语言的一部分,主要用于从数据库中查询数据。其基本语法可以分为六个部分,称为六个子句[^1]。以下是DQL查询的详细语法和使用方法: #### 1. SELECT 子句 `SELECT` 子句用于指定需要查询的字段列表。可以选择单个字段、多个字段或所有字段。例如: ```sql SELECT column1, column2 FROM table_name; SELECT * FROM table_name; ``` 如果需要为字段起别名,可以使用 `AS` 关键字[^3]。例如: ```sql SELECT column1 AS alias_column1 FROM table_name; ``` #### 2. FROM 子句 `FROM` 子句用于指定查询的数据表。例如: ```sql SELECT * FROM table_name; ``` #### 3. WHERE 子句 `WHERE` 子句用于指定查询结果需满足的条件。可以通过简单条件运算符(如 `>`, `<`, `=` 等)或逻辑运算符(如 `AND`, `OR` 等)来构建筛选条件[^4]。例如: ```sql SELECT * FROM table_name WHERE column1 > value1 AND column2 < value2; ``` #### 4. GROUP BY 子句 `GROUP BY` 子句用于对查询结果按照一个或多个字段进行分组。通常与聚合函数(如 `COUNT`, `SUM`, `AVG` 等)一起使用。例如: ```sql SELECT column1, COUNT(*) FROM table_name GROUP BY column1; ``` #### 5. HAVING 子句 `HAVING` 子句用于过滤分组后的记录,类似于 `WHERE` 子句,但作用于分组后的数据。例如: ```sql SELECT column1, COUNT(*) FROM table_name GROUP BY column1 HAVING COUNT(*) > 10; ``` #### 6. ORDER BY 子句 `ORDER BY` 子句用于指定查询结果的排序规则。可以按升序(`ASC`)或降序(`DESC`)排列。例如: ```sql SELECT * FROM table_name ORDER BY column1 ASC, column2 DESC; ``` #### 7. LIMIT 子句 `LIMIT` 子句用于限制返回的记录数,常用于分页查询[^2]。例如: ```sql SELECT * FROM table_name LIMIT 10 OFFSET 20; ``` 上述语句表示从第21条记录开始返回10条记录。 #### 示例:多表查询 在多表查询中,可以使用 `JOIN` 语句将多个表连接起来。例如: ```sql SELECT t1.column1, t2.column2 FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.foreign_id; ``` ### 注意事项 - 字段名和表名可以使用别名以提高可读性。 - 使用 `DISTINCT` 关键字可以去除重复记录[^4]。 - 模糊查询可以使用 `LIKE` 运算符配合通配符 `%` 和 `_`[^4]。 ```sql SELECT * FROM table_name WHERE column1 LIKE 'pattern%'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值