zoukankan      html  css  js  c++  java
  • mysql数据操作

    了解:Mysql 账号相关

    创建账号:

    权限:user(所有库的权限)-->db(某个库的权限)-->table_priv(某张表的权限)

                      -->columns_oriv(某个字段的权限)

    创建账号:create user ‘tom’(账号)@’客户端ip(%代表所有ip都可)’ identified by ‘123’(密码)

    登录:mysql -utom -p’123’ -h 服务端ip -P3306

    创建账号并授权:只有root账号能为其它账号授权

    grant all(不包括grant权限) on *.* to ‘tom’@’%’ identified by ‘123’

    其中:

    *.*代表user权限

    db.*代表db权限

    db.t1代表table_priv权限

    grant select(id) on db.t1 代表columns_oriv权限

    # 修改完权限一定要

    flush privileges;

    单表查询

    完整语法

    select distinct 字段1,字段2,字段3,... from 库名.表名

                        where 约束条件

                        group by 分组依据

                        having 过滤条件

                        order by 排序的字段

                        limit 限制显示的条数

    关键字执行优先级:

    from    where    group by    having    distinct    order by    limit

    字符拼接:

    select concat('名字: ',name) as new_name,concat("年龄: ",age) as new_age from emp;

    select concat(name,":",age,":",sex) from emp;

    select concat_ws(":",name,age,sex) as info from emp;

    了解:流程控制

    SELECT (

               CASE

               WHEN NAME = 'egon' THEN

                   NAME

               WHEN NAME = 'alex' THEN

                   CONCAT(name,'_BIGSB')

               ELSE

                   concat(NAME, 'SB')

               END

           ) as new_name

       FROM

           emp;

    where关键字

             _代表任意单个字符

             %代表任意无穷个字符

             select * from emp where name like "__";

             select * from emp where name like "jin%";

             select * from emp where id not in (6,9,12);

    group by分组

             什么是分组:按照所有记录相同的部分进行归类,一定区分度低的字段

             为何要分组:当我们要以组为单位进行统计时就必须分组,分组的目的是为了以组为单位进行统计的,再去考虑单条记录毫无意义

             set global sql_mode="strict_trans_tables,only_full_group_by"; 设置严格模式

             注意:分组之后,只能查到分组的字段以及组内多条记录聚合的成果

             select * from emp group by post;

    聚合函数

             max

             min

             avg

             sum

             count

    having 过滤条件

             where是在分组之前的过滤,即在分组之前做了一次整体性的筛选

             having是在分组之后的过滤,即在分组之后专门针对聚合的结果进行进一步的筛选

    order by排序

             select * from emp order by age asc; # 默认asc升序-》从小到大

             select * from emp order by age desc;# desc降序-》从大到小

             select * from emp order by age asc,salary desc; # 先按照age升序排列,如果age相同则按照salary降序排

    limit 限制显示的条件

             select * from emp limit 3;

             分页显示

             select * from emp limit 0,5; # 从0开始往后取5条

             select * from emp limit 5,5; #从5开始往后取5条

    正则表达式

             select * from emp where name regexp "^jin.*(g|n)$";

    多表查询

    1、笛卡儿积

    select * from emp,dep;

    select * from emp,dep where emp.dep_id = dep.id;

    select * from emp,dep where emp.dep_id = dep.id and dep.name = "技术";

    2、内连接:只取两张表有对应关系的记录

    select * from emp inner join dep on emp.dep_id = dep.id;

    select * from emp inner join dep on emp.dep_id = dep.id

                                where dep.name = "技术";

    3、左连接: 在内连接的基础上保留左表没有对应关系的记录

    select * from emp left join dep on emp.dep_id = dep.id;

    4、右连接: 在内连接的基础上保留右表没有对应关系的记录

    select * from emp right join dep on emp.dep_id = dep.id;

    5、全连接:在内连接的基础上保留左、右面表没有对应关系的的记录

    select * from emp left join dep on emp.dep_id = dep.id

    union

    select * from emp right join dep on emp.dep_id = dep.id;

    子查询:就是将一个查询语句的结果用括号括起来当作另外一个查询语句的条件去用

             select * from emp where dep_id in (select id from dep where name = "技术" or name = "人力资源");

  • 相关阅读:
    使用python,将excel数据批量导入数据库
    微信小程序开发之https服务器搭建三步曲
    微信小程序开发简易计算器改进版
    开发天气预报小程序
    微信(公众号、小程序)开发
    MVC--MVP?
    10大基础实用算法及其讲解
    初探Javascript魅力(1)
    新项目UX设计0到1的正确开启方式
    使用Postman模拟HTTP请求
  • 原文地址:https://www.cnblogs.com/luck-L/p/9357228.html
Copyright © 2011-2022 走看看