MySQL学习笔记(三)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL学习笔记(三)

4、表的结构


  • 不看表内容 , 只看表的结构 desc + 表名 ;


mysql> desc dept;
 +--------+-------------+------+-----+---------+-------+
 | Field  | Type        | Null | Key | Default | Extra |
 +--------+-------------+------+-----+---------+-------+
 | DEPTNO | int(2)      | NO   | PRI | NULL    |       |     部门编号
 | DNAME  | varchar(14) | YES  |     | NULL    |       |     部门名称
 | LOC    | varchar(13) | YES  |     | NULL    |       |     地理位置
 +--------+-------------+------+-----+---------+-------+
 3 rows in set (0.15 sec)
 mysql> desc emp ;
 +----------+-------------+------+-----+---------+-------+
 | Field    | Type        | Null | Key | Default | Extra |
 +----------+-------------+------+-----+---------+-------+
 | EMPNO    | int(4)      | NO   | PRI | NULL    |       |   员工编号
 | ENAME    | varchar(10) | YES  |     | NULL    |       |   员工姓名
 | JOB      | varchar(9)  | YES  |     | NULL    |       |   工作岗位
 | MGR      | int(4)      | YES  |     | NULL    |       |   上级编号
 | HIREDATE | date        | YES  |     | NULL    |       |   入职日期
 | SAL      | double(7,2) | YES  |     | NULL    |       |   工资
 | COMM     | double(7,2) | YES  |     | NULL    |       |   补助
 | DEPTNO   | int(2)      | YES  |     | NULL    |       |   部门编号
 +----------+-------------+------+-----+---------+-------+
 8 rows in set (0.00 sec)
 mysql> desc salgrade ;
 +-------+---------+------+-----+---------+-------+
 | Field | Type    | Null | Key | Default | Extra |
 +-------+---------+------+-----+---------+-------+
 | GRADE | int(11) | YES  |     | NULL    |       |      工资等级
 | LOSAL | int(11) | YES  |     | NULL    |       |      最低工资
 | HISAL | int(11) | YES  |     | NULL    |       |      最高工资
 +-------+---------+------+-----+---------+-------+
 3 rows in set (0.00 sec)


5、MySQL常用命令


  • 详情参见第二部分


6、字符占用空间


  • 一个字母为一个字节
  • 一个汉字为三个字节


1.1 SELECT语句


  • 注意:select语句不会更改原表之中的任何内容,只负责检索、查询


  • select 后面可以跟字段名(自变量) , 也可以跟字面量/ 字面值(数据)


  • 如果select后面跟的是字段名,那么查询字段
  • 如果跟的是数据,那么会借助这个表的结构, 形成这个数据表


1.1.1 简单查询


