首页 > 数据库 >Mysql简单的学习记录(上)

Mysql简单的学习记录(上)

时间:2023-09-22 22:34:53浏览次数:42  
标签:记录 列名 表名 查询 学习 stu Mysql where select

MySql

一、DDL(操作数据库、数据表)
  1. 创建数据库
    • create database 数据库名称
      
  2. 查询数据库
    • show databases
      create database if not exists 数据库名称
      
  3. 删除数据库
    • drop database 数据库名称
      drop database if exists 数据库名称
      
  4. 使用数据库
    • select database() --查看当前使用的数据库
      use 数据库名称 --使用数据库
      
  5. 创建表
    • create table 表名(
      	字段名1 数据类型1,
      	字段名2 数据类型2,
      	……
      	字段名n 数据类型n
      );
      
    • 数据类型

      • 用法以及类型百度

      • 例子
        create table student(
        	id int,
        	name varchar(10),
        	gender char(1),
        	birthday date,
        	score double(5,2),
        	email varchar(64),
        	tel varchar(15),
        	status tinyint
        );
        
  6. 查询表
    • show tables
      desc 表名 --查询表结构
      
  7. 删除表
    • drop table 表名
      drop table if exists 表名
      
  8. 修改表
    • ①修改表名
      alter table 表名 rename to 新表名
      ②添加一列
      alter table 表名 add 列名 数据类型
      ③修改数据类型
      alter table 表名 modify 列名 新数据类型
      ④修改列名和数据类型
      alter table 表名 change 列名 新列名 新数据类型
      ⑤删除列
      alter table 表名 drop 列名
      
二、DML(数据库管理语言)
  1. 添加数据
    • --指定列添加
      insert into 表名(列名,……) values(值,……)
      --给所有列添加数据
      insert into 表名(列名,……包括所有列名) values(值,……所有值)
      
      
      • 批量添加数据:使用逗号
  2. 修改数据
    • update 表名 set 列名1=值1,列名2=值2,……[where 条件]
      
  3. 删除数据
    • delete from 表名 [where 条件]
      
  4. 注意点
    • 不加where会删除所有数据
三、DQL(查询数据)
  1. 基础语法
    • select
      	字段列表
      from
      	表名列表
      where
      	条件列表
      group by
      	分组字段
      having
      	分组后列表
      order by
      	排序字段
      limit
      	分页限定
      	
      	distinct #去除关键字
      	as #在列名处起别名
      
  2. 条件查询
    • select 字段列表 from 表名 where 条件列表
      
      1 查询年龄大于20岁的学员信息
      	select * from stu where age > 20
      2 查询年龄大于等于20岁的学员信息
      	select * from stu where age >= 20
      3 查询年龄大于等于20岁并且年龄小于30岁的学员信息
      	select * from stu where age >= 20 && age <=30
      	select * from stu where age >= 20 and age <=30
      	select * from stu where age between 20 and 30
      4 查询入学日期在 1998-01-01 到 1999-09-01 之间的学员的信息
      	select * from stu where hire_date between '1998-09-01' and '1999-09-01'
      5 查询年龄等于18岁的学员的信息
      	select * from stu where age = 18
      6 查询年龄不等于28岁的学员的信息
      	 select* from stu where age != 18
      	 select* from stu where age <> 18
      7 查询年龄等于18岁 或者年龄等于20岁 或者年龄等于22岁的学员信息
      	select * from stu where age = 18 or age = 20 or age = 22
      	select * from stu where age in (18,20,22)
      8 查询英语成绩为 null 的学员信息 #不能用==,判断null只能用is null 或者 is not null
      	select* from stu where english is null
      	
      前面的所有查询都是精准的查询	还有一个 Like 模糊查询
       LIke _单个字符 %代表任意字符个数
       
      1 查询姓'马'的学员信息
      	select * from stu where name like '马%'
      2 查询第二个字是'花'的学员信息
      	select * from stu where name like '_花%'
      3 查询名字中包含'德'的学员信息
      	select * from stu where name like '%德%'
      
      
  3. 排序查询
    • select 字段列表 from 表名 order by 排序字段名1[排序方式1],排序字段名2[排序方式2],……
      
      1 查询学生信息,按照年龄升序排列
      	select * from stu order by age asc #按照年龄升序排列,默认asc
      	
      2 查询学生信息,按照数学成绩降序排列
      	select * from stu order by math desc #降序
      	
      3 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
      	select * from stu order by math desc, english asc
      
  4. 分组查询
    • 聚合函数

      • 概念:将一列作为一个整体,进行纵向计算
      • 聚合函数分类
        • count:统计数量
        • max:最大值
        • min:最小值
        • sum:求和
        • avg:平均值
    • select 聚合函数名(列名) from 表名
      null 不参加聚合函数运算
      
      1 统计一个班有多少学生
      	select count(id) from stu #count统计的列名不能为空
      		取值:主键 或者 *
      2 查询数学成绩的最低分
      	select max(math) from stu
      3 查询数学成绩的最低分
      	select min(math) from stu
      4 查询数学成绩的总分
      	select sum(math) from stu
      5 查询数学成绩的平均分
      	select avg(math) from stu
      6 查询英语成绩的最低分
      	select min(english) from stu #null不参加运算
      
    • 分组查询

      • 1 查询男同学和女同学各自的平均分
        	select sex, avg(math) from stu group by sex
        2 查询男同学和女同学各自的数学平均分,以及各自人数
        	select sex ,count(*),avg(math) from stu group by sex
        3 查询男同学和女同学各自的数学平均分,以及各自人数,低于70分的不参与运算
        	select sex ,count(*),avg(math) from stu where math > 70 group by sex
        3 查询男同学和女同学各自的数学平均分,以及各自人数,低于70分的不参与运算,分组后人数大于2
        	select sex ,count(*),avg(math) from stu where math > 70 group by sex having count(*) > 2
        
        • where 和 having 的区别
          • 执行时机:where 是分组前进行判定,不满足where条件不参与分组,having是分组之后的结果进行过滤
          • 可判断条件:where不能对聚合函数进行判断,having可以
          • 执行顺序: where > 聚合函数 > having
  5. 分页查询
    • select 字段列表 from 表名 limit 起始索引,查询条目数
      1 从0开始查询,查询三条数据
      	select * from stu limit 0,3
      2 每页显示3条数据,查询第一页数据
      	select * from stu limit 0,3
      3 每页显示3条数据,查询第二页数据
      	select * from stu limit 3,3
      4 每页显示3条数据,查询第三页数据
      	select * from stu limit 6,3
      	
      #起始索引 = (当前页码-1) * 每页显示条数 
      
      # 分页查寻 limit 是 MYSQL 专用
      # Oracle 分页查询使用 rownumber
      # SQL server使用的是 top
      

