Mysql数据库知识点

一.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数据库知识点)