• mysql查询


    复制表:

    作用: 1: 快速创建新表

                2: 备份表

    格式:create table  库.表   sql查询命令;

    源表的索引属性不会复制给新表

      mysql>create database userdb;

      mysql> create table userdb.user2 select * from userdb.user; //所有表结构和数据

      mysql> create database teadb;

      mysql> create table teadb.user select name,uid from userdb.user where shell="/bin/bash"; //部分表结构和数据

    快速复制表结构

      mysql> create table teadb.user2 select *from userdb.user where 1=2;

      1=2 #条件不成立,所有查询结果为空表。

    单表查询

    查询表中所有记录所有字段的值

        格式:select   *   from  库.表 ;

     查询表中所有记录指定字段的值

         格式:select   字段名列表   from  库.表 ;

    查询表中符合条件记录指定字段的值

         格式:select   字段名列表   from  库.表  where  条件;

    查询条件的表示方式

    数值比较  >  >=   <   <=   =  !=

      mysql> select * from userdb.user where id=23;

      mysql> select * from userdb.user where uid>500;

     

    字符比较    =  !=

    字段名  符号   “字符串”

      mysql> select name from userdb.user where name="apache";

      mysql>select name from userdb.user where  name="apache";

      mysql>select name from userdb.user where  shell="/bin/bash";

      mysql>select name,shell,uid from userdb.user where  shell="/bin/bash";

      mysql>select name from userdb.user where  name!="root";

     

    范围内查找

      in  (值列表)  在...里

      not  in   (值列表)  不在...里  (数值 、字符)

      between..数字1..and...数字2    在...之间

      mysql> select name,homedir,uid from userdb.user where uid between 20 and 30;

      mysql> select name,homedir,uid from userdb.user where uid in (12,9,500,513);

      mysql> select name,shell from userdb.user where shell not in ("/bin/bash","/sbin/nologin");

     

    逻辑匹配:多个查询条件

      逻辑与  and    多个查询条件必须同时成立

      逻辑或  or       多个查询条件某一个条件成立就可以

      逻辑非  !      取反

      mysql>select name from userdb.user where  name="apache"  and   uid=1200   and  shell="/bin/bash";

      mysql>select name from userdb.user where  name="apache"  or   uid=2   or  shell="/bin/bash"; 

      mysql>select name,uid,shell from userdb.user where  name="apache"  or   uid=2   or  shell="/bin/bash";

      mysql>select name,uid  from userdb.user where   (name="root"   or   name="bin"   and   uid=1;

      mysql>select name,uid  from userdb.user where   (name="root"  and  name="bin"   or   uid=1;

      mysql>select name,uid  from userdb.user where (name="root" or  name="bin" ) and   uid=2;

      mysql>select name,uid  from userdb.user where (name="root" or  name="bin" ) and   uid=1;

     distinct 不显示字段的重复的值(去掉字段的重复的值)单独使用

      mysql>select  distinct  shell  from  userdb.user;

      mysql>select  distinct  shell  from  userdb.user where uid<1000;

     

    is  null    匹配空

    is not  null    匹配非空

      mysql>insert into  userdb.user(id ,name)values(66,NULL),(67,null),(68,"null"),(69,"");

      mysql>select id , name  from userdb.user where name is null;

      mysql>select id , name  from userdb.user where name is not  null;

      mysql>select id , name  from userdb.user where name="null";

      mysql>select id , name  from userdb.user where name="";

     

    正则匹配

    regexp   '正则表达式'

    ^   $    .    *     []   

    Where  字段名  regrexp  ‘正则表达式’;

      mysql>insert into  userdb.user(id , name)values(71,"yaya3"),(72,"9yaya"),(73,"ya7ya"),(74,"yay6a");

      mysql>select  name from userdb.user where name regexp  '[0-9]';

      mysql>select  name from userdb.user where name regexp  '^[0-9]';

      mysql>select  name from userdb.user where name regexp  '[0-9]$';

      mysql>select  name from userdb.user where name regexp  '.....';

      mysql>select  name from userdb.user where name regexp  '^.....$';

     

    四则运算  +  -  *   /   %

      mysql> alter table userdb.user add age tinyint(2) unsigned zerofill default 21 after name;

      mysql> select name,age,2017-age from userdb.user where name="root";

      mysql> select name,age,2017-age as s_tear from userdb.user;

    as :命名

    例题:减法运算

      mysql>select name,linuxsys,linuxser from userdb.user;

      mysql>select name,linuxsys,linuxser from userdb.user where name="root";

      mysql>select name,linuxsys,linuxser,linuxsys+linuxser as zcjfrom userdb.user where name="root";

      mysql>select name,linuxsys,linuxser,linuxsys+linuxser as zcj,(linuxsys+linuxser)/2 as pjf  from userdb.user where name="root";

      mysql>select name,age from userdb.user where name="root";

      mysql>select name,age,2017-age as s_year from userdb.user where name="root";

     

    模糊匹配

      字段  like  ‘表达式’

      %  零个或多个字符

      _    任意单个字符

      mysql> select name from userdb.user where name like 'a%';

      mysql> select  name  from userdb.user where name like '____';

      mysql> select  name  from userdb.user where name like '_%_';

    #在sql查询结果里查找数据

      mysql> select name from userdb.user where name like 'a%' having id=50;

    # 名字至少是两个字符

      mysql> select  name  from userdb.user where name like 'a%t';

    # a 开头t结尾的内容,中间是任意字符。

      select  name,uid  from userdb.user where name like  '%a%';

      select  name,uid  from userdb.user where name like  'a%';

      select  id,name,uid  from userdb.user where name like  '%';

      select name,id from userdb.user where name like '%_%' and name="";

      select  name,uid  from userdb.user where name like '____' and uid>=1000;

    聚集函数(对数据做统计的函数)

      sum(字段名)  求和

      avg(字段名)   平均值

      min(字段名)  最小值

      max(字段名)  最大值

      count(字段名) 个数

    备注:用户名是空的统计个数是不出来,因为空是什么都没有所以不算个数。

      mysql> select max(uid) from userdb.user;

      mysql> select max(uid) from  userdb.user where shell="/bin/bash";

      mysql> select  sum(linuxsys) ,avg(linuxsys) from userdb.user;

      mysql> select  sum(linuxsys) ,avg(linuxsys) from userdb.user  where  uid<=10;

      mysql>select  min(uid) from userdb.user where shell="/bin/bash";

      mysql>select  max(uid) from userdb.user where shell="/bin/bash";

      mysql>select count(id) ,count(name) from userdb.user;

      mysql>select  count(name) from userdb.user  where  shell="/bin/bash";

     

    查询排序

    格式:sql查询   order by 字段名  排序方式;

    排序方式:

         升序asc(从小到大排序)

                   降序 desc(从大到小排序)

         默认asc升序(从小到大排序)

      mysql> select name,uid from userdb.user where uid<1000 order by uid;

      mysql> select name,uid from userdb.user where uid<1000 order by uid desc;

     

    查询分组(去重)

    格式:sql查询  group  by  字段名;

      mysql> select shell from userdb.user where name like "____" group by shell;

      mysql> select shell from userdb.user where uid<=10 group by shell;

      mysql> select 部分 from 员工信息表where 性别="女" and 年龄<30 and 工资>20000 group by部门;

      mysql>select  shell  from userdb.user  where uid>=10 and uid<=40 ;

      mysql>select  shell  from userdb.user  where uid>=10 and uid<=40 group  by  shell;

      mysql>select gid  from userdb.user group by gid;

      mysql>select shell from userdb.user group by shell;

      mysql>select gid  from userdb.user group by gid having gid=1;

     

    限制显示查询记录行数 (默认显示全部)

      sql查询  limit 数字;

      sql查询  limit 数字1  数字2;

      数字1 :是从第几行显示

      数字2 :显示到第几行。

      limit  数字  显示查询结果的前几行

      limit  起始行,总行数  起始行的编号从零开始

    例题:

      mysql> select id,name,uid from userdb.user where uid>100 order by uid desc limit 1;

      mysql> select id,name,uid from userdb.user where uid>100 order by uid desc limit 2;

      mysql> select * from userdb.user limit 1,3;  #显示第2行到第3行。

     

    where嵌套查询 

    把内层的查询结果作为外层查询的查询条件

    格式:select 字段名列表 from 库.表  where  条件 (select 字段名列表 from 库.表);

      mysql> select avg(uid)  from userdb.user;

      mysql> select name,uid from userdb.user where uid< (select avg(uid) from userdb.user);

      mysql> select count(uid) from userdb.user where uid< (select avg(uid) from userdb.user);

    在不同表里查找内容:

      mysql> select name from userdb.user where name in (select name from teadb.user where uid in(1008,800,13));

       In      #在teadb.user表里 (1008,800,13)范围内。

      mysql> select name from userdb.user where name in (select user from mysql.user where name="root");

     

    多表查询

      select  字段名列表  from 表名列表 ; //笛卡尔集

      select  字段名列表  from 表名列表 where  条件; //只显示与条目匹配的值

      mysql> create  database  db4;

      mysql> create table db4.t1 select name,uid,shell from userdb.user limit 2;

      mysql> create table db4.t2 select name,uid,homedir from userdb.user limit 4;

      mysql> use db4;

      mysql> select t11.*,t22.name t22.homedir from t11,t22;

      mysql> select t11.name,t22.name from t11,t22;

      mysql> select t11.name,t22.name from t11,t22;

    连接查询

    左连接查询:以左边的表为主显示查询记录

      select  字段名列表  from   表名  left   join  表名 on  条件;

    右连接查询:以右边的表为主显示查询记录

      select  字段名列表  from   表名  right   join  表名 on  条件;

      mysql>select * from t3 left join t4 on t3.uid = t4.uid ;

      mysql>select * from t3 left join t4 on t3.name = t4.name and t3.uid=t4.uid and t3.shell = t4.shell;

      mysql> select t3.name ,t4.name from t3 left join t4 on  t3.uid = t4.uid ;

      mysql> select t3.name ,t4.name from t3 right join t4 on  t3.uid = t4.uid ;

     

    update修改表记录(修改记录字段的值)

    批量修改

      update  库.表  set   字段名="值",字段名=”值”;

    修改与条件匹配的记录字段的值;

      update  库.表  set   字段名="值",字段名=值  where  条件;

      mysql> update userdb.user set age=29,comment="system user";

      #把user表中的年龄都改为29,把描述信息改为system user.

      mysql> update userdb.user set age=18 where id<=10;

      # 把user表中的前10行的年龄改为18

      mysql> select id,name from userdb.user where name in (null,"");

      mysql> update userdb.user set name="tom" where name in("null", "")

    delete删除表记录(以行为单位删除)

    删除表的所有记录

      mysql>delete  from  库.表;

    删除表中与条件匹配的记录

      mysql>delete  from  库.表  where 条件;

    删除前先查一下,避免出现错误。

      mysql>delete  from userdb.user where shell is null;

      mysql> delete from db4.t4;

      mysql> delete from userdb.user where id<=3;

      mysql> delete from userdb.user where shell="" or shell is null;

     

    修改表名

      alter  table  源表名   rname    [to]  新表名;

     

  • 相关阅读:
    屏蔽docker镜像暴露的端口
    runtime/cgo: pthread_create failed: Resource temporarily unavailable
    用户状态bash-4.2$
    Datasnap 和mORMOT 性能对比!
    Delphi XE 时间和时间戳互转换
    Delphi XE 10.4.2 IDE 设置----【代码格式化】
    DELPHI XE 数据集合并(TFDLocalSQL)
    CXGRID 常用功能设置
    MSSQL行转列
    delphi xe 获取字符串长度(不足补位)
  • 原文地址:https://www.cnblogs.com/wwchihiro/p/9367242.html
Copyright © 2020-2023  润新知