MySQL學習筆記 2020/5/4 一、 資料庫的相關概念 資料庫的好處 1.1 能夠永久性的保存數據,實現數據持久化 1.2 可以實現結構化查詢,方便管理 2.資料庫相關概念 2.1資料庫(DB->database):存儲一組有組織的數據的容器 2.2 資料庫管理系統(DBMS->databas ...
MySQL學習筆記
2020/5/4
一、 資料庫的相關概念
- 資料庫的好處
1.1 能夠永久性的保存數據,實現數據持久化
1.2 可以實現結構化查詢,方便管理
2.資料庫相關概念
2.1資料庫(DB->database):存儲一組有組織的數據的容器
2.2 資料庫管理系統(DBMS->database management system):又稱資料庫軟體或資料庫產品,用於管理資料庫中的數據
2.3 結構化查詢語言(structured query language):用於和DBMS進行通信的語言(SQL語言不是某個資料庫軟體特有,而是幾乎所有資料庫軟體都通用的語言)
二、 一些資料庫軟體
- MySQL(08年被sun公司收購,09年sun公司被oracle公司收購)
- Oracle
- DB2
- sqlserver
三、 資料庫的特點
- 將數據放到表內,表再放在庫中(如security庫)
- 一個資料庫可以有多個表,每個表都有一個名字,用來標識自己(如security中的users)
- 表具有一些特性,這些特性定義了數據在表中如何存儲,類似以c++中“類”的設計(如為儲存學生數據的表)
- 表由列組成,也稱為欄位。所有表都是由一個或多個列組成的,每一列類似於c++中的“屬性”(如security庫中的user表中的username、password、id等欄位)
- 表中的數據是按行存儲的,每一行類似於C++中的”對象”
四、 MYSQL產品特點
優點:
- 成本低->開放源代碼
- 性能高:執行很快
- 簡單:容易安裝和使用
五、 DBMS
兩大類:
- 基於共用文件系統的DBMS(如微軟的access,但只能用於windows操作系統中)
- 基於客戶機-伺服器(C/S)的DBMS(MySQL、Oracle、SqlServer)
(一般來說安裝資料庫,是安裝資料庫的服務端)
六、 MySQL-配置文件
- bin目錄,二進位文件
- my.ini->一個配置文件,可以查看和修改當前MySQL服務端和客戶端的配置(如埠號、使用的字元集等)
七、 MySQL服務的啟動和停止
- 手動在電腦服務中開啟或停止
- 在dos命令行中使用命令(在管理員模式下啟動)
2.1 啟動->net start 服務名(服務名可以在自己電腦電腦管理中的服務處查看)
2.2 關閉->net stop 服務名
八、 MySQL服務端的登入和退出
- MySQL自帶的客戶端(只限於root用戶)
- 通過windows自帶的客戶端
登錄:mysql [-h(主機名) -P(埠號)] -u(用戶名) -p(密碼)
退出:exit或Ctrl+C
九、 MySQL常見命令
- 查看當前的所有資料庫
show database;(sql語句中以;或\g來表示一個語句的結束)
2. 打開指定的庫
use 庫名;
3. 查看當前庫的所有表
select tables;
4. 查看其它庫的所有表
select tables from 庫名;
5. 創建表
create table 表名(
列名 列類型,
列名 列類型,
…
);
6. 查看表結構
desc 表名;
7. 查看伺服器版本
7.1 登錄到mysql伺服器
show version();
7.2 沒有登錄到mysql伺服器
mysql –version
或
mysql –V
8. 創建一個資料庫
create database 庫名;
9. 查看當前打開的資料庫
select database();
十、 MySQL語法規範
- 不區分大小寫,但建議關鍵字大寫,表名,列名小寫
- 每條命令最好用‘;’結尾
- 每條命令根據需要,可以進行縮進或換行
- 註釋
4.1單行註釋:#
4.2單行註釋:-- 註釋文字(註意,後面有個空格)
4.3 多行註釋:/* 註釋文字 */
十一、 SQL語言
- DQL語言(Data Query Language)數據查詢語言
1.1 基礎查詢
1.1.1 語法:SELECT 查詢列表(查詢的東西可以有多個)FROM 表名;(select->選擇、過濾、查看)
1.1.2 查詢列表可以是:(註意,查詢的結果是一個虛擬的表格,沒有真實的保存)
(1) 表中的欄位
表中的單個欄位:
SELECT 欄位名 FROM 表名;
SELECT last_name FROM employee;
表中的多個欄位:
SELECT 欄位名,欄位名,…,欄位名 FROM 表名;(查詢欄位名的類型、個數、順序可以自己定義,靈活)
表中的全部欄位:
- SELECT * FROM 表名;(*表示所有欄位,但欄位的順序是固定的,不夠靈活)
- SELECT 欄位名,欄位名,…,欄位名(列出所有欄位) FROM 表名;
(著重號:用於把欄位名與關鍵字區分,代表這是一個欄位名,也可以不用)
(2) 常量值
SELECT 常量值;
SELECT 100;
SELECT 'john';
(3) 表達式
SELECT 表達式;
SELECT 100*98;
(4) 函數
SELECT 函數名;
SELECT VERSION();
1.1.3 給欄位取別名
優點:1.便於理解 2.如果要查尋的欄位有重名的情況,使用別名可以區分開來
方式一:AS方式
SELECT 欄位名 AS 別名;
SELECT 100*98 AS RESULT;
SELECT last_name AS 姓,first_name AS 名 FROM employee;
方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employee;
註意:若別名中有特殊字元如“ ”(空格)、“#”等,需要用“”把別名引起來(單引號也可以,不過建議使用雙引號)
1.1.4 去重
SELECT DISTINCT 欄位名 FROM 表名;
SELECT DISTINCT department_id FROM employee;(department_id中只顯示沒有重覆的編號,若作用於多列,則根據多列的多個欄位來共同去重)
1.1.5 +的作用
只有一個功能:運算符
(1).若兩個操作數都為數值型,則直接進行加法運算
(2).若兩個操作數中有一方為字元型,則會試圖將字元型值轉換為數值型。如果轉換成功,則繼續做加法運算;如果轉換失敗,則將字元型值轉換成0
(3). 若兩個操作數中有一方為null,則最後結果一定為null
1.1.6 concat()使用(拼接)
函數原型:concat(str1,str2,str3…)
SELECT CONCAT('a','b','c');->abc
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employee;
2. DML語言(Data Manipulation Language)數據操縱語言
3. DDL語言(Data Definition Language)資料庫模式定義語言
4. TCL語言(Transaction Control Language)事務控制語言