select 字段名 from 表名 ;                        // 查询一个字段
 select 字段名1,字段名2,... from 表名;             // 查询多个字段
 select * from 表名 ;                            //  查询所有字段(效率低、可读性差)
 select 字段名 as 新字段名 from 表名;              // 给查询的列起别名
 /*注意:只是将列名的显示改为新的名称,原表不变。select语句不会更改原表之中的任何内容
         as可以省略,但只能显示一个字符。
         假设起别名是有空格,加上单引号 
         字符串用单引号标起来(标准),双引号在oracle数据库中无法使用
         在列之中的字段可以使用数学表达式
         别名是中文,属于字符串,用单引号括起来即可*


1.1.2 条件查询


  • 查询出来符合条件的


  • 格式 : select 字段名1 , 字段名2 , 字段名3 ... from 表名 where 条件 ;


  • 条件查询的条件:
  • = \ <>或 != \ < \ <= \ > \ >= \ between...and ... \ is null \ and \ or \ in \ not \ like \ % \ _
1、 = 等于
  【案例】:查询薪资等于800的员工的姓名和编号
  select empno,ename from emp where sal=800 ;
 2、<> 或 != 不等于
  【案例】:查询薪资不等于800的员工的姓名和编号
   select empno,ename from emp where sal<>800 ;
   select empno,ename from emp where sal!=800 ;
 3、<  小于
  【案例】:查询薪资小于2000的员工的姓名与编号
   select empno,ename from emp where sal<2000 ; 
 4、<= 小于等于
  【案例】:查询薪资小于3000的员工的姓名与编号
   select empno,ename from emp where sal<=3000 ; 
 5、> 大于
  【案例】:查询薪资小于2000的员工的姓名与编号
   select empno,ename from emp where sal>4000 ; 
 6、>= 大于等于
  【案例】:查询薪资小于2000的员工的姓名与编号
   select empno,ename from emp where sal>=4000 ; 
 7、between... and... 两个值之间,等同于 >= and <=
 注意:使用此语句时必须保证左小右大 , 闭区间,包含两端的值
  【案例】:查询薪资小于2000的员工的姓名与编号
   select empno,ename from emp where sal between 2000 and 4000 ; 
   select empno,ename from emp where sal >= 2000 and sal <= 4000 ; 
 8、is (not) null 
  【案例】:查询津贴(补助)(不)为null的员工姓名和员工编号
   select empno,ename from emp where comm is null;
   select empno,ename from emp where comm is not null ;
 9、and 并且
  【案例】:查询工作岗位是manager并且工资大于2500的员工信息
  select * from emp where job = 'manager' and sal > 2500 ;
 10、or 或者
  【案例】:查询工作岗位是manager或者是salesman的员工信息
  select * from emp where job = 'manager' or job = 'salesman';
  【注意】:and 和or 同时出现,and 优先级高 , 先执行and。
  【语句】: select * from emp where sal > 2500 and deptno = 10 or deptno = 20 ;
       表达的意义是工资大于2500并且dept = 10 的人,或者是deptno = 20 的所有人
        select * from emp where sal > 2500 and (deptno = 10 or deptno = 20) ;
        表达的意义是工资大于2500的人,同时是dept = 10 或者deptno = 20 的所有人
 11、(not) in 包含,相当于多个or
  【案例】:查询工作岗位是manager或者是salesman的员工信息
   select * from emp where job in ('manager', 'salesman');
   【注意】:in后面是具体的值,不是区间
 12、not   not 可以取非 , 主要用在is和in之中
 13、like   like称为模糊查询,支持% 或者_匹配 
             %    匹配任意个字符
             _    一个下划线只匹配一个字符
 【案例】: 找出姓名中含有'o'的员工信息
   select * from emp where ename like '%o%' ;
 【案例】:找出姓名中以T结尾的
   select * from emp where ename like '%t';
 【案例】:找出姓名以k开始的
   select * from emp where ename like 'k%';
 【案例】:找出姓名第二个字母是A的
   select * from emp where ename like '_a%';
 【案例】:找出第三个字母是r的
   select * from emp where ename like '__r%';
 【案例】:找出名字中含有下划线的
   select * from emp where ename like '%_%';     // 反斜杠代表转义, 类似于转义字符


1.1.3 排序


  • 格式 : select 字段名1 , 字段名2 , 字段名3 ... from 表名 order by 字段名 ;(默认升序排列)


  • 格式: select 字段名 from 表名 where 条件 order by 排序方式 ;
【案例】:查询所有员工薪资
   select ename , sal from emp order by sal ;            // 默认升序
   select ename , sal from emp order by sal asc ;        // 指定升序排列 
   select ename , sal from emp order by sal desc ;       // 指定降序排列 
 【案例】:按照员工名字和薪资排列,按照薪资升序排列,如果相同按照姓名升序排列
   select ename , sal from emp order by sal asc , ename asc ;    // 多字段排序
 【案例】:按照查询结果的第二列排列 
   select ename , sal from emp order by 2 ;              // 不建议,因为不健壮
 【案例】:找出工资在1250到3000之间的员工信息,按照薪资的降序排列
 格式: select 字段名 from 表名 where 条件 order by 排序方式 ;
   select ename , sal from emp where sal between 1500 and 3000 order by sal desc ;


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
145 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
128 6
|
1月前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
53 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
70 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
61 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
39 0
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
55 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
125 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
3月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。
|
3月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
38 6