SQL多表查询,左右外连接,数据库设计的三范式

SQL语句书写顺序

select​• 字段列表​from​• 表名列表​where​• 条件列表​gruop by​• 分组列表order by• 排序limit• 分页

基础查询

别名查询(as可以省略)

// 列别名
select student as 学生 form student ;
//表别名
select s.name as 学生名称 form  student as s;

去重关键字 distinct

格式 :

//格式: 
select distinct name from student

模糊查询

%前后模糊% %:多个任意字符, _:一个任意字符

//格式: 
select * from student where name like = "%张三%" // %张三%  等于 前后任意个字符,只要字符串内包含张三就会查询出来

查询之间 从小到大

between

null值参与运算

如果有null进行运算   infnull() //谁为null 就在括号里, KV K 为null V 替换成:值

条件查询:

运算符:

>大于 <小于 =等于 !=不等于 and 并且 or 或者 between x,y 之间的 in(1,2,3) 或者in 在范围中

like 模糊查询

order by descend  ascend

分组查询

 gruop by 分组个数

排序查询

order by 排序的字段 desc 降序 asc 默认 升序

聚合函数

count : 计算个数, max : 计算最大值, min: 计算最小值,sum:计算和,avg:计算平均值
格式:
select count(列名称) fromwhere 条件 

多表查询

多表查询的思维逻辑:判断条件,从那些表查数据,条件是什么,查询哪些字段

隐式:使用where 条件消除无用数据
	格式: select * from a,b where a.bid = b.id;
显式: 使用 inner join 条件使用 on //inner 可以省略不写
	格式: select * from a, inner join b on a.bid = b.id

外连接
	左外连接:
	select * from a left join b where
	左表所有的数据,和交集数据,
右外连接:
	select * from a right join b where
	右表所有数据,和交集数据
子查询
	一条sql语句的条件是另外一条SQL语句的结果
	单行单列 可以使用 运算符 > < = !=
	单行多列 可以使用 使用 in (select ...)//适用于 集合
	多航多列 可以使用 可以作为一张虚拟表 进行 多表查询

数据库三范式

	设计数据库时需要遵循的规范
第一范式:每一列都是不可分割的原子数据项
第二范式:非码属性必须完全依赖于候选码
函数依赖, A-->B,如果通过a的属性值,可以确定 唯一B属性的值,就是B依赖A
    例如:学号被姓名依赖
    属性组: 多个属性,确定一个唯一的属性的值.
    完全函数依赖,
    如果A 是一个属性组,则B属性值的确定需要依赖A属性组中所有的属性值.
部分函数依赖,
    如果A 是一个属性组,则B属性值的确定需要依赖A属性组中部分的属性值.
传递函数依赖
    如果A->B ,B->C ,A的值,可以确定唯一B的属性值,B的值可以确定唯一C的属性值
    则 A 传递B的值 给C,
码:如果在一个表中,一个属性或者一个属性组,被其他所有属性所完全依赖, 就称之为,码
第三范式:任何非主码不依赖于其他非主码,
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值