Mysql数据库基础第二章:(一)基础查询

Mysql数据库基础系列

软件下载地址
提取码:7v7u
数据下载地址
提取码:e6p9
mysql数据库基础第一章:(一)数据库基本概念
mysql数据库基础第一章:(二)mysql环境搭建
mysql数据库基础第二章:(一)基础查询
mysql数据库基础第二章:(二)条件查询
mysql数据库基础第二章:(三)排序查询
mysql数据库基础第二章:(四)常见函数
mysql数据库基础第二章:(五)分组查询
mysql数据库基础第二章:(六)连接查询
mysql数据库基础第二章:(七)子查询
mysql数据库基础第二章:(八)子查询经典案例
mysql数据库基础第二章:(九)分页查询
mysql数据库基础第二章:(十)连接查询
mysql数据库基础第三章:DML语言
mysql数据库基础第四章:DDL(数据定义语言):库表的管理、数据类型与约束条件
mysql数据库基础第五章:(一)事务
mysql数据库基础第五章:(二)视图
mysql数据库基础第六章:变量、存储过程与函数
mysql数据库基础第七章:流程控制结构
mysql数据库基础第八章:窗口函数和公用表达式(CTE)



一、基础语法

select 查询列表
from 表名
# 打印内容,类似于python中的print
/*
特点:
	1.可以查询表的字段、常量、表达式、函数
	2.查询的结果是一个虚拟的表格
*/

共包含四张表:

  • 1.employees表格结构如下:
Field           Type          Null    Key     Default  Extra             备注
--------------  ------------  ------  ------  -------  ----------------  ------
employee_id     int(6)        NO      PRI     (NULL)   auto_increment    员工id
first_name      varchar(20)   YES             (NULL)                     姓
last_name       varchar(25)   YES             (NULL)                     名
email           varchar(25)   YES             (NULL)                     邮箱
phone_number    varchar(20)   YES             (NULL)                     电话号码       
job_id          varchar(10)   YES     MUL     (NULL)                     工种
salary          double(10,2)  YES             (NULL)                     薪水
commission_pct  double(4,2)   YES             (NULL)                     奖金率
manager_id      int(6)        YES             (NULL)                     领导id
department_id   int(4)        YES     MUL     (NULL)                     部门id
hiredate        datetime      YES             (NULL)                     入职日期

  • 2.departments (部门表)结构如下
Field            Type        Null    Key     Default  Extra            备注
---------------  ----------  ------  ------  -------  ---------------- -----------
department_id    int(4)      NO      PRI     (NULL)   auto_increment   部门编号
department_name  varchar(3)  YES             (NULL)                    部门名字                 
manager_id       int(6)      YES             (NULL)                    上级领导编号   
location_id      int(4)      YES     MUL     (NULL)                    位置编号   
  • 3.job结构如下
Field       Type         Null    Key     Default  Extra     备注
----------  -----------  ------  ------  -------  --------  ---------
job_id      varchar(10)  NO      PRI     (NULL)             工种 
job_title   varchar(35)  YES             (NULL)             工种名称
min_salary  int(6)       YES             (NULL)             最低薪水
max_salary  int(6)       YES             (NULL)             最高薪水
  • 4.location结构如下
Field           Type         Null    Key     Default  Extra              备注          
--------------  -----------  ------  ------  -------  ----------------   -------
location_id     int(11)      NO      PRI     (NULL)   auto_increment     位置编号
street_address  varchar(40)  YES             (NULL)                   	 街道地址
postal_code     varchar(12)  YES             (NULL)                      邮编
city            varchar(30)  YES             (NULL)                      城市
state_province  varchar(25)  YES             (NULL)                   	 州、省
country_id      varchar(2)   YES             (NULL)                      国家编号

二、实例

# 1.查询表中的单个字段
use myemployees; # 使用myemployees库
SELECT 
  last_name 
FROM
  employees ;
# 2.查询表中的多个字段
SELECT 
  last_name,
  salary,
  email 
FROM
  employees ;

# 3.查询表中所有字段
# 方法一:
SELECT * FROM employees; #表中的顺序不能改的
# 方法二:
SELECT 
    `employee_id`,
    `first_name`,
    `last_name`,
    `phone_number`,
    `last_name`,
    `job_id`,
    `phone_number`,
    `job_id`,
    `salary`,
    `commission_pct`,
    `manager_id`,
    `department_id`,
    `hiredate` 
FROM
    employees ;
# 当列很多时,方法二不适用。使用着重号``区分字段,例如如果字段名是name,会被误认为关键字



 #4.查询常量值
 SELECT 100;
 SELECT 'john';
 
 #5.查询表达式
 SELECT 100%98;
 
 #6.查询函数
 SELECT VERSION();
 
 #7.起别名
 /*
 使用as 或者 空格
 1.便于理解
 2.如果要查询的字段有重名的情况,使用别名可以区分开来
 */
SELECT 100%98 AS 取余;

#案例:查询salary,显示结果为 out put
SELECT salary AS "out put" FROM employees;


#8.去重 查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;


#9.+号的作用
/*只能用于运算,注意和java的区别
select 100+90;直接做加法
select ‘123’+90; 213 #其中一方为字符串,先转换为数值型,继续做加法
select 'john'+90; 90 #转换失败,则为'john'+90 = 0+90 = 90
select null + 10; 只要有null则结果为null
*/
#10.concat连接函数,将多个字符拼接在一起
select CONCAT(字符1,字符2,字符3) 
#案例:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT 
	CONCAT(last_name,first_name) AS 姓名
FROM
	employees;
#11.ifnull函数,判断字段或表达式是否为null,如果为null,返回指定的值,否则返回字段值
select IFNULL(commission_pct,0) from employees;
# 没有奖金的则返回0

#12.isnull,判断字段或表达式是否为null,如果为null返回1,否则返回0
# 选择奖金为0的返回1
SELECT ISNULL(commission_pct) FROM employees;

三、练习

#1. 显示表 departments 的结构,并查询其中的全部数据
DESC departments;
#2. 显示出表 employees 中的全部 job_id(不能重复)
SELECT DISTINCT job_id FROM employees;
#3. 显示出表 employees 的姓名和奖金列,各个列之间用逗号连接,列头显示成 OUT_PUT.,注意如果数据存在null,则连接之后全部都为null,需要进行处理
 SELECT 
  CONCAT(
    first_name,
    ',',
    last_name,
    ',',
    IFNULL(commission_pct, 0)
  ) AS out_put 
FROM
  employees ;


  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JOJO数据科学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值