2025/4/18 数据库相关基础知识
1.去掉重复行数据
要点: 根据结果列进行重置值去除 语法:select distinct 列名1.. from 表名
select distinct name,gender from students where age>16;
首先根据where后面的条件查询筛选出 符合大于16岁的条件的行,然后回到前面的语句(select name,gender)知 是从选出的行中选定name,gender这两列 再通过前面的distinct可知 再从确定的那两列数据中去除重复的行
2.查询常数列
要点: 人为制造的一个值和一个列(多个值 多个列) 语法: select '常数值' as 列名 from 表名
注意: 上面的列名原表是没有的 也就是要点里面说的人为制造的 不过值是固定的'常数值'
SELECT `ename` `员工姓名`,`salary` `工资`,'尚硅谷' AS company FROM `t_employee`;
以上代码中 常数值为 '尚硅谷' 字段名(列名)为 company 所以出现以下结果:
3.关于NULL相关的
NULL 运算任何值 = NULL eg: 在salary为NULL bonus不为NULL的情况下 salary+bonus = NULL 有点a/0 即使a不为0 整个算式也无意义的感觉
4.关于查看表结构的
要点: 使用命令查看表中的列和列的特征 语法: describe 表名/desc 表名 推荐desc 它是简写
5.关于过滤数据(条件查询)
要点: 就是对表的行数据进行筛选 筛选出符合条件的行 再进行结果列的查询!
语法: select 列名1... from 表名 where [条件1 and/or/orx 条件2] 这里orx是异或
where 会返回 true|false 根据该结果选出符合条件的行
6.算数运算符
要点: + 加 - 减 *乘 除法: / 或者 div 取模: %或者mod
注意: 1. /是浮点除法 即会保留小数(四舍五入) div是整数除法 会去掉小数点后面的
2. /0 不会抛出异常 结果是NULL(不像Java) 3. 和浮点类进行运算 结果也会是浮点类
7.比较运算符
要点:
1.等于对比 = 其不能做空判断 即 null = null 结果是false <=> 是安全等于对比 可以进行空判断
即 null<=>null 结果是true <=>是MySql的方言
2.不等于对比 <> 1<>2 结果是true MySQL方言: != 1!=1 结果是false
3.空值处理: is null 和 is not null 4.区间比较: between and 和 not between and
5.范围比较: key in (x,y,z) 即 key = x or key = y or key = z; 还有 key not in (x,y,z)
6.模糊匹配: like 和 not like eg: 姓李的人: name like '李%';
8.逻辑运算符
AND/&& 逻辑且 NOT/! 否定值 OR/|| 逻辑或 XOR 逻辑异或
注意点: false在SQL中展示的结果是0 true是1 eg: NOT 10 结果是0
逻辑运算符可以将多个条件拼接到一起 最终生成一个结果!
9.find in set 函数可以替代like 模糊查询
要点: FIND_IN_SET(要查找的字符串,从哪个字符串查找)
SELECT * FROM t_employee WHERE FIND_IN_SET('北京',work_place);
结果是work_place中包含'北京'的成员的信息 如果反过来就完全不一样了
FIND_IN_SET(work_place,'北京') 是查找'北京' 中包含work_place的成员
10.运算符优先级
第一阶梯: ()圆括号 MySql中 优先级最大的
第二阶梯: 一元运算符 -(符号)、!(非)、~(按位反)等
第三阶梯: 算法运算符 * / % DIV MOD
第四阶梯: 算数运算符 + -
第五阶梯: 比较运算符 = > != is like in ...
第六阶梯: 逻辑运算符 and or xor