• MYSQL(二)


    数据表准备:

    CREATE TABLE student3 (
      id int,
      name varchar(20),
      age int,
      sex varchar(5),
      address varchar(100),
      math int,
      english int
    );
    
    INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES
    (1,'马云',55,'','杭州',66,78),
    (2,'马化腾',45,'','深圳',98,87),
    (3,'马景涛',55,'','香港',56,77),
    (4,'柳岩',20,'','湖南',76,65),
    (5,'柳青',20,'','湖南',86,NULL),
    (6,'刘德华',57,'','香港',99,99),
    (7,'马德',22,'','香港',99,99),
    (8,'德玛西亚',18,'','南京',56,65);

    sql注释:

    • 单行注释  
      -- 这是单行注释 注意--后面加一个空格再写内容
      # 这也是单行#号注释     一般在cmd上写
    • 多行注释
      /*
         多行注释
      */

    查询语句:

    1. 简单查询: select  *  from 表名  

    select * from student3   -- 查询student3所以信息
    select id from student3  -- 查询表中的字段 id
    select id,name,sex from student3 -- 查询student3中的字段id name sex
    /*
        *代表查询所有,多个字段查询,查询的字段使用逗号隔开
    */

    2.where查询  where 关键字

    where 关键字代表条件根据什么条件来查询
    */
    select * from student3 where id = 1;  -- 查询id为1的所有字段信息
    select * from student3 where name = "马云"  -- 查询name等于马云的信息

    3.比较运算符查询

    >大于  <小于   <=小于等于    >=大于等于    等于    <>!=不等于

    select * from student3 where math > 66   -- 查询数学成绩大于66的所有学生信息
    select name from student3 where  english = 0 -- 查询英语成绩等于null的学生姓名

    4.逻辑运算符查询

    and(&&) 多个条件同时满足     or(||) 多个条件其中一个满足      not(!) 不满足

    select name from student3 where math = 56 && english = 77 -- 查询数学为56 且 英语为77的学生姓名
    select * from student3 where sex in(''); -- 查询性别为女的信息
    select * from student3 where sex not in('') -- 查询性别不为女的信息

     5.between 值1 and 值2   查询在值1和值2之间的数据    表示从值1到值2范围,包头又包尾

    select * from student3 where math between 56 and 99  -- 查询数学分数在56到90之间的学生信息
    select * from student3 where math>=56 and math<=99   -- 等同于 上面

    6.like ,模糊查询

    格式:SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

    通配符字符串: 

    • %: 表示0个或多个字符(任意个字符)
    • _: 表示一个字符
    select * from student3 where name like "马%";  -- 查询所有姓马的信息
    select * from student3 where name like "马_";  -- 查询姓马且名字是两个字的信息

    7.排序

    order by 子句:可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)

    ASC: 升序, 默认是升序 ; DESC: 降序

    select * from student3  order by id;  -- 根据id升序查询  
    select * from student3 order by id desc -- 根据id降序查询
    
    select * from student3 order by name desc -- 根据姓名降序查询 根据首字母 排序

    组合排序:

    select * from student3 order by math asc,english asc  -- 根据数学成绩培训,英语成绩排序

    8.聚合函数查询

    五个聚合函数:

    • count: 统计指定列记录数,记录为NULL的不统计
    • sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0 
    • max: 计算指定列的最大值
    • min: 计算指定列的最小值
    • avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
    select count(*) 信马的人数 from student3 where  name like "马%"  -- 查询有多少个学生
    
    select sum(math) 总分数 from student3    -- 求班级总分数
    
    select max(math) 数学最高分 from student3  -- 数学最高分
    
    select min(english) 英语最低分 from student3 -- 英语最低分
    
    select avg(math) 数学平均分 from student3  -- 求数学平均分

    9.limit关键字

    limit:限制的意思,所以LIMIT的作用就是限制查询记录的条数。 用于分页查询

    语法:LIMIT offset,length; 或者limit length; offset是指偏移量,可以认为是跳过的记录数量,默认为0 length是指需要显示的总记录数

    select * from student3 limit 0,3   -- 查询第一条开始(包含第一条)后面三条数据
    
    select * from student3 limit 3,3   -- 查询从第四条开始后面的三条数据

    limit应用场景:

    -- 每页显示5条
    -- 第一页: LIMIT 0,5;    跳过0条,显示5条
    -- 第二页: LIMIT 5,5;  跳过5条,显示5条
    -- 第三页: LIMIT 10,5; 跳过10条,显示5条
    SELECT * FROM student3 LIMIT 0,5;
    SELECT * FROM student3 LIMIT 5,5;
    SELECT * FROM student3 LIMIT 10,5;

     10.别名查询 as 关键字  as可以省略 

    select name as 学生姓名,age as 学生年龄 from student3 -- 查询学生姓名和年龄并设置别名

    在查询时,数据库查询会展示字段名,我们可以使用别名来改变它的展示 查询时给列、表指定别名需要使用as 关键字

    select name 学生姓名,age 学生年龄 from student3 -- 查询学生姓名和年龄并设置别名

     对比如下:

    select name,age from student3 -- 查询学生姓名和年龄不设置别名、

     添加语句:

    常规语句:INSERT INTO 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3);

    insert into student3(`name`,age,sex,address,math,english) values ('常将',21,'','广东',98,68)  -- 插入一条数据

    省略语句:INSERT INTO 表名 VALUES (值1, 值2, 值3…);

    insert into student3 values (18,'常将',21,'','广东',98,68)  -- 插入一条数据

    插入多条语句::INSERT INTO 表名 VALUES (值1, 值2, 值3…),(值1, 值2, 值3…),(值1, 值2, 值3…),(值1, 值2, 值3…)..... ;

    insert into student3 (`name`,age,sex,address,math,english) 
             values 
            ('常将1',21,'','广东',98,68),
                    ('常将2',21,'','广东',98,68),
                    ('常将3',21,'','广东',98,68),
                    ('常将4',21,'','广东',98,68),
                    ('常将5',21,'','广东',98,68);

    注意: 

    1. insert into student3 values (18,'常将',21,'男','广东',98,68)  -- 插入一条数据  
    2、 insert into student3(`name`,age,sex,address,math,english) values ('常将',21,'男','广东',98,68)  -- 插入一条数据 

    区别:第一条,没有限制插入的字段,所有默认插入数据库的全部字段,使用主键id也要添加上去,第二条,指定了字段个数,由于id是主键自增所有我就不写了,当然加上去也是可以的。

    蠕虫复制 :INSERT INTO 表名1 SELECT * FROM 表名2;

    CREATE TABLE student2 LIKE student3;     -- 首先创建一个表结构一样的表            
    insert into student2  select * from student3  -- 进行复制

    注:表1和表2的表结构要一致

    修改语句:

    语法:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    update student3 set `name` = '柳依依' where id = 4 -- 将id为4的名字修改为柳依依
    update student3 set age = 22 where `name` = '马云' -- 将名字为马云的年龄修改为 22

    注:修改语句一定要跟一个where条件

    删除语句:

    删除表全部数据: DELETE FROM 表名;

    delete from student2  -- 删除表student2 的数据、

    摧毁表:TRUNCATE TABLE 表名;

    truncate table student2   -- 摧毁表student2 的数据

    根据条件删除:DELETE FROM 表名 WHERE 字段名=值;

    delete from student3 where id = 18 -- 删除id为18的 学生数据
    delete from student3 where id = 19 || id = 20  -- 删除id 为 19 和为20 的学生数据

    个人学习,内容简略

  • 相关阅读:
    Elasticsearch拼音分词和IK分词的安装及使用
    Java同步、异步区别
    Elasticsearch深入搜索之全文搜索及JavaAPI使用
    Elasticsearch学习笔记
    Elasticsearch拼音和ik分词器的结合应用
    Elasticsearch深入搜索之结构化搜索及JavaAPI的使用
    Java反射的理解
    打印三个长宽不同的矩形
    是非人生 — 一个菜鸟程序员的5年职场路 第23节
    是非人生 — 一个菜鸟程序员的5年职场路 第35节
  • 原文地址:https://www.cnblogs.com/2979100039-qq-con/p/13542917.html
Copyright © 2020-2023  润新知