【編測編學】MySQL數據庫基礎知識

一:數據庫的相關概念java

一、 數據庫的好處mysql

① 能夠持久化數據到本地
② 結構化查詢sql

二、 數據庫的常見概念數據庫

① DB:數據庫、存儲數據的容器
② DBMS:數據庫管理系統,又稱之爲數據庫軟件或數據庫產品,用於建立和管理DB
③ SQL:結構化查詢語言,用於和數據庫通信的語言,不是某個數據庫軟件特有的,而是幾乎全部主流的數據庫軟件通用的語言數組

三、 數據庫存儲數據的特色安全

① 數據存放到表中,表在放到庫中
② 一個庫能夠由多張表,每張表具備惟一的表名來標識本身
③ 表中有一個或多個列,列又稱之爲字段,至關於java中得屬性
④ 表中每一行數據,至關於Java中對象服務器

四、 常見的數據庫管理系統
Mysql oracle db2 sqlserver架構

二:MySQLoracle

一、 優勢ide

① 開源、免費、成本低
② 性能高、移植性好
③ 體積小、便於安裝

二、 MySQL的安裝
屬於C\S架構的軟件,通常來說安裝服務端

三、 MySQL服務的啓動和中止

① 經過命令
net start 服務名
net stop 服務名
② 計算機管理--------服務

四、 MySQL服務的登陸和退出
登陸:mysql –h主機名 –P端口號 –u用戶名 –p密碼(默認端口3306,用戶root)
退出:exit或者Ctrl+c

五、 mysql的語法規範

① 不區分大小寫,可是建議關鍵字大寫,表名、列名小寫
② 每條命令最好用分號結尾
③ 每條命令根據須要,能夠驚醒縮進,或者換行(建議關鍵字放一行,要查詢的放一行)
④ 註釋
單行註釋:#註釋文字、--註釋文字
多行註釋:/註釋文字/
show database();//查看當前全部的數據庫
use+庫名;//打開指定的庫
(只要用了use你就在那個庫中了)
show tables;//查看當前庫全部的表
show tables from 庫名;//查看其餘庫全部的表
create table 表名(
列名 列類型,
列名 列類型,
...
)//建立表
desc 表名;//查看錶的結構
查看服務器的版本:
方式一:登陸到mysql服務端
select version();
方式二:沒有登陸到mysql服務端
mysql --version或mysql --V

3、MySQL一些基礎的查詢
一、基本要掌握的
select 查詢列表 from 表名
USE manba;

#1.查詢表中的單個字段
SELECT last_name FROM manba;

#2.查詢表中的多個字段
SELECT last_name,salary,email FROM manba;

#3.查詢表中全部字段(雙擊左側)
#方式一
SELECT
department_id,
department_name,
manager_id,
location_id
FROM
manba;
#方式二
SELECT * FROM manba ;

#4.查詢常量值
SELECT 100;
SELECT 'john';
#(不區分字符和字符串)

#5.查詢表達式
SELECT 100%98;

#6.查詢函數
SELECT VERSION();

#7.起別名
/
①便於理解
②若是要查詢的字段有重名的狀況,使用別名能夠區分開來
/
#方式一:用as
SELECT 100%98 AS 結果;
SELECT last_name AS 姓,first_name AS 名 FROM manba;

#方式二:空格
SELECT last_name 姓,first_name 名 FROM manba;
#案例:查詢salary,顯示結果爲output
SELECT salary AS "out put" FROM manba;

#8.去重

#案例:查詢員工表涉及到的全部部門編號
SELECT DISTINCT department_id FROM manba;

#9. +號的做用

/*
java中的+號:
①運算符:兩個操做數都爲數值型
②鏈接符:只要有一個操做數爲字符串

mysql中的+號:
僅僅只有一個功能:運算符

select 100+90;
select '123'+90; 其中一方爲字符型,會試圖將字符型數值轉換成數值型
若是轉換成功則繼續加法運算
select 'john'+90; 若是轉換失敗,則字符型數組值轉換成0;

select null+10;只要其中一方爲null,則結果爲null
*/

#案例:查詢員工名和姓鏈接成一個字段,並顯示爲 姓名

SELECT CONCAT(last_name,first_name) AS 姓名 FROM manba;

#10.判斷是否爲空
#commission_pct是否爲空?爲空返回0
SELECT
IFNULL(commission_pct,0) AS 獎金率,
commission_pct
FROM
manba;

二、條件查詢
2.1按條件表達式查詢
#案例1:查詢工資>12000的員工信息

SELECT * FROM manba WHERE salary>12000;

#案例2:查詢部門編號不等於90號的員工名和部門編號

