• MySQL基础篇总结


     参考:黑马程序员MySQL基础视频链接

     数据库基本操作

    启动与停止

    1.第一种方式:

    1>以管理员身份运行cmd

    2>在命令行窗口中输入:

    1.  启动:net start mysql80
    2.  停止:net stop mysql80

     

    2.第二种方式: 

    1>Win+R快捷方式打开如下:

            输入:services.msc

    2>找到MySQL80

     

    3>双击:

     

    4>这里我选择的是开机自启动

     

    客户端连接

    1.第一种方式:通过MySQL提供的客户端命令行工具

     

    2.第二种方式:通过命令行工具执行命令

    mysql [-h 127.0.0.1] [-P 3306] -u 用户 -p

    注意:

    1.[]中可省略

    2.使用这种方式时,需要配置PATH环境变量

     SQL

    1.DDL(数据定义语言)

    数据库操作

    查询所有数据库:
    show databases;
    查询当前数据库:
    select datebase();
    创建数据库:
    create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
    删除数据库:
    drop database [if exists] 数据库名;
    使用数据库:
    use 数据库名;

    表操作

    查询:
    查询当前数据库所有表:
    show tables;
    查询表结构:
    desc 表名;
    查询指定表的建表语句:
    show create table 表名;
    创建:
    1. create table 表名(
    2.         字段1 字段1类型[comment '注释'],
    3.         字段2 字段2类型[comment '注释'],
    4.         字段3 字段3类型[comment '注释'],
    5.         .......
    6.         字段n 字段n类型[comment '注释']
    7. ) [comment '注释'];       
    修改:
    添加字段:
    alter table 表名 add 字段名 类型(长度) [comment '注释'] [约束];
    修改数据类型:
    alter table 表名 modify 字段名 新数据类型(长度);
    修改表名:
    alter table 表名 rename to 新表名;
    删除:
    删除表:
    drop table [if exists] 表名;
    删除指定表并重新创建该表:
    truncate table 表名;

    2.DML(数据操作语言)

    添加数据(insert)

    给指定字段添加数据:
    insert into 表名 (字段1,字段2......) values(值1, 值2......);
    给全部字段添加数据:
    insert into 表名 values(值1, 值2......);
    批量添加数据:
    1. insert into 表名 (字段1,字段2......) values(值1, 值2......),(值1, 值2......),(值1, 值2......);
    2. insert into 表名 values(值1, 值2......),(值1, 值2......),(值1, 值2......);

    注意:

            1.插入数据时要按注意顺序

            2.字符串和日期型数据应该包含在引号中

            3.插入的数据大小要合法

    修改数据(update)

    update 表名 set 字段1=1,字段2=2......[where 条件];

    注意:

           如果没有条件,则会修改整张表

    删除数据(delete)

    delete from 表名 [where 条件]

    注意:

            1.如果没有条件,则会删除整张表的数据

            2.delete不能删除某一字段的值


     

    3.DQL(数据查询语言)

    编写顺序:

    1. select 字段列表
    2. from 表名列表
    3. where 条件列表
    4. group by 分组字段列表
    5. having 分组后条件列表
    6. order by 排序字段列表
    7. limit 分页参数;

    基本查询

    查询多个字段:
    1. select 字段1,字段2,字段3...from 表名;
    2. select * from 表名;
    设置别名:
    select 字段1[as 别名1],字段2 [as 别名2]......from 表名;
    去除重复记录:
    select distinct 字段列表 from 表名;

    条件查询

    语法:

    select 字段列表 from 表名 where 条件列表;

    条件:

    比较运算符功能
    >
    >=
    <
    <=
    =
    <> 或 !=不等于
    between...and...在某个范围之内
    in(...)在in之后的括号中,多选一
    like 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
    is null
    and 或 &&并且
    or 或 ||
    not 或 !

    eg:

    1. #二、条件查询
    2. #select 字段列表 from 表名 where 条件列表;
    3. #1.查询年龄等于25的员工
    4. select * from emp where age = 25;
    5. #2.查询年龄小于20的员工
    6. select * from emp where age < 20;
    7. #3.查询没有身份证信息的员工
    8. select * from emp where idcard is null;
    9. #4.查询有身份证信息的员工
    10. select * from emp where idcard is not null;
    11. #5.查询年龄不等于18的员工
    12. select * from emp where age != 18;
    13. select * from emp where age <> 18;
    14. #6.查询年龄在20岁到25岁(包含25)之间的员工信息
    15. select * from emp where age > 20 && age <= 25;
    16. select * from emp where age > 20 AND age <= 25;
    17. #两端都包含
    18. select * from emp where age between 15 and 25;
    19. #7.查询性别为女且年龄小于25的员工信息
    20. select * from emp where gender = '男' && age < 25;
    21. #8.查询年龄等于15或者20或者25的员工
    22. select * from emp where age = 15 || age = 20 || age = 25;
    23. select * from emp where age = 15 or age = 20 or age = 25;
    24. select * from emp where age in(15, 20, 25);
    25. #9.查询姓名为两个字的员工 模糊匹配
    26. select * from emp where name like '___';
    27. #10.查询身份证号最后一位为X的员工
    28. select * from emp where idcard like '%X';

    聚合函数

    select 聚合函数(字段列表) from 表名;

    注意:

            对一列进行计算 所有null值不参与聚合函数的计算

    函数功能
    count统计数量
    max最大值
    min最小值
    avg平均值
    sum求和

    eg:

    1. #三、聚合函数
    2. #对一列进行计算 所有null值不参与聚合函数的计算
    3. #select 聚合函数(字段列表) from 表名;
    4. #1.统计数量
    5. select count(*) from emp;
    6. #2.统计企业员工的平均年龄
    7. select avg(age) from emp;
    8. #3.最大年龄
    9. select max(age) from emp;
    10. #4.最小年龄
    11. select min(age) from emp;
    12. #5.统计北京地区员工年龄之和
    13. select sum(age) from emp where workaddress = '北京';

    分组查询

    select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
    where
    分组之前执行,不满足where条件的不参与分组,where不能对聚合函数进行判断
    having
    分组之后对结果进行过滤,having可以对聚合函数进行判断

    eg:

    1. #1.根据性别分组, 统计男性与女性的数量
    2. select gender, count(*) from emp group by gender;
    3. #2.根据性别分组,统计男性和女性的平均年龄
    4. select gender, avg(age) from emp group by gender;
    5. #3.查询年龄小于25的员工, 并根据工作地址分组,获取员工数量大于等于3的工作地址
    6. select workaddress, count(*) address_count from emp where age <= 25 group by workaddress having count(*) > 1;

    排序查询

    select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2;
    asc升序(默认)
    desc降序

    eg:

    1. #1.根据年龄对公司员工进行升序排序
    2. select * from emp order by age asc;
    3. #2.根据年龄对公司员工进行降序排序
    4. select * from emp order by age desc
    5. #3.根据年龄升序 根据id降序
    6. select * from emp order by age asc, id desc;

    分页查询

    select 字段列表 from 表名 limit 起始索引, 查询记录数;

    eg:

    1. #1.查询第1页员工数据,每页展示2条记录
    2. select * from emp limit 0, 2;
    3. #2.查询第2页员工数据,每页展示10条数据 ------>(页码 - 1)*页展示记录数
    4. select * from emp limit 2, 2;

     

    4.DCL

    管理用户

    注意:

            主机名可以使用%通配

    查询用户:
    1. use mysql;
    2. select * from user;
    创建用户:
    create user '用户名'@‘主机名’ identified by '密码';
    修改用户密码:
    alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
    删除用户:
    drop user '用户名'@'主机名';

    权限控制

    权限说明
    all, all privileges所有权限
    select查询数据
    insert插入数据
    update修改数据
    delete删除数据
    alter修改表
    drop删除数据库/表/视图
    create 创建数据库/表
    查询权限:
    show grants for '用户名'@'主机名';
    授予权限:
    grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

    注意:

            授权时数据库名和表名可以用*进行通配,代表所有

    撤销权限:
    revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

     




    如有错误,欢迎指正!!!

  • 相关阅读:
    卷七十二 魏纪四
    YOLO系列算法改进方法 | 目录一览表
    Linux必备技能:掌握的必会命令
    C++和QML 交互方式
    青蛙跳台阶
    第四章:视图【mysql数据库-进阶】
    sql分词查询,实现类似ES的效果
    人工智能知识全面讲解:让数据更直观的方法
    G. SlavicG‘s Favorite Problem(树的遍历DFS,BFS均可)
    Ai-WB2模组基于TLS的MQTT连接服务器使用示例
  • 原文地址:https://blog.csdn.net/m0_73569492/article/details/138039915