查询
一张表里面都会设置一个主键(唯一非空) primary key
mysql> desc test2; 查看表结构
mysql> create table test2(name char(10) primary key, home varchar(50)); 创建表,并创建主键字段name
自增
一般和主键一起用 auto_increment
mysql> create table test(id int primary key auto_increment, name varchar(20), hme varchar(50));
mysql> insert into test(name, hme) values('name', 'home'); 自增字段不需要指定
非空
不能为空 not null
使用与上面一样
查询
is not in(不在xx之中) is null(为空) is not null(不为空)
like %(模糊查询, %为任意长度的字符, _ 代表为一个字符)
排序:
order by 字段名 desc 升序
limit
select * from table limit 0, 10; 第一条为0,前面的0为第一行,后面的10为一次输出多少条数据
聚合函数:
sum(求和) min(最小) max(最大) avg(平均) count(统计行数) distinct(去重)
使用方法:
sum(字段)、min(字段)
select 字段,聚合函数(字段) from table where xxx group by 字段 order by 聚合函数(字段)
注意:这是以表中的哪个字段中xxxx的字段,以聚合函数()进行排序
分组查询:
group by 分组
select 聚合函数 from table where xxx group by 字段
筛选:
having 先分组后筛选,只能与group by结合使用
select 字段1, count(字段2) from table where xxxx group by 字段1 having count(字段2) > 2
这里是查询表中字段1相同的行数,以字段1进行分组,筛选出字段1相同的行数大于2的字段1的值
内连接
inner join ..... on
select * from table1 inner join table2 on where talbe1.a = table2.b
外连接
左外连接: left join .... on 左侧的表记录全部显示,右侧表中显示匹配符合的,未符合的显示null
右外连接: right join .... on 右外连接与左用法一致,右侧的表记录全部显示,左侧表中显示匹配符合的,未符合的显示null
select * from table1 left join table2 on table1.xxx =table2.ttt where xxx
select * from (select * from table1 where xxxx) a left join (select * from table2 where xxx) b on a.xxx = b.xxx group by a.xxx
自连接
join on
适用于,一个表中的额一个字段应用表中的两一个字段
把一张表当成两张表,将表中的两个字段进行比较
select * from table1 a join table1 b on a.xxx = b.ttt
这里使用*将会将表输出两次,可以a.xxx, b.ttt都是同一个表的字段
系统函数
upper(字段) 将字段转为大写 lower(字段) 将字段转为小写
char_length(字段) 获取字符串中字符的个数
length(字段) 获取字符串的字节数
concat(字段1,字段2...) 将字段合并为一个字段
left(字段1, x) 返回字段1从左边的x个字符
rigth(字段1, y)返回字段1从右边的y个字符
lpad(字段1, n ,xxx) 使用字符xxx(也可是字段)对字段1左边进行补充,知道长度为n
rpad(字段1, n, xxx)同上,但是是从右边进行补充
ltrim(字段1) 去掉最左边的空格
rtrim(字段1) 去掉最右边的空格
trim(字段1) 去掉两边的空格
repeat(字段1, n) 返回字段重复出现数n次的值
replac(字段1, a, b) 字段1中的a替换为b
insert(字段1,x, y, instr) 将字段从x位开始到y替换成instr
strcmp(字段1, 字敦2) 比较两个字段,相同返回0,不同返回1
数字函数:
abs(x) 求x的绝对值
ceil(x) 向上取整
floor(x) 向下取整
round(x, y) 四舍五入,y为保留的小数位数
pow(x, y) x的y次幂
rand() 0~1的随机小数
mod(x, y) 等同于x % y,求x对y的模
日期函数
curdate() 当前日期
curtime() 当前时间
now() 当前日期和时间
year(date) date的年份
month(date) 月份
day(date) 天
hour(time) time的小时
minute(time) time的分钟
second(time) time的秒
week(date) date是一年中的第几周
date_fromat(date, fmt) 按格式化串返回data的日期字符串
select data_fromat(new(), '%Y-%m-%d %H:%i:%s')