SELECT last_name,department_id FROM manba WHERE department_id!=90;

2.2按邏輯表達式查詢
案例1:查詢工資在10000到20000之間的員工名,工資和獎金

SELECT last_name, salary,commission_pct FROM manba WHERE salary>=10000 and salary<=20000;

案例2:查詢部門編號不在90-110之間,或者工資高於15000的員工信息
SELECT * FROM manba WHERE department_id<90 OR department_id>110 OR salary>15000;

2.3模糊查詢
2.3.1通常和通配符搭配使用
通配符:% 任意多個字符,包含0個
_ 任意單個字符
案例1:查詢員工名中包含字符a的員工信息
SELECT * from manba where last_name like '%a%';
%表明通配符,表明任意個字符

案例2:查詢員工名中第3個字符爲n,第五個字符爲l的員工名和工資
SELECT last_name,salary from manba where last_name like '__n_l%';

#案例3:查詢員工名中第二個字符爲_的員工名(轉義字符)
SELECT last_name FROM manba WHERE lastname LIKE '_%';

2.3.2between and
①使用between and能夠提升語句的簡潔度
②包含臨界值
③兩個臨界值順序不能調換

#案例1:查詢員工編號在100到120之間的員工信息

SELECT * from manba where manba_id between 100 and 200;

2.3.3.in
含義:用於判斷某字段的值是否屬於in列表中的某一項
特色:
①使用in提升語句簡潔度
②in列表的值類型必須統一或者兼容
③不支持通配符

#案例:查詢員工的工種編號是 IT_PROT, AD_VP, AD_PRES中的一個的員工名和工種編號
SELECT last_name,job_id FROMmanba WHERE
job_id='IT_PROT' OR job_id='AD_VP' OR job_id='AD_VP';

SELECT last_name,job_id FROMmanba WHERE job_id IN ('IT_PROT' ,'AD_VP' , 'AD_VP');

2.3.4. is null(is not null)
=或者<>不能用於判斷null值

#案例1:查詢沒有獎金的員工名和獎金率
SELECT last_name,commission_pct FROM manba WHERE commission_pct IS NULL;

#安全等於 <=> is null能夠換成<=> null

#案例1:查詢沒有獎金的員工名和獎金率
SELECT last_name,commission_pct FROM manba WHERE commission_pct <=> NULL;

#案例12:查詢工資爲12000的員工信息
SELECT last_name,salary FROM manba WHERE salary <=> 12000;

三、排序查詢
引入:
select * from manba;
語法:
SELECT 查詢列表
from 表
[where 篩選條件]
order by 排序列表 [asc|desc]
特色:
asc表明升序,desc表明降序,默認不寫是升序
order by子句中能夠支持單個字段、多個字段、表達式、函數、別名
order by子句通常是放在查詢語句的最後面,limit子句除外

#案例1:查詢員工信息,要求工資從高到低排序
SELECT FROM manba ORDER BY salary DESC;
SELECT
FROM manba ORDER BY salary ASC;

#案例2:查詢部門編號>=90的員工信息,按入職時間的前後進行排序

SELECT *
FROM manba
WHERE department_id>=90
ORDER BY hiredate ASC;

#案例3:按年薪高低顯示員工的信息和年薪[按表達式排序]
SELECT , salary12(1+IFNULL(commission_pct,0)) AS 年薪
FROM manba
ORDER BY salary
12*(1+IFNULL(commission_pct,0)) DESC;

#案例4:按年薪高低顯示員工的信息和年薪[按別名排序]
SELECT , salary12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY 年薪 DESC;

#案例5:按姓名的長度顯示員工的姓名和工資 [按函數排序]
SELECT LENGTH(last_name) AS 字節長度, last_name,salary
FROM manba
ORDER BY LENGTH(last_name) DESC;

#案例6:查詢員工信息,要求先按工資升序,再按員工編號降序 [按多個字段排序]
SELECT * FROM manba
ORDER BY salary ASC,employee_id DESC;
#總體按工資排序,工資相同時,按員工編號降序

4.常見函數的運用
概念:相似java的方法,將一組邏輯語句封裝在方法體中,對外暴露方法名
好處:隱藏了實現細節、提升代碼的重用性
調用:select 函數名(實參列表) [from 表(根據須要)];
特色:
①叫什麼(函數名)
②幹什麼(功能)
分類:
字符函數:length concat substr instr trim upper lower lpad rpad replace

數學函數: round ceil floor truncate mod

日期函數:now curdate curtime year month monthname 
day hour minute second str_to_date  date_format

其餘函數:version database user

控制函數: if case

下期咱們就函數的應用,還有其餘的查詢作一個彙總

相關文章
相關標籤/搜索