MySQL高级查询

Posted 也要带风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL高级查询相关的知识,希望对你有一定的参考价值。

本随笔你将看到:

一.对于数据库表中数据的增删改查

二.数据库中常用函数(聚合函数,日期函数,字符串函数,数字函数)

 

一.对于数据库表中数据的增删改查

mysql中对于表的操作:

1.创建表:

create table ‘表名‘(

   ‘列名‘   数据类型 

)

2.修改表:

alter table ‘表名‘  rename ‘新表名‘

alter table ‘表名‘  add 

修改字段: alter table ‘‘

 

添加主键:

alter table 表名 add constraint  主键名

primary key 表名(主键字段);

注意:主键名要写成pk_主键字段(列名),主键字段就是被设置为主键的列名

 

添加外键:

alter table 表名 add consteraint 外键名 

foreign key (外键字段)

references 主键名(主键列名);

注意:外键名要设为fk_外键名_主键名  如:fk_student_sex

增:

dml语句插入数据:插入单条数据记录

insert into ‘表名’(字段名列表)values(值列表)

如:

insert into

‘student’(‘name’,‘sex_id‘,‘gread_id‘)

values(‘莉莉‘,‘0’,‘01’);

注:添加多条数据时只需在values括号外加入‘,’即可,注意最后的结尾要加分号

       如

       insert into 

       ‘sex’(‘sex_name’,‘sex_id’)

       values(‘拉拉‘,‘0’),(‘嘉佳‘,‘1’);

增 查:

dml语句 将查询结果加入新表:

  1.需要自己建表创列表

    insert  into 新表( 字段1,字段2) 

    select  字段1,字段2

    from 原表;

    ‘翻译’:将原表中查询(select)到的列表加入(insert  into)新表的字段中

     注:和sql selver 中的插入多表数据相同

  2.系统自动生成表格并添加

     create table 新表

    (select 字段1,字段2

       into  新表

       from   原表) ;

       ‘翻译‘:将原来表中的数据查询(select)并且添加到新表中。create table 是指添加新表(创建新表)的意思

删改:

DML语句  数据更新:

update 表名

set  字段1 = 值1,字段2 = 值2

where 条件

‘翻译’:将某表中的一些值经过where条件判断成立后,修改为set后面的值

删除:

delete from 表名 where 条件

‘翻译’:满足where后面的条件后删除表中某些东西

truncate table 表名

‘翻译’:删除某表中的数据

注意:truncate删除后将重置自增列,表结构及字段,约束,索引保持不变(delete也是),查询速度比delete快

 

mysql在查询语句中相比sql  selver 可以使用 limit 子句限制结果集(分页查询

如:limit(4,4)从第四个元素开始查,要查询4行。

语法:

select  要查询列表

from 表名

where 查询条件

group by  要分组的列表

order by 要排序的列名(asd 或 desc倒叙)

limit (从哪个字符开始查,查询多少行)

Q:如果每页有20条数据,要求显示5页数据如何操作?

A: 这里有一个好用公式:limit((n-1*a),a)。n表示要查询的页数,a表示要查询多少行

注意:limit字句是从0开始计算。

//mysql大部分函数是从1开始

  sql selver 大部分函数是从1开始

   Java中的数组计算是从0开始

   limit 子句查询从0开始

 

二.数据库中常用函数(聚合函数,日期函数,字符串函数,数字函数)

常用函数:    聚合函数

avg()            返回某字段平均值

count()         返回某字段行数

max()            返回某字段对大值

min()             返回某字段最小值

sum()            返回某字段的和

 

字符串函数:

     函数名                                         作用                                       举例

concat(str1,str2...)                       字符串连接                    select  concate(‘as’,‘d’,‘f’)  

                                                                                          返回:asdf

insert(ab,b,c)                     字符串替换                     select  insert(‘aaaab’,‘a’,‘b’)

                                                                                           返回:bbbbb

lower(aaa)                          将字符串转化为小写            select  lower(‘ASDF‘)

                                                                                             返回:asdf

upper(ddd)                         将字符串转化为大写            select  upper(‘asdf’)

                                                                                             返回:ASDF

substring(sdf,we,asd)      字符串截取                        select   substring(‘qwer‘,2,2)

                                                                                             返回:we

 

时间,日期函数:

        函数名                                作用                                                 举例

       curdate()                          截取当前日期                                   select  curdate();

                                                                                                        返回:2020/4/30

        curtime()                     截取当前时间                                  select   curtime();

                                                                                                        返回:  21:49

        now()                           截取当前时间和日期                      select    now();

                                                                                                         返回:2020/4/30  21:49

        week(date)                  返回日期date为一年中的                select week(‘2000-12-5‘);

                                                 第几周                                             返回:48

         year(date)                  返回日期date的年份                        select year(now());

                                                                                                         返回:2020

         hour(time)                  返回时间time的小时值                     select  hour(now())

                                                                                                          返回:21

         datediff(date1,date2)      返回时间参数date1              select datediff(now(),‘2001-4-16‘)

                                                 和date2之间相隔天数          返回:6954

          adddate(date,n)           计算日期参数加上n          select adddate(now(),5)

                                               天后的日期                            返回:2020-5-5

 

数学函数:

     ceil(x)            返回大于或等于数值x的最小整数         select  ceil(5.6);

                                                                                        返回:6

     floor(x)          返回小于或等于数值x的最大整数          select  floor(5.6);

                                                                                         返回:5

    rand(x)           返回0~1之间的随机数                           select  rand();

                                                                                         返回:0.12598

 

 

                                                                                                           okk~~

                                                                                                                  end

 

        

     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

   

 

以上是关于MySQL高级查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL——MySQL高级查询2

mysql-高级查询

mysql高级排序&高级匹配查询示例

MySQL数据库 高级查询

mysql 高级查询

mysql 高级查询