今日內容
- 數據庫的基本概念
- MySQL數據庫軟體
- 安裝
- 解除安裝
- 設定
- SQL
數據庫的基本概念
1. 數據庫的英文單詞:DataBase 簡稱DB
2. 什麼數據庫?
* 用於儲存和管理數據的倉庫.
3. 數據庫的特點:
1. 持久化儲存數據的. 其實數據庫就是一個檔案系統
2. 方便儲存和管理數據
3. 使用了統一的方式操作數據庫 --- SQL
- 常見的數據庫軟體
參見文件《MySQL基礎》.pdf
MySQL數據庫軟體
- 安裝
MySQL繼承.pdf
- 解除安裝
- 去mysql的安裝目錄找my.ini檔案
複製datadir=「D:/ProgramData/MySQL/MySQL Server 5.6/data」
- 解除安裝MySQL
- 刪除D:/ProgramData目錄下的MySQL資料夾
- 設定
- MySQL服務啓動
- 手動
- cmd->services.msc開啓服務視窗
- 使用管理員開啓cmd
* net start mysql :啓動mysql服務
* net stop mysql : 關閉mysql服務
- mysql登錄
- mysql -uroot -p密碼
- mysql -hip -uroot -p連線目標的密碼
- mysql --host=ip --user=root --password=連線目標的密碼
- mysql 退出
- exit
- quit
- mysql的目錄結構
- MySQL安裝目錄: basedir =「D:/MySQL/」
*組態檔: my.ini
- MySQL數據目錄: datadir=「D:/ProgramData/MySQL/MySQL Server 5.6/Data」
SQL
1. 什麼是sql?
Structured Query Language : 結構化查詢語言
其實就是定義了操作所有關係型數據庫的規則.每一種數據庫操作的方式存在不一樣的地方,稱爲"方言"
2. SQL通用語法
1. SQL語句可以單行或多行書寫,以分號結尾
2. 可使用空格和縮排來增強語句的可讀性
3. MySQL數據庫的SQL語句不區分大小寫,關鍵字建議使用大小寫.
4. 3種註釋:
* 單行註釋: -- 註釋內容 或 # 註釋內容(mysql 特有)
* 多行註釋: /* 註釋 */
3. SQL 分類
1) DDL(Data Definition Language)數據定義語言
用來定義數據庫物件: 數據庫,表,列等, 關鍵字 create ,drop ,alter 等
2) DML(Data Manipulation Language)數據操作語言
用來對數據庫中表的數據進行增刪改 ,關鍵字 insert, deete,update等
3) DQL(Data Query Language) 數據查詢語言
用來查詢數據庫中表的記錄(數據).關鍵字:select ,where等
4) DCL(Data Control Language) 數據控制語句(瞭解)
用來定義數據庫的存取許可權和安全級別,及建立使用者.關鍵字 GRANT ,REVOKE 等
DDL:操作數據庫、表
- 操作數據庫: CRUD
- c(Create) : 建立
- 建立數據庫
create database 數據庫名稱;
- 建立數據庫,判斷不存在,在建立
create database if not exists 數據庫名稱;
- 建立數據庫,並指定字元集
create database 數據庫名稱 character set 字元集名;
- 練習:建立db4 數據庫, 判斷是否存在,並制定字元集爲gbk
create database if not exists db4 character set gbk;
- R(Retrieve): 查詢
- 查詢所有數據庫的名稱
show databases;
- 查詢某個數據庫的字元集: 查詢某個數據庫的建立語句
- show create database 數據庫名稱;
- U(Update)修改
- 修改數據庫的字元集
alter database 數據庫名稱 character set 字元集名稱;
- D(Delete): 刪除
- 刪除數據庫
drop database 數據庫名稱;
- 判斷數據庫是否存在,存在刪除
drop database if exists 數據庫名稱;
- 使用數據庫
- 查詢當前正在使用的數據庫名稱
select database();
- 使用數據庫
use 數據庫名稱;
- 操作表
- C(create)建立
- 語法
create table 表名(
列名1 數據型別1,
列名2 數據型別2,
…
列名n 數據型別n
);
- 注意: 最後一列,不需要加逗號(,)
- 數據庫型別
- int : 整數型別 : age int ,
- double :小數型別 : score double (5,2)
- date : 日期,只包含年月日,yyyy-MM-dd
- datetime: 日期,包含年月日時分秒, ,yyyy-MM-dd HH:mm:ss
- timestamp: 時間錯型別,包含年月日時分秒,yyyy-MM-dd HH:mm:ss
- 如果將來不給這個欄位賦值,或賦值爲null,則預設使用當前的系統時間來自動賦值
- varchar :字串型別
- name varchar(20):姓名最大20個字元
- zhangsan 8字元 張三 2字元
- 建立表
create table student (
id int ,
name varchar(32),
age int ,
score double (4,1),
birthday date ,
insert_time timestamp
) ;
- 複製表
create table 表名 like 被複制的表名;
- R(retrieve)查詢
1. 查詢某個數據庫中所有的表名稱
show tables;
2. 查詢表結構
desc 表名;
- U(Update): 修改
- 修改表名
- alter table 表名 rename to 新的表名;
- 修改表的字元集
- alter table 表名 character set 字元集名稱
- 新增一列
- alter table 表名 add 列名 數據型別;
- 修改列名稱,型別
- alter table 表名 change 列名 新列名 新數據型別;
- alter table 表名 modify 列名 新數據型別 ;
- 刪除列
- D(Delete)刪除
- drop table 表名;
- drop table if exists 表名;
DML: 增刪改表中數據
- 新增數據
- 語法:
- insert into 表名(列名1,列名2…列名n) value(值1,值2,值3…值n);
- 注意事項
- 列名和值要一一對應
- 如果表名後,不定義列名,則預設給所有列新增值
inset into 表名 value(值1,值2,…,值n);
- 除了數位型別,其他型別需要使用引號(單雙都可以)引起來
- 刪除數據
- 語法:
- delete from 表名 [where 條件]
- 注意:
- 如果不加條件,則刪除表中所有記錄.
- 如果刪除所有記錄
- delete from 表名 ; – 不推薦使用,有多少條記錄就執行多少次刪除操作
- TRUNCATE TABLE 表名: – 推薦使用,效率高,先刪除表,然後在建立一張一樣的表
- 修改數據
- 語法:
- update 表名 set 列名1 = 值1 ,列名2 = 值2,…[where 條件];
- 注意:
DQL: 查詢表中的記錄
- 語法 :
select
欄位列表
from
表名列表
where
條件列表
group by
分組欄位
having
分組之後的條件
order by
排序
limit
分頁限定
-
基礎查詢
- 多個欄位的查詢
- select 欄位1 ,欄位2 …from 表名;
- 注意:
- 去除重複
- 計算列
- 一般可以使用四則運算計算一些列的值.(一般只會進行數值型的計算)
- ifnull(表達式1,表達式2): null 參與的運算,計算結果都爲null
- 表示式1: 哪個欄位需要判斷是否爲null
- 如果該欄位爲null後替換值. .
- 起別名
- as 名 : as 也可省略, 直接加別名
-
條件查詢
- where子句後跟條件
- 運算子
-
、<、<=、>=、=、<>
- BETWEEN…AND
- IN(集合)
- LIKE: 模糊查詢
- IS NULL
- and 或 &&
- or 或 ||
- not 或 !
select * from student where age >20;
select * from student where age >=20;
select * from student where age =20;
select * from student where age != 20;
select * from student where age <> 20;
select * from student where age >=20 && age <=30;
select * from student where age >=20 and age<=20;
select *from student where age between 20 and 30;
select * from student where age = 22 or age =18 or age = 25;
select * from student where age in(22,18,25);
select * from student where english is null;
select * from student where english is not null;
select * from student where name like "馬%";
select * from student where name like "_化%";
select * from student where name like '___';
select * from student where name like "%德%";