数据库:增删改查操作

一、创建数据库

语法:create database 数据库名;
示例:create database mydb;

二、新建表结构

语法:
      create table 表名(
          字段名  字段类型 约束条件,
          字段名  字段类型,
          字段名  字段类型
        )ENGINE=INNODB CHARSEt=utf8

示例:
      create table student(
           id int PRIMARY KEY auto_increment,
           name varchar(20) DEFAULT 'hw',
           sex char(20),
           age int
        )ENGINE=INNODB CHARSEt=utf8

三、增删改查

(1) 增加数据

语法:insert into 表名 (字段名、字段名、...) values(字段值、字段值、...),(),...;
示例:INSERT INTO mytest.student1(name,sex,age,birthday)VALUES('bbb','女',19,20220303),('ccc','男',20,20210721);

(2) 删除数据

语法:delete from 表名 where 条件;
示例:DELETE from student1 where id=4;
 
drop : drop table 表名;  
       drop database 数据库名;
truncate : truncate table 表名;

1.delete:删除表内容,还保留表结构,通常结合where条件使用,可回滚,带条件的删除,删除比较慢
2.truncate:删除表内容,还保留表结构,不可回滚,不需要提交事务,不带条件的删除,删除比较快
3.drop:彻底删除,不可回滚,表数据和表结构一起删除

(3) 更新数据

语法:update 表名 set 字段名=‘修改的值’ where 条件;
示例:UPDATE student1 set name='杨姐大傻子'WHERE id=1;

(4) 查询数据

1.查询整张表的内容:select *from 表名;
2.查询表中某几个字段的内容:select id,name from 表名;
3.查询一张表前10行的内容:select *from 表名 limit 10;
4.根据查询条件查询:select *from 表名 where 条件
(1)比较运算符: >  <  =  >=  <=  !=  <> 
    select * from student3;
    -- 查询出数学成绩大于等于66分的所有学员  条件  
    select * from student3 where  math>=66;
    -- 查询出数学成绩小于等于90分的所有学员
    select * from student3 where  math<=90;
    select * from student3 where  math<90;
    select * from student3 where  math>90;
    select * from student3 where  math!=90;
    select * from student3 where  math<>90;

(2)BETWEEN AND:在这个区间之内
    SELECT * from student3; 
    -- 查询出数学成绩在66分和76分之间的所有学员  BETWEEN  AND 包含
    SELECT * from student3 where math BETWEEN 66 AND 98;

(3)and(or):两个表达式且(或)的关系
    select * from student3 where math>=66 and math<=98;
    -- or 或者  满足一个条件即可
    select * from student3 where math>=66 or math<=98;

(4)in(not in):在(不在)...里面、distinct:避免查询到重复数据
    -- in 在。。。里面  not in 不在...里面
    -- 查询数学成绩是66分或者77分的所有学员信息
    select * from student3 where math in(66,76);
    select * from student3 where math not in(66,76);

(5)like:模糊查询 %匹配任意多个字符串  _匹配一个字符串
    SELECT * from student3; 
    -- like  模糊查询   告诉他部分内容就能查询出内容
    --  like _匹配一个字符  %匹配任意字符
    -- 查询出姓马,名字为两个字的所有学员信息   两个字
    SELECT * from student3 where name like '马__';
    -- 查询出姓马所有学员信息
    SELECT * from student3 where name like '马%';
    -- 查询出包含德的所有学员信息   %德%  前后有没有数据无所谓,只要字段有德就行
    SELECT * from student3 where name like '%德112德%';
    -- 末尾要求为德
    SELECT * from student3 where name like '%德';

(6)排序:ORDER BY 字段名 desc(从大到小)/asc(默认:从小到大)
    select * from student3;
    -- 排序  ORDER BY 字段名 desc/asc 默认asc  升序 从小到大  desc 降序 从大到小
    -- 根据年龄进行升序
    select * from student3 ORDER BY age;
    select * from student3 ORDER BY age asc;
    select * from student3 ORDER BY age desc;

    -- 让年龄升序同时让数学成绩降序  不可以的
    -- 按年龄升序,同年龄中的math成绩降序 可以做到的  优先级 谁在前面先按照谁排
    select * from student3 ORDER BY math desc, age asc;

(7)分组:GROUP BY 字段名
    -- 分组的目的是为了统计一些数据,聚合函数使用
    SELECT * from student3 GROUP BY sex;
    -- 统计男女各有多少人  男 6  女3    as 别名
    SELECT sex,count(id) '统计' from student3 GROUP BY sex;
    -- 统计男女的数学平均成绩  那如果是年龄最小的所有信息呢?
    SELECT * from student3;
    SELECT sex,min(age) '统计' from student3 GROUP BY sex;
    SELECT sex,avg(math) from student3 GROUP BY sex;

    -- 查询出年龄大于22岁的学生信息,按性别分组,统计每组人数
    SELECT * from student3;
    SELECT sex,count(id) FROM student3 where age>22 GROUP BY sex;
    -- 查询出年龄大于22岁的学生信息,按性别分组,统计每组人数 ,显示性别人数大于3的数据
    SELECT sex,count(id) FROM student3 where age>22  GROUP BY sex  having     count(id)>3;
    -- having和where都是加条件
    -- where 在分组之前过滤条件,where 后面不用聚合函数
    -- having 在分组之后过滤条件,可以用聚合函数

5.聚合函数
(1)max:最大
      max(列名):求这一列最大的值
      select max(age) from student:查询出所有学生年龄最大的一个
(2)min:最小
      min(列名):求这一列最小的值
      select min(age) from student:查询出所有学生年龄最小的一个
(3)avg:平均值
      avg(列名):求这一列的平均值
      select avg(age) from student:查询出所有学生年龄的平均值
(4)count:计数
      统计这一列有多少数据(三种方式进行查询)
      select count(id) from 表名
      select count(1) from 表名
      select count(*) from 表名
(5)sum:求和
      sum(列名):求这一列的总和
      select sum(age) from 表名:查询出所有学生年龄的总和


你可能感兴趣的:(MySQL,数据库,mysql)