数据库 二
一 基础语法
1.select xx:数值类xx可以直接做四则运算
2.别名as:列名 select xx from food as aaaa(新列名中间有空格加引号,不分单双)
3.Distinct去重:select distinct
4.运算符:<,<=,>,>=,!=,<>
5.默认日期格式:'1900-01-01'
6.where 可以接 not,四则远算
7.or:等价于使用多个or条件
8.between:逻辑等同于范围闭区间,时间要打引号
9.like: 匹配符,
'%':代表任意形式、任意长度的字符,如'%b','%b%'
'_':代表一个未知字符
多个值:一个 列表名 +like后面加一个,不能直接like+'xx' or 'xx'
regexp(正则表达式):like '%xx%' = regexp 'xx'
1.'^':如'^zhao'代表这个字符串以'zhao'作为开头
2.'$':如'yun$'代表这个字符串以'yun'作为结尾
3.'|':类似or,同时进行多个搜寻,'^zhao|qian|sun|li',符号互相独立
4.[gim]e:意味着[]内任何一个单字符匹配e寻找,如ge、ie、me,也可以是e[gim]
5.[a-z]e:支持26个字母
Null:代表对象的内容为空,可以赋给任何对象,但空格代表一个对象实例,代表这是一个长度为0的空字符串
order by :desc:降序 ASC:升序(不加默认)
limit:limit a,b (a:偏移量,跳过) (b:提取的数量,跳过前a条,提取第a条后的b条数据)
二 连接
1.内连接(inner join):查找两表相同项,但不同项不显示
2.跨数据库连接:当前使用的表不需要加前缀,另一个未使用的数据库表前面加数据库名
3.自连接:自己连接自己
4.多表连接:将多个表使用多个join on 连接,join后跟表名,on后跟条件,两两相连相同列。
5.复合连接查询:复合主键符合条件,要将复合主键的列都加入条件
6.隐式内连接:没有join on,采用from + 表一+表二+where的形式
7.外连接:
1.左外连接:左表的一切与右表的交集,没有对应的部分用空来补齐
2.右外连接:右表的一切与左表的交集,没有对应的部分用空来补齐

8.自外连接:采用左连接,因为左连接不管有没有那一项的数值,都会显示出来,内连接只显示共有的项
9.using简化查询:using(id,name)= on (a.id = b.id) and a.name = b.name
10.自然连接:数据库自动判断并搜索共有列:nature join
11.交叉连接(笛卡尔积):两个集合的元素依次组合,a={1,2} b={3,4,5} 笛卡尔积:{(1,3),(1,4),(1,5),(2,3),(2,4),(2,5)}
表现形式:显式:cross join 没有on 隐式:去掉join和where
12.联合Union:行与行之间结合成新的表,查询列名数量必须一致,列名以首个列名命名
三 插入数据
1.Insert into xx values (default,'x','xx','1990-01-01') default(默认)
2.复制表:create table xx as (select .....),但没有表性质,如主键
3.更新单行:update + set
4.更新多行:update+set+where+in
5.删除行:delete xx from xxx where
四 聚合函数
1.MAX():跟在select后面,里面可以跟四则运算
2.MIN()
3.SUM()
4.COUNT():只返回有记录的值 count(*):所有记录不管是否为空
5.AVG:
6.group by:数据分组,必须要把该分组的都分组,比如只分日期,那么不同类型但同日期的只会显示一个
7.having:配合聚合函数使用,对聚合函数项进行筛选,即分组后筛选,where只能在分组前筛选,group 后面一般跟select的字段
8.rollup:只能用于聚合值的列,with rollup:出现新的一列汇总值