day33_MySQL

目录

1.  DDL增强

1.1  约束分类

1.2  实体完整性(主键)

1.2.1  创建表时添加主键

1.2.2  创建表之后添加主键        

1.3  主键自增(可以设置初始值'auto_increment=值')

1.3.1  创建表时主键自增

1.3.2  创建表后主键自增

1.4  关联完整性(外键)

1.4.1  创建表时设置外键

1.4.2  创建表后设置外键

1.4.3  多种对应模式

1.4.3.1  一对一

1.4.3.2  一对多 , 多对一

1.4.3.3  多对多

1.5  唯一约束

1.5.1  创建表时添加唯一约束:

1.5.2  创建表后添加唯一约束

1.6  非空约束(not null)和默认值(defalut)

1.6.1  创建表时添加约束

1.6.2  创建表后添加约束

1.7  Check扩展约束

2.  条件判断

2.1  and

2.2  or

2.3  关系表达式

2.4  between... and ...(在...之间)

2.5  in

2.6  模糊查询like

2.7  Order by 排序

2.8  Limit

3.  单表查询(组函数)

3.1  常用数组函数

3.2  Group by 

3.3  Having(过滤)

注 : 先分组 后过滤  最后排序

Select  列 from 表  Where  xxxx  like   Group by  having  order by  limit


1.  DDL增强

1.1  约束分类

1.2  实体完整性(主键)

我们的java类,对应的就是一张表,成员变量对应一个字段,一个类对象对应一条数据,那么对象都有一定的唯一性

比如判断对象是否相等,我们通常使用equals()方法和hashCode()方法,那么怎么在数据库中表示数据的唯一性呢?主键

主键通常用于唯一确定表中的一条记录,设置为主键的字段是不能为NULL并且不能重复的。

主键可以设置在一个字段上,也可以设置在多个字段上。(但大多数场景都是设置在一个字段上,这个字段通常是业务主键或者流水号)

1.2.1  创建表时添加主键

① 创建列时加在后面  primary key

② 列名全部设置完后 primary key (里面可以加多个列名)

1.2.2  创建表之后添加主键        

alter table 表名 add primary key(列名,列名,列名...)

1.3  主键自增(可以设置初始值'auto_increment=值')

上面我们已经对表添加了主键,主键值不能为空且不能重复,那么问题来了...

如果主键的值让客户输入的话,很容易就重复了,比如888,666等数字大家都喜欢使用,导致一直输入不正确,非常不方便

所以又有了自增的概念,所谓自增,望文知意,就是自动增加,不用我们输入值

但是自增的列,必须为主键列,关键字 auto_increment

1.3.1  创建表时主键自增

① 创建列时加在后面  auto_increment

② 列名全部设置完后 primary key (里面可以加多个列名)

1.3.2  创建表后主键自增

alter table 表名 modify 主键列名  类型  auto_increment

1.4  关联完整性(外键)

对应java代码来说,外键就是类的关联关系(一个类的成员变量是另外一个类的对象引用)

像这种一个类的变量可以找到另外一个类对象的这种关联关系,在数据库中怎么体现呢? 外键

一个表中的外键列,需要参照另一个表的主键值生成,并且一个表的外键列的值和另一个表的主键值的数据类型必须一致,

然后就可以通过这个表中的外键 去找另一个表的主键,能找到主键就能根据主键找到对应的一行数据

常用于有关联关系的两个表中

外键列的值,必须是关联表中的已有主键值,也可以为空

1.4.1  创建表时设置外键

创建列时加在后面  foreign key(外键列) references 关联表(关联表中的主键列)

例如 : 

1.4.2  创建表后设置外键

alter table 表名 add foreign key(外键列) references 关联表(关联表中的主键列)

1.4.3  多种对应模式

1.4.3.1  一对一

直接对应

1.4.3.2  一对多 , 多对一

将外键设置在多的表中

1.4.3.3  多对多

设置中间表 , 保存两个表的外键

查询时在中间表上查询就可以查询到全部的信息

1.5  唯一约束

唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。

