1.mysql当中的一些常用函数
1>跟日期时间相关的函数
addtime() -------日期上加一定的时间差
current_date()-------当前系统日期
current_time()-------当前系统时间
current_timestamp()----当前系统时间戳
date_add()-------------加上相应的日期或时间
date_sub() ------------减去一定的日期或时间
datediff()--------------返回两个日期的差
now()---------------------当前系统的时间
year()--------------------获取日期的年部分
month()------------------获取日期的月部分
day()---------------------获取日期的天部分
hour,minute,sencond----------小时,分钟,秒
2> 跟字符串相关的函数
charset() -----------返回字符串的字符集
concat()-------------连接字符串
instr()----------------返回子串在字符串当中出现的位置
Ucase()--------------转大写字母
Lcase()---------------转小写字母
left() ------------------截取子串
length()-------------获取字符串的长度
replace()---------------替换字符串
strcmp()--------------比较字符串的大小
trim()-----------------去掉字符串两端的空格
3>跟数学运算相关的函数
ceiling() ---------------向上取整
floor()-----------------向下取整
mod()-----------------取余
round()-----------------四舍五入
rand()------------------0-1的随机数
4> 其他一些常用函数
ifnull()-------------------空值处理
md5()--------------------加密
limit 开始记录的编号,多少条 ------------------按记录编号进行查询
2.数据库约束
1>主键约束 主键列的值要保证唯一且不为空
primary key ---表级约束 列级约束
2>唯一键约束 唯一键列的值要保证唯一
unique ----- 表级约束 列级约束
3> 非空约束 非空值的列的值不能为空值
not null ----------列级约束
4> 默认值 可以为某列设置默认值
default
5> 外键约束 指定外键列的值必须要来自于另一张表某个列
foreign key 定义表级的外键约束
foregin key(外键列) references 表名(列名)
两张表的关系:
1-n关系,n-1关系:都应该在相应的多的一方的表中添加一个引用1的一方的数据的外键列
1-1关系: 在任意一方的表中添加一个外键列
n-n关系: 需要创建一张中间关系表,在中间关系表当中添加2个外键列,分别引用这两张表当中的相关列
3.连接查询
笛卡尔连接查询:
1> select 表1.列名,表2.列名
from 表1,表2,表3,..表n
2> select 表1.列名,表2.列名
from 表1
inner join 表2
inner join 表3
....
inner join 表n
笛卡尔连接查询会查询到两张表当中的记录的乘积,但是会有一些无效的记录.
等值连接查询(内连接):
select
表1.列名,表2.列名
from
表1
inner join
表2
inner join
表3
inner join
表n
on
连接条件
and
连接条件
内连接查询的记录数等于两张表当中满足连接条件的记录数.
如果查询的数据不是来自于一张表,而是来自于多张表,就需要先将多张表进行连接,然后才能查询出想要的数据.
自连接查询:
一张表当中某些列具有关系,可以将一张表看成两张表来进行连接查询.
select
表别名1.列,表别名2.列
from
表 别名1
inner join
表 别名2
on 连接条件
外连接
两种外连接:
1>左外连接:
left outer join
2>右外连接:
right outer join
外连接在查询数据时,查询到的数据不仅有满足连接条件的记录,还有主表(左外连接就是左边的表,右外连接就是右边的表)当中不满足连接条件的记录.
集合运算(并集运算)
union union all
union和union all的区别:
union是合并两个查询的结果,去除掉重复的记录
union是直接合并两个查询的结果,不会去除重复的记录
4.子查询
就是在select语句当中嵌套select语句
两种嵌套方式:
1>可以将select语句嵌套在from子句的后面
from (select语句) 表别名
2>可以在where子句的表达式中嵌套select语句
a.带普通运算符的子查询
where id =(select id from 表)
b.带in运算符的子查询
where id in(select id from 表)
c.带any和all的子查询
any是任意一个 all是所有
d.带exists的子查询
如果子查询是有结果的,那么where条件就成立,子查询没有结果,where条件就不成立.