mysql中的内置函数以及查询

查询

一张表里面都会设置一个主键(唯一非空)  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')
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值