标签:记录,列名,表名,查询,学习,stu,Mysql,where,select
From: https://www.cnblogs.com/StarUIO/p/17723521.html

相关文章

  • Mysql简单的学习记录(下)
    一、约束概念作用于列上的规则,用于限制加入表的数据保证数据库正确性、有效性、完整性约束的分类约束名称描述关键字非空保证列中所有数据不为nullnotnull唯一保证列中所有数据不相同unique主键主键是一行数据唯一标识,非空且唯一primarykey......
  • 《信息安全系统设计与实现》第三周学习笔记
    一、程序设计语言中的必备要素和技能一门程序设计语言中的必备要素和技能通常包括以下内容:语法:掌握语言的语法规则,包括关键字、标识符、表达式、语句和注释等。数据类型:例如整数、浮点数、字符串、布尔值等。变量和赋值:变量可以存储和操作数据。编写代码需要声明变量、给变......
  • C语言学习-- ~ 按二进制取位 前置后置++ 关系操作符 逻辑操作符
    #include<stdio.h>//~按二进制取位intmain(){inta=10;intb=~a;/*~按二进制取位如101--~=010*/printf("%d\n%d\n",a,b);/*运行a=10b=-11在二进制里的最高位表示符号位,0为正1为负(3=000…………011)源码......
  • 中小型 MySQL,如何判断是否需要读写分离?
    在中小型MySQL数据库中是否需要实施读写分离取决于多个因素,包括数据库的负载、性能需求、可用性要求和预算等。以下是一些判断是否需要读写分离的考虑因素:负载均衡:如果您的数据库服务器经常处于高负载状态,主要是因为读和写操作同时进行,那么考虑使用读写分离来分担负载是有意义的。......
  • python+playwright 学习-83 page.expect_response()捕获网络返回数据
    前言expect_response()方法可以捕获接口返回的数据,在爬取网页数据时非常有用。expect_response()使用官方文档示例withpage.expect_response("https://example.com/resource")asresponse_info:page.get_by_text("triggerresponse").click()response=response_inf......
  • C语言学习-- ~ 按二进制取位 前置后置++ 关系操作符 逻辑操作符
    #include<stdio.h>//~按二进制取位intmain(){inta=10;intb=~a;/*~按二进制取位如101--~=010*/printf("%d\n%d\n",a,b);/*运行a=10b=-11在二进制里的最高位表示符号位,0为正1为负(3=000…………011)源码......
  • 使用qemu来学习Linux的休眠和唤醒
    休眠在虚拟机中执行下面的命令:#echomem>/sys/power/state唤醒进入monitor模式:ctrl+ac(qemu)system_wakeup查看日志查看虚拟机的内核日志:[63.878427]PM:suspendentry(deep)[63.880758]Filesystemssync:0.002seconds[63.905165]Freezingusers......
  • DBeaver中使用MySQL在建表时使用DROP TABLE IF EXISTS `tbl_book`;报错
    点击查看代码DROPTABLEIFEXISTS`tbl_book`;CREATETABLE`tbl_book`(`id`int(11)NOTNULLAUTO_INCREMENT,`type`varchar(20)DEFAULTNULL,`name`varchar(50)DEFAULTNULL,`description`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=Inn......
  • python+playwright 学习-82 Request 对象
    前言每当页面发送网络资源请求时,页面都会发出以下事件序列:page.on("request")当页面发出请求时触发page.on("response")接收到请求的响应状态和标头时触发page.on("requestfinished")当响应主体被下载并且请求完成时发出。如果请求在某个时刻失败,则会发出page.on("requ......
  • Qt学习01
    一、Qt简介1、Qt是什么图形用户界面应用程序开发框架,是对底层应用编程接口进行了面向对象的封装是一套基于C++语言的库,专注但不限于图形用户界面程序开发,还可以进行系统调用、网络编程、数据库、2D/3D图形处理2、为什么选择Qt基于C++语言,使用简单、易用,有优秀的跨平台特性,支......