ndroid訊息傳遞 EventBus 使用
阿新 • • 發佈:2020-07-28
今日內容
-
資料庫的基本概念
-
MySQL資料軟體
1.安裝
2.解除安裝
3.配置
*MySQL服務啟動
1. 手動
2. cdm-->services.msc 開啟服務的視窗
3. 使用管理員開啟cmd
*net stop MySQL 關閉服務
*net start MySQL 啟動服務
*MySQL登入
1. mysql -uroot -p1
2. mysql -hip -p連線目標的密碼
3. mysql -host=i -password=連線目標的密碼*MySQL退出 1. exit 2. quit *MySQL目錄結構 1. MySQL安裝目錄 *配置檔案:my.ini 2. MySQL資料目錄 *幾個概念 *資料庫:資料夾 *表:檔案 *資料
-
SQL
資料庫的基本概念
1. 資料庫的英文單詞:DataBase 簡稱DB
2. 什麼資料庫?
*用於儲存和管理資料的倉庫
3. 資料庫的特點
1. 持久化儲存資料,是一個檔案系統
2. 方便儲存和管理資料
3. 使用了統一的方式操作資料庫--SQL
4. 常見的資料庫軟體
SQL
1.什麼是SQL? Structure Query Language:結構化查詢語言 2.SQL通用語法 1. SQL 語句可以單行或多行書寫,以分號結尾。 2. MySQL 資料庫的SQL不區分大小寫,關鍵字建議大寫。 3. 3鍾註釋 *單行註釋:--(後面一定帶有空格) 註釋內容或 # 註釋內容(MySQL特有) *多行註釋:/*註釋*/ 3.SQL分類 1.DDL(Data Definition Language)資料定義語言 用來對資料庫物件:資料庫、表、列等。關鍵字:Create,drop ,alter等 2.DML(Data Mainpulation Language)資料操作語言 用來對資料庫中表的資料進行增刪改。關鍵字:insert delete update等 3.DQL(Data Query Language)資料查詢語言 用來查詢資料庫中表的記錄(資料)。關鍵字:select ,where等 4.DCL(Data Control Language)資料控制語言(瞭解) 用來定義資料庫的訪問許可權和安全級別,及建立使用者。關鍵字:GRANT ,REVOKE等
DDL:操作資料庫、表
1. 操作資料庫:CRUD 1. C(Create):建立 *建立資料庫: *Create database 資料庫名稱; *建立資料庫,判斷不存在,再建立: *create database if not exists 資料庫名稱; *建立資料庫,並指定字符集 *create database 資料庫名稱 character set 字符集(gbk、uf-8等); *練習:建立db4資料,判斷是否存在,並指定字符集為gbk *create database if not exists db4 character set gbk; 2. R(Retrieve):查詢 * 查詢所有資料庫的名稱 * show databases; *查詢某個資料庫的字符集:查詢某個資料庫的建立語句 * show create database 資料庫名稱; 3. U(Update):更新修改 *修改資料庫的字符集 *alter database 資料庫名稱 character set 字符集名稱; 4. D(Delete):刪除 *刪除資料庫 * drop database 資料庫名稱; *判斷資料庫存在,存在再刪除 * drop database if exists 資料庫名稱; * * exists 資料庫名稱; 5. 使用資料庫 * 查詢當前正在使用的資料庫名稱 *select database(); *使用資料庫 *use 資料庫名稱; 2. 操作表 1. C(Create):建立 1. 語法: creat table 表名( 列名1 資料型別1, 列名2 資料型別2, .... 列名n 資料型別n; ); *注意:最後一列不需要加逗號; 2. 資料型別 1. int 整型, *age int, 2. double 小數型別 *score double(5,2),(共5位,小數留兩位) 3. date:日期,只包含年月日 yyyy-MM-dd 4. datetime:日期,包含年月日時分秒 yyyy-MM-dd HH:mm:ss 5. timestamp:時間時間戳型別 包含年月日時分秒 yyyy-MM-dd HH:mm:ss *如果將來補個這個欄位賦值,或賦值為null,則預設使用當前的系統時間,來自動賦值。 6. 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 需要被複制的表名; 2. R(Retrieve):查詢 *查詢資料庫中所有的表名稱 *show tales; *查詢表結構 *desc 表名; 3. U(Update):更新修改 1. 修改的表名: *alter table 表名 rename to 新的表名; 2. 修改表的字符集: *alter table 表名 character set 字符集; 3. 新增一列: *alter table 表名 add 列名 資料型別; 4. 修改列名稱 型別: **alter table 表名 change 列名 新列名 新資料型別; *alter table 表名 modify 列名 新資料型別; 5. 刪除列: *alter table 表名 drop 列名; 4. D(Delete):刪除 *drop table 表名; *drop table if exists 表名;
DML 增刪改表中的資料
1. 新增資料:
*語法:
*insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
*注意的事項:
1. 列名和值要一一對應。
2. 如果表名後,不定義列名,則預設給所有列新增值
*insert into 表名 values(值1,值2,...值n);
3. 除了數字型別,其他型別需要使用引號(單雙都可以)引起來
2. 刪除資料:
*語法:
*delete from 表名 where 條件;
*注意
1. 如果不加條件,則刪除表中所有記錄。
2. 如果要刪除所有記錄
1. delete from 表名;--不推薦使用。有多少條記錄就會執行多少次刪除操作
2. truncate table 表名;--推薦使用。先刪除表,然後再建立一張一樣的表。
3. 修改資料:
*語法
*update 表名 set 列名1 = 值1,列名2 = 值2,...where 條件
*注意
1. 如果不加任何條件,則表中所有的記錄全部修改
DQL :查詢表中的記錄
*select * from 表名;
1. 語法:
*select
欄位列表
from
表名列表
where
條件列表
group by
分組欄位
having
分組之後的條件
order by
排序
limit
分頁限定
2. 基礎查詢
1. 多個欄位的查詢
* select 欄位1,欄位2...from 表名;
* 注意
*如果查詢所有欄位,則可以使用*來代替欄位列表。
2. 去除重複
* distinct
3. 計算列
* 一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算)
* ifnull(表示式1,表達上):null 參與的計算,計算結果都為null。
*表示式1:哪個欄位需要判斷是否為 null
*如果該欄位為 null 後的替換值。
4. 起別名
* as :as 也可以省略,不過要有空格
3. 條件查詢
1. where 字句後跟條件
2. 運算子
* <、>、<=、>=、=
* between...and..
* in(集合)
* like :模糊查詢
* _:單個任意字元
* %:多個任意字元
* is null
* and 或 &&
* or 或 ||
* not 或 !
1. DQL:查詢語句
1. 排序查詢
* order by 字句
* order by 排序欄位1 排序方式1 , 排序欄位2 排序方式2....
* 排序方式:
* ASC:升序(預設)
* DESC:降序
* 注意:
* 如果有多個排序條件,則當前邊的條件值一樣時,才會判斷第二條件。
2. 聚合查詢:將一列資料作為一個整體,進行縱向的計算。
* count:計算個數
1. 一般選擇非空的列:主鍵
2. count(*)-- 不推薦使用
* max: 計算最大值
* min:計算最小值
* sum:計算和
* avg:計算平均值
* 注意:聚合函式的計算,排除 null 的值;
* 解決方案:
1. 選擇不包含非空的列進行計算
2. ifnull 函式
3. 分組查詢:
1. 語法:group by 分組欄位;
2. 注意:
1. 分組之後查詢的欄位:分組欄位、聚合函式
2. 在 where 和 having 的區別
1. where在分組之前進行限定,如果不滿足條件,則不參與分組。having 在分組之後進行限定,如果不滿足結果,則不會被查詢出來
2. where 後不可以跟聚合函式,having可以進行聚合函式的判斷
4. 分頁查詢
1. 語法:limit 開始的索引,每頁查詢的條數;
2. 公式:開始的索引 = (當前的頁碼-1)* 每頁顯示的條數
-- 每頁顯示3條記錄
select * from student limit 0,3; -- 第1頁
select * from student limit 3,3; -- 第2頁
select * from student limit 6,3; -- 第3頁
3. limit 是MySQL的“方言”
約束
* 概念: 對錶中的資料進行限定,保證資料的正確性、有效性和完整性。
* 分類:
1. 主鍵約束:primary key
2. 非空約束:not null;
3. 唯一約束:unique
4. 外來鍵約束:foreign key;
* 非空約束:not null
1. 建立表時新增約束
create table stu(
id int,
name varchar(20) not null --name為非空
)
2. 建立表完後,新增非空約束
* alter table stu modify name varchar(20) not null;
3. 刪除name的非空約束
* alter table stu modify name varchar(20);
* 唯一約束
1. 建立表時,新增唯一約束
create table stu1(
id int,
phne_number varchar(20) unique-- 添加了唯一約束
);
2. 注意MySQL中,唯一約束限定的列的值可以有多個 null
select * from stu1;
insert into stu1 values(1,"121"),(2,"125");
3. 刪除唯一約束
alter table stu1 drop index phne_number;
4. 在建立表後,新增唯一約束
alter table stu1 modify phne_number varchar(20) unique;
* 主鍵約束:primary key.
1. 注意:
1. 含義:非空且唯一
2. 一張表只能有一個欄位為主鍵
- 主鍵就是表中記錄的唯一標識
2. 建立表時,新增主鍵約束
create table stu2(
id int primary key, -- 該id新增主鍵約束
name varchar(20)
);
3. 刪除主鍵
alter table stu3 drop primary key;
4. 建立表後,新增主鍵
alter table stu3 modify id int primary key;
5. 自動增長:
1. 概念:如果某一數值型別的,使用auto_increment 可以用來完成值的自動增長
2. 在建立時,新增主鍵約束,並且完成主鍵自增長
create table stu(
id int primary key auto_increament, -- 給主鍵新增約束
name varchar(20)
);
3. 刪除自動增長
alter table stu4 modify id int;
4. 新增自動增長
alter table stu4 modify id int auto_increment;- 外來鍵約束:foreign key
- 在建立表時,可以新增外來鍵
*語法:
create table 表名(
....
外來鍵列
constraint 外來鍵名稱 foreign key 外來鍵列名稱 references 主表名稱(主列表名)
) - 刪除外來鍵
- alter table 表名稱 drop foreign key 外來鍵名稱;
- 在建立表後新增外來鍵
*alter table 表名稱 add constraint 外來鍵名稱 foreign key(外來鍵欄位名稱) references 主表名稱(主列表名); - 級聯操作
- 新增級聯操作
- 語法:alter table 表名 add constraint 外來鍵名稱 foreign key(外來鍵欄位 名稱) references 主表名稱(主列表名) on update cascade;
- 分類:(謹慎使用)
- 級聯的更新:on update cascade
- 級聯的刪除:on delete cascade
- 新增級聯操作
- 在建立表時,可以新增外來鍵
- 外來鍵約束:foreign key
資料庫的設計
1. 多表之間的關係
1. 分類:
1. 一對一:
* 如:人和身份證
* 分析:一個人只有一個身份證,一個身份證只能對應一個人
2. 一對多(多對一):
* 如:部門和員工
* 分析:一個部門有多個員工,一個員工只能對應一個部門
3. 多對多:
* 如:學生和課程
* 分析:一個學生可以選擇很多門課程,一個課程也可以被很多學生選擇
2. 實現關係:
1. 一對多(多對一):
* 如:部門和員工
* 實現方式:在多的一方建立外來鍵,指向一的一方的主鍵。
2. 多對多:
* 如:學生和課程
* 實現方式:多對多關係實現需要藉助第三張中間表。
中間表至少包含兩個欄位,這兩個欄位作為第三張表的外來鍵,分別指向兩張表的主鍵。