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)
@TOC
一、基础语法
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 ;