Java学习笔记之操作数据库(2)

增强查询

where判断条件可比较日期,可用like进行模糊操作

判断某一列值是否为null应该用“IS”而不是“=”

 

order by排序数据

增强group by的查询

如果select语句同时有group by、having、limit、order by 那他们的顺序是group by、having、order by、limit

分页查询


多表查询

多表查询的筛选条件不得少于表的个数-1否则会出现笛卡尔集

自连接

自连接是单个表当做多个表来查,即复制多个同一张表来查

在查询时表名要用别名这里以查询emp表为例:

        SELECT * FROM emp AS 别名1,emp AS 别名2,.....WHERE .....

重点在于where语句的编写来筛查笛卡尔集

子查询

子查询就行嵌套在别的sql语句中的select语句,也叫嵌套查询

括号里的select查询语句查询到的是smith的员工编号,作为第一个select的判断条件,因为内层查询语句只返回一行语句因此也称为单行子查询。

当内层select返回多行结果时,外层select的where要用in关键词,称为多行子查询。

内层查询若返回多行结果可视为一张临时表,可以和别的表进行多表查询

all和any

all表示所有,any表示任意一个即可

多列子查询

基本用法:(字段1,字段2) = (select 字段1,字段2 from .....)

表的复制

表的去重

思路:

        1)先创建一张临时表my_temp,该表的结构和原表一致

        2)把my_temp的记录通过distinct关键字处理后把记录复制到my_temp

        3)把原表记录清除掉

        4)把my_temp表的记录复制到原表上

        5)drop掉临时表my_temp

外连接

左外连接:即使左侧的表与右侧表没有匹配的记录仍完全显示了左侧表则称为左外连接

        select .. from 表1 left join 表2 on 条件 【此时表1是左表表2是右表】

        

右外连接:即使右侧的表与左侧表没有匹配的记录仍完全显示了右侧表则称为右外连接

        select .. from 表1 right join 表2 on 条件 【此时表1是左表表2是右表】

约束

主键 Primary key

主键相当于一行数据的身份证号,不允许重复且不能为null,唯一标识该行数据

在创建表时唯一定义某属性为主键,即在后面加上关键字 Primary key

一张表只能有一个主键但是可以有复合主键,即定义多个属性同时作为主键

DESC 表名 可以查看表的结构,同时也会显示约束情况。

非空 not null

字段名 字段类型 not null       加上非空关键字后该列不能为空

唯一 unique

字段名 字段类型 unique         定义唯一约束后,该列的值不能有重复的

如果该列没有指定not null 则unique字段可以有多个null,而unique not null 效果上类似primary key

一张表可以有多个unique字段

外键 foreign key

外键约束要定义在从表上,主表则必须具有主键约束或unique约束,当定义外键约束后,要求外键列数据必须在在主表的主键列存在或是为null。

        语法:foreign key (从表某字段)references 主表名(主表主键或某个unique字段)

细节

自增长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值