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 ;

浙公網安備 33010602011771號