mysql數據庫的基礎(一)

數據庫
數據庫是數據管理的軟件,有mysql,sqlite,orancle等,我們使用mysql。
https://www.liaoxuefeng.com/wiki/1177760294764384
mysql數據庫的概念
mysql數據庫分爲數據庫的存儲系統和數據庫的關係系統,有存儲數據和管理數據的功能。他是用一種c/s架構的軟件
linux下mysql數據庫的安裝
可以使用rpm安裝
也可以使用源碼安裝
也可以使用一鍵安裝包
https://blog.51cto.com/5493817/2491722
我們可以通過mysql的客戶端操作我們的數據比如:
mysql命令 mysql -h主機 -u用戶名稱 -p密碼
navcate 一個圖形化的工具。
phpmyadmin。使用php寫的一個軟件。
DML:數據庫管理語言(管理數據)
DDL:數據庫定義語言(建表建庫,觸發器)
DCL:數據庫控制語言 (權限管理,創建管理用戶)
mysql的庫操作
新建數據庫
create database 庫名
查看數據庫
看有那些數據庫
show databases;整型
show create database 庫名
進入數據庫
use 名稱
刪除數據庫
drop database 庫名
mysql的表操作
查看錶
查看有那些表
show tables;
查看錶的詳細信息
desc 表名
show create table 表名
表的創建
create table 表名(
字段1 類型(長度) 約束條件
字段2 類型(長度) 約束條件
.
.
)engine=存儲引擎 charset=字符集;
字段名稱
字段名稱最好不要使用關鍵字,如果使用的話使用··引起來
列類型
整型
mysql數據庫的基礎(一)
浮點型
float:浮點列
mysql數據庫的基礎(一)
float(M,D)M:代表的是不包含小數點的總位數,D代表的是小數點之後的位數,比如float(5,2) 能存儲數字的範圍是-999.99到999.99,這個M和D可以不設置,如果不設置name他的範圍就在float類型規定之間。
double:浮點列
mysql數據庫的基礎(一)
double(M,D):和float是一樣的,只是存儲的範圍比較大
decimal(M,D):定點列,使用float和double會產生精度損失,具體原因,是因爲decimal是將整數部分和小數部分分別存儲的。
mysql解決精度丟失可以使用decimal類型
php解決精度丟失:https://blog.csdn.net/q0126a/article/details/84823913
不論php還是mysql儘量避免使用浮點型數據類型。
字符型
char:定長,最多存255個字節,char(10),最多隻能存儲10個字符,如果只存一個字符,它也是佔10個字節的長度,如果沒有存儲到10個長度,剩餘的空間會用空格填充,取出來時在去除空格,這意味着如果數據的右側本身有空格,在取出時會被刪除。利用率小於等於100%,
varchar:變長,最多存65535個字符,varchar(10)最多隻能存儲10個字符,如果只存一個字符,他只佔一個字節,實際利用率:字符數/字符算+2,2是存儲字符的長度的。
char類型是定長,索引硬盤尋址的速度較快,varchar是一個變長,在存儲數據時要把它的長度也存起來,所以磁盤尋址還要先取它的長度,所以速度較char會慢。一般字符長度短我們可以使用char類型,如果字符長度比較常可以使用varchar。
一個漢字也佔一個字節。
text:可以存6萬多個字
mediumText:能存儲的更大
longText:能存儲的更大。
enum:枚舉類型,比如枚舉幾個值,我們存值只能存枚舉的幾個值。但是現在用的很少,我們可以使用tinyint去代替。
時間型
year:95/1995 這種格式,存值範圍1901-2155
插入數據時我們可以簡寫年的後兩位比如:1995,我們寫成95不推薦這樣,因爲:
00-69 他會自動+2000
70-99 他會自動+1900
所以我們寫69他會存成2069。
date:格式1990-01-01 範圍 1000-01-01至9999-12-31。
time:格式13:12:12 範圍 -838:59:59-838:59:59
datetime:格式1990-01-01 12:00:00 ,範圍:1000-01-01 00:00:00到9999-12-31 23:59:59
timestamp:時間戳,從1970-01-01 00:00:00 到現在的秒數。
一般存儲時間用int類型無符號存儲時間戳
無符號(unsigned):
一般用於整型和浮點型,我們存儲整型或浮點型時會拿一個字節存儲數字的正負符號。如果設置的unsigned,我們只能插入整數,同時能插入最大的數字增到1倍。
類型長度M
如果是整型的話,設置類型長度如果不和zerofull配合使用,則設置時毫無意義,這裏容易有個誤區,比如int(5) 只能添加99999一下的數字,這裏是個誤區,即使這樣設置,決定他能存儲多大的值看的是該類型佔得字節長度,和類型長度無關,類型長度只是決定着能填充到位數。
零填充(zerofull)
一般用於讓編號等寬比如學好是1我們可以使用零填充成00001,零填充必須要和類型的長度配合纔有意義,比如tinyint(5),我們的數字爲23經過零填充後成00023,如果設置了零填充的話,就決定了該列是unsigned的。
是否爲空
如果可以爲空設爲null
如果不能讓它爲空設爲not null。
因爲null查詢不方便,並且null使用索引效率不高,所以建議我們可以讓字段都設爲not null,然後配合default默認值使用,比如對於一些字符型我們可以設爲 not null default ‘’。
主鍵
primary key 爲了使每一行都不重複,能夠區分每一行的值,我們可以爲一個表設置一個主鍵。主鍵都是不重複的,不重複的不一定是主鍵。爲了更好更方便的管理主鍵,我們的主鍵往往會配合自增長auto_increment 一起使用,這樣我們在不插入主鍵時,他會在原來最大值的基礎上增長個1(當然主鍵不一定都是自增長的,但是自增長都要依賴於索引或者key,每一張表只能有一個自增長)
默認值
使用default可以給字段設置一個默認值,如果不給這個字段添加一個值,這個字段可以使用默認值。
唯一約束(unique)
對當前表的某個字段添加一個唯一約束,這個表中的這個字段不允許出現重複值,其實就是唯一索引。
外鍵約束
只有Innodb引擎支持外鍵。
比如有一張班級表和一個學生表,學生表中應該有一個字段是class_id,這個class_id的數據取值應該是班級表中班級主鍵class_id出現的,我們可以在學生表的class_id字段上加上一個外鍵約束,這樣如果往學生表插入一個班級表中class_id沒有出現的數據會報錯,學生表中的class_id我們稱之爲班級表的外鍵。增加了外鍵約束可以保持數據的一致性。
定義外鍵時除了插入數值有約束性外,我們在修改和刪除時也可以設置聯動操作,我們可以使用sql語句添加外鍵,我們也可以使用navcate添加外鍵。
聯動操作有四個動作,如下:
CASCADE:父表delete、update的時候,子表會delete、update掉關聯記錄;
SET NULL:父表delete、update的時候,子表會將關聯記錄的外鍵字段所在列設爲null,所以注意在設計子表時外鍵不能設爲not null;
RESTRICT:如果想要刪除父表的記錄時,而在子表中有關聯該父表的記錄,則不允許刪除父表中的記錄;
NO ACTION:同 RESTRICT,也是首先先檢查外鍵;
原文鏈接:https://blog.csdn.net/yajing8/java/article/details/73014004
注意:外鍵一般很少使用,因爲只有innodb引擎可以使用外鍵,外鍵會導致數據庫操作變慢,一般項目中我們不設置外鍵約束,我們可以使用程序來控制我們的代碼。已達到外鍵的作用。

    表字段的添加
    alter table 表  add  字段  類型  約束條件
    表字段的修改
    alter table 表  modify  字段 類型 約束條件
    alter  table  表  change  舊字段  新字段  類型約束條件
    表字段的刪除
    alter  table  表  drop 字段

mysql數據插入,刪除,修改
插入數據
插入單條數據
insert into 表(字段1,字段2,....) values('value1','value2',...);
如果插入的字段數和表中的字段數量一致的話可以把字段省略掉
insert into 表 values('value1','value2',...)
插入多條數據
insert into 表(字段1,字段2,....) values('value1','value2',...),('value1','value2',...),('value1','value2',...);
字段和值一定要一一對應,字符串必須加單引號
蠕蟲複製
insert into 表(字段1,字段2) select 字段1,字段2 from 表
刪除數據
delete from 表 where 條件 這個條件和查詢的條件一樣
truncate 表 將表進行初始化操作
修改數據
update 表 set 字段1=‘值1’ ,字段2=‘值2’ where 條件 條件和查詢的條件一樣。
刪除和修改不加條件就是作用在所有的行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章