資料庫介紹
資料庫是在計算機出現以后,為了解決計算機存盤問題而創建,資料庫中包含表,表當中才是資料,

資料庫的發展史
1. 萌芽階段
所有存盤依賴的都是檔案,安全性低,查找非常困難,
2. 層次模型
1). 優點:查詢分類的效率高;
2). 缺點:導航結構:如果查找同類別資料,效率低,
資料不完整(如下圖)

3. 網狀模型
資料不完整性:我們認為每一行資料之間是獨立不相關的,網狀模型解決了資料不完整的問題,但是依然沒有導航結構,

4. 關系模型
現在主流的資料庫模型,特點:每張表都是獨立的,沒有導航結構,表和表之間通過公共欄位建立關系,注意:公共的欄位,名字可以不一樣,但是資料型別必須一致,表達的含義必須一致.資料型別一致,但不一定是公共欄位,
優點:有導航結構;
缺點:關系型資料庫操作不便捷(關系可能比較復雜),執行效率低下,


補充:在專案中不是每一個業務都需要關系型資料庫,可以使用非關系型資料庫(NoSql)
簡單概念認識
記錄,欄位,行列,表的屬性,欄位的屬性,
1. 一條記錄我們稱之為一行資料;
2. 一個欄位稱之為一列;
3. 表的屬性就是欄位;
4. 欄位的屬性就是該欄位的功能;
5. 資料冗余指的是資料重復率,
【補充】:
1)冗余只能減少,不能杜絕;
2)冗余減少了,表的體積就減少了,更新速度提高了,保證了資料額完整性;
3)減少了冗余,但是表的數量增加了,多表查詢的效率降低了,在專案中,寧可減少資料冗余也要使用多表查詢,
資料的完整性
正確性 + 準確性 = 資料的完整性
分析:人的年齡(age int)int資料型別最大11個長度,正確性如何?準確性如何? ===> 答:正確但是不準確
SQL陳述句
結構化查詢語言(Structured Query Language)簡稱SQL ,是一種特殊的編程語言,是一種資料查詢和程式設計語言,主要作用:用于存盤資料和查詢資料,更新和管理資料,
關系型資料庫種類:
| 關系型資料庫 | 公司 | 擴展 |
|---|---|---|
| access | 微軟 | SQL |
| SQL-Server | 微軟 | T-SQL |
| Oracle(收費) | 甲骨文 | PL/SQL |
| MySQL(收費失敗) | 甲骨文 | MySQL |
| MariaDB | 開源社區 | MySQL |
下面主要介紹關系型資料庫MySQL相關操作:
(1).啟動MySQL
使用cmd終端開啟客戶端:
1 net strat[stop] mysql57
第三方服務可以是.exe檔案開啟:進入mysql目錄中的bin目錄中,執行mysqld.exe
(2).連接MYSQL服務器
在cmd中輸入:
1 mysql -hlocalhost -uroot -ppwd -P3306 2 ''' 3 loaclhost 代表本地IP地址 4 host 主機 -h 5 username 用戶名 -u 6 passwd 密碼 -p(小寫字母) 7 port 埠號 -P(大寫字母) 8 '''
(3).斷開鏈接
1. exit 2. quit 3. \q
資料庫的庫操作
1 '''(1)創建資料庫語法:create database [if not exists] `資料庫名` charset=字符編碼(utf8mb4);''' 2 # 一般,創建已經存在的資料庫會報錯 3 create database `firstdb` charset=utf8mb4; 4 5 '''(2)查看資料庫集''' 6 show databases; 7 8 '''(3)查看建庫陳述句''' 9 show create database `資料庫名`; 10 11 '''(4)修改資料庫,只能修改資料庫的字符集''' 12 alter database `資料庫名` charset=你要修改的字符集; 13 14 '''(5)洗掉資料庫''' 15 drop database [if exists] `資料庫名`; 16 17 '''(6)選擇資料庫''' 18 use `資料庫名`;
資料庫的表操作
注意:創建表之前必須先選擇某一個資料庫
1)創建表的語法:
1 create table [if not exists] `表名`( 2 欄位 屬性 3 )engine=myisam charset=utf8mb6;
示例代碼:
1 create table [if not exists] `用戶表1`( 2 id int not null auto_increment primary key comment '主鍵欄位', 3 username char(64) comment '用戶名' default 'root', 4 password varchar(64) comment '密碼' 5 )engine=myisam charset=utf8mb4; 6 7 create table [if not exists] `用戶表2`( 8 id int not null auto_increment primary key comment '主鍵欄位', 9 username char(64) comment '用戶名' default 'root', 10 password varchar(64) comment '密碼' 11 )engine=innodb charset=utf8mb4;
注意:方法體中的最后一句不能加上逗號,
引數說明:
1.null | not null 字符是否為空,null是默認值
2.default 默認值,在null的時候配合使用
3.auto_increment 自增長,配合primary key
4.primary key 主鍵
5.engine 表的存盤引擎(innodb | myisam),innodb是默認引擎
innodb 和 myisam的區別:
不同的引擎記錄資料的方式也不一樣,一個資料庫對應一個檔案夾,一張表對應一個檔案,
myisam表引擎由三個檔案組成:
1 demo1.frm -> 表的結構 2 demo1.MYD -> 保存資料的 3 demo1.MYI -> 保存索引的
innodb表引擎由兩個檔案組成:
1 demo1.frm -> 表結構+表索引 2 demo1.ibd -> 表中的資料
mysql中myisam的檔案管理方式比較松散,myisam可以隨便的剪切;innodb檔案管理方式比較嚴格,像是一座監獄,不能移動,
給指定的資料庫建表有兩種方法:
1 '''1.先選擇好庫 再建立表''' 2 create table `demo1`( 3 id int primary key auto_increment, 4 name char(32) 5 ); 6 7 '''2.指定庫的方式''' 8 create table firstdb.demo1( 9 id int primary key auto_increment, 10 name char(32) 11 );
表操作:
-- 1).顯示表 show tables; -- 2).顯示建表陳述句:show create table `表名`\G show create table `demo1`\G -- 3).洗掉表 drop table [if exists] `表1`,`表2`; -- 4).查看表結構:desc `表名` | describe `表名`; desc demo1;
5). 修改表
-- 1.修改表名 alter table `老名字` rename `新名字`; -- 2.修改欄位名:alter table `表名` change `原欄位名` `新欄位名` 欄位屬性; alter table `b` change `sex` `sexx` char(3); -- 3.修改欄位的屬性:alter table `表名` modify `欄位名` 欄位屬性; alter table `b` modify `age` int comment '年紀'; -- 4.修改欄位的位置 alter table `表名` change `原欄位名` `新欄位名` after `欄位名`; -- 5.修改表的引擎 alter table `表名` engine=innodb|myisam; -- 6.移動表到指定的資料庫 alter table `表名` rename 資料庫名.表名;
增加一個欄位:
-- 7.增加一個欄位:alter table `表名` add `欄位名` 欄位屬性; alter table `b` add `age` int comment '年齡'; -- 將手機號的位置添加在id的后面 alter table `b` add `mobile` char(11) after id; -- 將欄位添加在第一個位置 alter table `b` add `sex` bool first;
6). 復制表
注意:復制表是SQL陳述句,不是資料庫或表的操作陳述句
-- create table `新表名` select * from `要被復制的表名`; create table `a` select * from `b`;
特點:
1.把資料可以復制過來
2.不能復制主鍵
這里可以通過修改屬性的方法添加一個主鍵,
-- create table `新表名` like `要被復制的表名`; create table `c` like `b`;
特點:
1.它可以復制主鍵
2.但是它不能復制資料
-- 可以拷貝資料,將查詢的資料插入到新的表中 insert into c select * from b; -- 弊端:如果表中有百萬條資料,效率太慢
資料庫的資料操作
a. 插入資料
關鍵字:insert
-- 挑選可用欄位 insert into b(`sexx`,`id`,`mobile`,`name`,`age`) values('男',null,'123','jack',20),('男',null,'123','jack',20); -- 默認使用全部欄位,支持一次性插入多條 insert into b values('男',null,'123','jack',20),('男',null,'223','jack',70); -- 一次插入一條,mysql中數值型別可以自動轉變為字串 insert into b set `sexx`='男',`mobile`=12345678901,`name`='tom',`age`=23;
b.修改資料
關鍵字:update
/* 修改指定的一個條件,where以后的就是條件 */ update `b` set `mobile`=110 where id=1; /* 指定多個條件 */ update `b` set `mobile`=110,`age`=18 where id=2 and `name`='jack'; /* 作死性,不指定條件 */ update `b` set `mobile` = 110;
c.洗掉資料
關鍵字:delete
-- 洗掉單個資料 delete from `b` where id=3; -- 洗掉所有資料 delete from `b` where True; --刪出所有資料 delete from `b`;? /* id是唯一的,被洗掉以后,永久保留(資料恢復)?? 銷毀表,在按照原來的建表陳述句恢復表,資料全消失,id依然從1開始 */ -- 重置,在開發階段,經常用到 truncate `表名`;?
以上為mysql資料庫增刪改的簡單操作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/64435.html
標籤:MySQL
下一篇:MySQL資料庫升級
