SQL
1.表与表之间的关系
- 1对1 : 主外键约束可以实现
- 1对多|多对1 : 主外键约束可以实现
- 多对多 : 使用中间表 ,来定义两张表的依赖关系
订单表order | ||
---|---|---|
订单编号 | 所属用户 | 商品id |
orderid | userid | goodsid |
1001 | 10 |
用户表user | ||||
---|---|---|---|---|
用户主键id | 用户名 | 用户密码 | 等级 | 注册日期 |
userid | username | password | ||
10 | 张三 | 123 | 2 | 2019-1-2 |
关联表 可以没有主键
订单商品表 | odergood | ||
---|---|---|---|
订单商品id | 订单编号 | 商品编号 | 商品数量 |
ordergoodsid | orderid | goodsid | num |
1 | 1001 | 1 | 2 |
2 | 1001 | 2 | 1 |
3 | 1002 | 1 | 1 |
2.范式
2.1 1NF(一范式)
一个表格里 的每个列 只能有 不可分割 的一个数据;
2.2 2NF(二范式)
在一范式的基础之下 , 非主属性的部分要依赖于主键|每个实例或行必须可以被唯一地区分
2.3 3NF(三范式)
第三范式就是属性不依赖于其它非主属性。
有外键时没必要把全部外表上的属性写上去
简而言之,最终的目的避免数据重复冗余,1NF–>列不可再分最小原子(避免重复);2NF–>主键依赖(确定唯一);3NF–>消除传递依赖(建立主外键关联拆分表);
SQL语句
查询
select distinct *|字段|表达式 as 别名 from 表表别名
‘’表示的是字符串 “”可以用来加别名
伪列
不存在的列,构建虚拟的列
select empno, 1*2 as count,'cmj' as name,deptno from emp;
<br/>
虚表
select 1+1 from dual;
只有一条数据
用于计算表达式,显示单条记录的值
null
nvl内置函数
--nvl内置函数,判断是否为null,如果为空,取默认值0,否则取字段实际值
select ename,sal*12+nvl(comm,0)from emp
<br/>
查询条件
between and <> 不等
union(去重交集)、union all(不去重)、intersect(交集) 、minus(差集)
like : 模糊查询 % 任意长度字符 _ 一个长度字符 escape(‘e’)配置转义字符
exists()括号里面的有数据 则就能查出来
order by 默认asc 升序 desc 降序