NULL的处理

count函数对NULL的处理:若count函数的参数是*,则统计所有的记录的个数,而如果参数是某字段不统计含NULL值的记录个数

sum和avg函数对NULL的处理:这两个函数会忽视NULL的存在

max和min函数对NULL的处理:这两个函数也会忽视NULL

DQL group by 分组查询:

使用group by 字句对查询信息进行分组

格式:select 字段1,字段2……from 表名 【where】 group by 分组字段 having 分组条件

如果进行分组后 select 字句后,只能出现分组的字段与统计函数,其他的字段不能出现,分组后对统计结果进行筛选的时候,必须使用having 不能使用 where

where 字句用来筛选from 字句中指定操作所产生的行

group by 字句用来分组where字句的输出

having 字句用来从分组的结果中进行筛选

insert into select 将一张表的数据导到另一张表里

insert into tavble2(field1,field2……)_ select value1,value2……from table1

或者

insert into table2 select * from table1

要求是目标表2必须存在

正则表达式

描述了一种字符串的匹配规则,其本身是一个字符串,使用这个字符串来描述

用来定义匹配规则,匹配一系列符合某个句法规则的字符串

在发开中,其用于检索替换那些符合规则的文本

MySQL通过REGEXP关键字支持正则表达式进行字符匹配

^ 匹配输入字符串的开始位置

$ 匹配输入字符串的结束位置

. 匹配处理\n之外的任意单个字符

[....] 字符集合,匹配所包含的任意一个字符。例:[abc]可以匹配plain中的a

[^...] 负值字符集合,匹配未包含的任意字符。例:[^abc]可以匹配plan中的p

p1|p2|p3 匹配p1或p2或p3 例:z|food匹配z或者food (a|f)ood可以匹配zood 或者food

星号(*)匹配前面的子表达式零次或者多次 例:zo*可以匹配z和zoo,*等价于{0,}

加号(+)匹配前面的子表达式一次或者多次 例:zo*可以匹配zo和zoo,但是不匹配z,+等价于{1,}

{n} n是一个非负数,匹配确定的n次 例:o{2}不可以匹配bob中的o,但是可以匹配book中的两个o

{n,m} nm都为非负数,n<=m,最少匹配N次最多匹配M次

SQL学习day3_字段

a* 匹配0个或者多个a,包括空字符串

a+ 匹配1个或多个a,不包括空字符串

a? 匹配1个或0个a

(abcd) 把abcd作为一个整体进行匹配,不用括号就是单个字符匹配

多表操作

多表之间的关系:一对一,一对多,多对一,多对多

外键约束 foreign key

是表的一个特殊字段 经常与主键约束一起使用

对于具有关联关系的表而言,相关字段中主键所在的表就是主表,外键所在的表是从表

定义外键的时候,需要遵守以下规则

主表必须存在于数据库中或者是当前正在创建的表

必须为主表定义主键

主键不能包含空值,但是允许在外键中出现空值

在主表的表名后面指定列名或列名的组合,这个列或列的组合必须是主表的主键或候选键

外键中列的数目必须和主表的主键中列的数目相同

外键中的数据类型必须和主表主键中对应的列数据类型相同

创建外键约束

在创建表时设置外键约束

【constraint<外键名,自定义,方便删除操作>】foreign key

字段名【,字段名2……】reference <主表名> 主键列1【,主键列2………】

SQL学习day3_字段_02