xxdd123321

导航

 

DQL查询数据(重要)

 

基本操作

查询操作:select

  • 查询指定

    -- 查询指定字段
    SELECT `studentno`,`loginpwd` FROM`student`
  • 查询全部

    -- 查询全部学生
    SELECT * FROM `student`
  • 查询时换表头(给结果起名)

    -- 查询指定字段 使用AS为结果起名字
    SELECT `studentno` AS '学号',`loginpwd`AS'密码' FROM`student`
  • 函数 拼接字符串

    -- 函数 concat(a,b) 拼接字符串
    SELECT CONCAT('姓名:',`studentname`) AS '新名字' FROM student
  • 去重(distinct)

    • 去除查询出来的重复的数据,重复的数据只显示一条

    -- 去重 select distinct 重复的数据只显示一条
    SELECT DISTINCT `loginpwd` FROM student

     

数据库的列

  • 查系统版本(函数)

-- 查看系统版本(函数)
SELECT VERSION()
  • 查计算结果(表达式)

-- 用来计算(表达式)
SELECT 100*3-1 AS 计算结果
  • 查询自增的步长(变量)

-- 查询自增步长(变量)
SELECT @@auto_increment_increment
  • 查询时把所有 +1

-- 加一
SELECT `studentno`,`loginpwd`+1 AS '加一分后' FROM `student`

where 条件子句

作用:检索数据中符合条件的值

  • 逻辑运算符

    搜索条件:由一个或多个表达式组成,布尔值

  • 模糊查询:比较运算符

  • %

    任意字符

  • _

    一个字符

  • in

    具体的一个或多个值,不能用%

UPDATE `student` SET `loginpwd`='61' WHERE `studentno` = 1,
UPDATE `student` SET `loginpwd`=62 WHERE `studentno` = 2
UPDATE `student` SET `loginpwd`=63 WHERE `studentno` = 3
UPDATE `student` SET `loginpwd`=64 WHERE `studentno` = 4
UPDATE `student` SET `loginpwd`=65 WHERE `studentno` = 5
UPDATE `student` SET `loginpwd`=66 WHERE `studentno` = 6
UPDATE `student` SET `loginpwd`=67 WHERE `studentno` = 7
UPDATE `student` SET `loginpwd`=68 WHERE `studentno` = 8

-- 查询指定区间
SELECT `studentno`,`loginpwd`FROM student
WHERE `loginpwd`>62 AND `loginpwd`<67

-- 模糊查询
SELECT `studentno`,`loginpwd`FROM student
WHERE `loginpwd` BETWEEN 62 AND 67

-- 查询姓刘的同学
UPDATE `student` SET `studentname`='刘一' WHERE`studentno` = 5
UPDATE `student` SET `studentname`='刘二' WHERE`studentno` = 6
UPDATE `student` SET `studentname`='刘一二' WHERE`studentno` = 7
UPDATE `student` SET `studentname`='刘一二三' WHERE`studentno` = 8
SELECT `studentno`,`studentname` FROM student
WHERE `studentname` LIKE'刘%'
SELECT `studentno`,`studentname` FROM student
WHERE `studentname` LIKE'刘_'
SELECT `studentno`,`studentname` FROM student
WHERE `studentname` LIKE'刘__'

 

联表查询

join

有7种

  • jion on 连接查询

  • where 等值查询

问题

查询参加考试同学成绩

思路

  1. 分析需求,分析查询字段来自那些表

  2. 确定使用哪种连接方式

  3. 确定交叉点(两个表那些数据是相同的)

  4. 判断条件:学生表中的studnetno=成绩表中studentno

-- 联表查询
SELECT s.`studentno`,s.`studentname`,r.`studentresult`
FROM student AS s
INNER JOIN result AS r
WHERE s.studentno = r.studentno
  • inner join 如果表中至少有一个匹配,就返回

  • left join 会从左表中返回所有的值,即使右表中没有匹配

  • right join 会从右表中返回所有的值,即使左表中没有匹配

 

 

自连接

自己的表和自己的表连接,核心:一张表拆为两张一样的表即可

 

顺序的语法

select...

from ...

[where]-- 指定结果需满足的条件

 

[group by]-- 指定结果按照哪几个字段来分组

[having]-- 过滤分组的记录必须满足的次要条件

 

[order by]-- 排序 指定查询记录按一个或多个条件排序

[limit]-- 分页 指定查询的记录从哪条到哪条

 

 

分页和排序

  • 升序

    SELECT *FROM `student`
    ORDER BY `studentno` ASC
  • 降序

    SELECT *FROM `student`
    ORDER BY `studentno` DESC
  • 分页(limit)

    • 缓解数据库压力

    LIMIT 0,5

    每页五行,从第一页开始

 

子查询

本质:在where语句中嵌套一个子查询语句

where(sclect * from)

 

 

MySQL函数

  • 常用函数(不常用)

    • 数学运算

      sclect ABS(-8) -- 绝对值

      sclect

 

  • 聚合函数(常用)

函数名称描述
count() 计数
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
   
  • count()

    三种

    SELECT COUNT(`studentno`) FROM student -- count(字段),会忽略所有的null值
    SELECT COUNT(*) FROM student -- count(*),不会忽略null值,本质,计算行数
    SELECT COUNT(1) FROM student -- count(*),不会忽略null值,本质,计算行数

数据库级别的MD5加密

什么是MD5

信息摘要算法,不可逆,具体的值的MD5是一样的

MD5破解网站的原理,背后有一个字典,MD5加密后的值 加密的前值

posted on 2022-07-31 00:50  xxdd123321  阅读(113)  评论(0)    收藏  举报