美文网首页
Mysql数据库知识点

Mysql数据库知识点

作者: MrLi_714d | 来源:发表于2018-11-20 23:40 被阅读0次

    一.mysql基本结构

                -简介 最流行的关系型数据库管理软件(开源的,免费的),web应用 -数据结构

    1.库+表的形式

    2.所有的操作都是围绕表中的数据

    3.表中的数据都是有严格规则和关系的,所以关系型数据库

    二.mysql库级和表级的操作

            控制台,虚拟环境 -命令行;                            进入数据库 mysql -u用户名 -p密码              (不能随便输 root qwe123)

            -库级命令:

    1.显示所有的库:show databases;

    2.创建库:create database db_name; create database if not exists db_name; 如果存在会报错

    3.删除库:drop datebase db_name;          drop database if exists db_name;

    4.进入数据库:use db_name; ****** 数据库名有大小写之分

            -表级命令:

    1.显示所有的表:show tables;

    2.创建表: create table student (id int, name varchar(128), age int, male enum('男','女'));

    3.显示创建信息:show create table tb_name;

    4.删除表:drop table if exists tb_name;

          -mysql表中数据的操作(重点)                        CRUD操作(增删改查操作)

    1.插入数据:

    1. 1指定字段插入 insert into student (name, age) values ('wuhongcheng', 18);

    1.2全字段插入 insert into student values (2,'hengxu', 19, 'male' );

    1.3多行插入

    insert into student values  (2, 'liukui', 16, 'male'),(3, 'zhuoda', 20, 'male'),(4, 'houyingying',16, 'female'),(5, 'liuying', 16, 'female');

    2.删除数据:

    2.1 删除所有数据 delete from student;                  (切记,不要用)

    2.2删除指定数据 delete from student where conditions; delete from student where male is null; ****** 一定要加上where 不然就全删了 

    3修改数据:

    3.1修改一个字段的所有数据 update student set male='female';

    3.2修改多个字段的数据 update student set id=1,age=22 where name='hexu';

    3.3修改满足条件的数据 update student set age=18 where id=2; ****** 一定要加上where 不然就全改了

    4.查询数据

    4.1全字段查询 select * from tb_name;

    4.2指定字段查询 select name, age from student;

    4.3带条件查询

    查询所有年龄大于17的数据 select * from student where age>17;

    查询所有女性的数据 select * from student where male='female';

            -字段类型(了解) 表中每列数据必须指定类型 大致分为3类:

    1.数值型

    2.日期时间型

    3.字符串类型

    三.Mysql高级查询

    1.筛选条件

    1.1比较运算符

    1.1.1等于:=(注意,不是==) select * from student where sex = 'male';

    1.1.2不等于:!= 或则 <> select * from student where age != 18; 

    1.1.3大于:>

    1.1.4小于:<

    1.1.5大于等于:>= select * from student where age >= 18; 

    1.1.6小于等于:<=

    1.1.7空:is null select * from student where sex is null;

    1.1.8不为空:is not null select * from student where sex is not nULL;

    1.2逻辑运算符

    1.2.1 and 与 男性里面年龄大于18的数据 select * from student where sex='male' and age>18;

    1.2.2 or 或 报名python_all 或者 python_web的学员 select * from enroll where course='python_all' or course='python_web';

    1.2.3 其他操作

    排序:order by                                                字段名 按照年龄排序                                        正序:select * from student order by age asc;  # asc可以省略 默认                                  倒序:select * from student order by age desc;

    限制:limit

    只要三条:                                                  select * from student order by id limit 3;          从第二条开始:                                          select * from student order by id limit 1, 3;

    去重:distinct                                                  查出表中所有的不同名字 select distinct student from enroll;

    模糊查询:like                                                   

    -任意多个字符:% 查询名字中包含'l':

    select * from enroll where student like '%l%';

    查询名字中一'l'开头的:

    select * from enroll where student like 'l%';                           

          -任意一个字符:                                          _ 查询名字是四个字符的:                      select * from enroll where student like '____'; **like如果不和 % 或 _ 就和= 一样的效果   

    范围查询

    1.连续范围:between a and b 包含a和b 查询年龄介于17到20之间的学生:            select * from student where age between 17 and 20;

    *** 一般用数值,日期时间,字符串理论是可以的,但是一般不用

    2.间隔范围:in in (10, 20, ....) 查询 报名python_all 或者 python_web的学员

    select * from enroll where course in ('python_web', 'python_all', 'abc');

    2.聚合与分组(重点,难点)

    2.1聚合(统计):

    2.1.1统计个数:count(字段)

    年龄大于18的有几个人:

    select count(id) from student where age>18; ***如果字段里有null 不会计算

    2.1.2求和:sum(字段)

    报名python课程的支付总金额:

    select sum(pay) from enroll where course like '%python%';

    2.1.3平均值:avg(字段)

    学生年龄平均值:

    select avg(age) from student;

    2.1.4最大值:max(字段)

    学生年龄的最大值:

    select max(age) from student;

    2.1.5最小值:min(字段)

    学生年龄的最小值:

    select min(age) from student;

    2.2分组:

    2.2.1group py 按照课程分组查询 报名的总金额:

    select course, sum(pay) from enroll group by course;     

    按照学生分组查询报名的总金额:

    *** 别名:select student, sum(pay) as total_pay from enroll group by student;

    -having 子句 (因为:where关键字无法和统计函数用在一起)                                     

    --按照学生分组,查询总金额大于5000的数据

    select student, sum(pay) as total_pay from enroll group by student having sum(pay) > 5000;                                                                       

    -按照学生分组,查询总金额大于2000,报名python课程的数据

    select student, sum(pay) as total_pay from enroll where course like '%python%' group by student having sum(pay) > 2000;

    *** where 条件 要写到 group by 前面                  -执行顺序。 一个查询语句同时包含了 别名,聚合函数,where 和 having 执行顺序:                                                               

    1.最先执行 where ;2.然后执行聚合函数和别名 ;3.最后再执行having。

    3.子查询(了解)

    查询年龄小于平均年龄的学生数据              3.1先查出平均年龄 select avg(age) from student;   

    3.2在根据平均年龄查询 select * from student where age < 平均值; 子查询:select * from student where age < (select avg(age) from student);                                                  要求:                                                                1.嵌套在查询语句内 2.必须用括号包裹 

    相关文章

      网友评论

          本文标题:Mysql数据库知识点

          本文链接:https://www.haomeiwen.com/subject/ftwfqqtx.html