唯一约束不允许出现重复的值,但是可以为多个null.

1.5.1  创建表时添加唯一约束:

有两种写法: 

①. 可以在创建列时加在后面  unique

②. 创建完所有列后加在末尾  unique(列名)

1.5.2  创建表后添加唯一约束

alter table 表名 add unique(列名);

1.6  非空约束(not null)和默认值(defalut)

所有的类型的值都可以是null,包括int、float 等数据类型,设置为not null的字段,必须填入数据

经常和default一起使用,当不填写数据的时候,把默认值设置成指定的值

1.6.1  创建表时添加约束

①在创建列的时候加在后面  not null  (非空约束)

②在创建列的时候加在后面  default '默认的内容'

③在创建列的时候加在后面  not null default ' 默认的内容'

注意 : 没有添加某一列的值,而那一列又设置不能为空,并且也没有默认值,就会报错

1.6.2  创建表后添加约束

① alter table 表名 modify 列名 类型 not null ;

② alter table 表名 modify 列名 类型   default  '默认的内容';

③ alter table 表名 modify 列名 类型 not null  default '默认的内容';

1.7  Check扩展约束

CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值

一般用于性别等,对列的值做一些限制,比如 性别列的值只能是男或者女

但是MySQL这里给舍弃了,不再支持,所以六大约束就成了五大约束

2.  条件判断

注意 : 如果 一个语句中,同时出现了and和or的话,and优先级高

2.1  and

且,和,的意思,一般用于 必须符合两个添加的判断,等同于java中的 &&

语法 : select 列限定 from 表限定 where A表达式 and B表达式;

2.2  or

或的意思,一般用于 符合一个添加判断的情况下,等同于java中的 ||

语法 : select 列限定 from 表限定 where A表达式 or B表达式;

2.3  关系表达式

> , >= , <  , <= ,<>,=

> : 大于

< : 小于

>= : 大于等于

<= : 小于等于

= : 相等

<> : 不等于

注意 : = 和 <> 额外留意,和java中有所不同,java中判断相等用 == , 这里只用 = , java中判断不相等用 != , 这里使用 <> 

2.4  between... and ...(在...之间)

语法 : select 列限定 from 表限定 where 列名 between 值1 and 值1;

(取大于等于第一个值小于等于第二个值)

2.5  in

在指定数据中

语法 : select 列限定 from 表限定 where 列名 in(值1,值2....);

比如批量删除 可以使用in来完成

2.6  模糊查询like

我们经常会用到搜索功能,比如百度,搜索功能实现,就是使用like模糊查询技术点

其中 % 匹配任意个数的任意字符 ;  _ 匹配单个任意字符

语法 : select 列限定 from 表限定 where 列名 like  '值' ;

如果想要查询 _ 或者 % 需要转义  \%   \_

2.7  Order by 排序

排序,望文知意,能够让我们查询的数据进行排序展示

语法 : select 列限定 from 表限定 order by 列名 asc/desc;  

注 : 如果不写asc/desc 则默认为升序  ; Asc : 升序  ; Desc : 降序

2.8  Limit

限制条数,通常和order by一起使用,因为我们使用排序之后,再去获取前几条数据,比较有价值,比如成绩前三名

语法 : select 列限定 from 表限定 limit 条数;

           select 列限定 from 表限定 limit 开始值(不包含) ,条数;

3.  单表查询(组函数)

MYSQL中有一类特殊的函数,用于统计,或者分组统计,

分组关键字使用 group by

3.1  常用数组函数

语法 : select  count(*),max(字段名),min(字段名)... from 表名

count(*) : 总条数

max(字段名) : 最大值

min(字段名) : 最小值

avg(字段名) : 平均值

sum(字段名) : 总和

3.2  Group by 

语法 : select  count(*),max(字段名),min(字段名)... from 表名 group by 字段名;

3.3  Having(过滤)

语法 : select  count(*),max(字段名),min(字段名)... from 表名 group by 字段名 having 过滤条件

注 : 先分组 后过滤  最后排序

Select  列 from 表  Where  xxxx  like   Group by  having  order by  limit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值