數據庫
我的上一篇Blog簡單列舉了幾種查詢的方式方法等,寫的很沒有思路我覺得我需要重新梳理一下思路跟大家討論下數據庫
數據庫的操作歸根結底是增刪改查的操作
那麼再操作增刪改查之前肯定的是我們需要有一個數據庫供我們去操作,而且有相關的環境。我最早的那篇blog有關於mysql的軟件下載並且沒有積分要求需要的朋友可以移步https://blog.csdn.net/weixin_41950282/article/details/82083597
對於數據庫的創建,依照個人喜好就好,可以用Navicat等可視化軟件去點點點的進行創建,也可以在shell命令行模式下進行
例如你要建一個school庫 庫裏有students表 classes表score表等
打開你的命令行窗口進入到mysql中
然後create database school; 新建你的數據庫
這時你可以show databases;查看你的數據庫有哪些
這時你的數據庫是建好了的但是庫中沒有表單以及任何數據,你需要按照需求去新建一些表單並向其中添加某些數據首先你需要新建你的表單
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','中性','保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
--這裏新建了你的學生表單,
-- id 一般爲主鍵 不可重複不可爲空的一個自增量
-- name 學生的姓名,這裏用到的是varchar類型
-- age 年齡,因爲一般不會超過200歲,所以選擇較短的tinyint類型
-- height 身高一般是不會超過5位數(包括兩位小數的情況下)
-- gender 性別,男女或者保密或者像某主持人一樣的這種使用enum,枚舉類型,但更多的時候會選擇使用tinyint然後用某一個數字代表一個選擇項,這相對於以後會增加更多的可擴展性,畢竟改代碼要比改數據庫簡單的多,這裏使用enum也僅僅是爲了爲大家展示下數據庫可用的數據類型
-- cls_id 這個爲班級的id,同時也是students表中的主鍵
-- 例如我要記錄學生的信息及考試成績,
--+----+--------+---------+-------+
--| id | name | subject | score |
--+----+--------+---------+-------+
--| 1 | 張三 | 語文 | 90 |
--| 2 | 張三 | 數學 | 80 |
--| 3 | 張三 | 英語 | 60 |
--| 4 | 李四 | 語文 | 75 |
--| 5 | 李四 | 數學 | 85 |
--| 6 | 李四 | 英語 | 45 |
--| 7 | 王五 | 語文 | 99 |
--| 8 | 王五 | 數學 | 55 |
--| 9 | 王五 | 英語 | 59 |
--| 10 | 趙六 | 語文 | 88 |
--| 11 | 趙六 | 數學 | 88 |
--| 12 | 趙六 | 英語 | 70 |
--| 13 | 田七 | 語文 | 77 |
--| 14 | 田七 | 數學 | 100 |
--| 15 | 田七 | 英語 | 90 |
--+----+--------+---------+-------+
--這個表中記錄的學生的姓名就太多次的重複了,我們可以把學生的成績單獨形成一張表,然後再把成績和該生用外鍵進行關聯那麼表中的冗餘數據就會減少很多。
--is_delet 中記錄該條記錄是否刪除用0或者1來表示,這樣我們就可以對該條數據進行邏輯上的刪除(在查詢時略過該數據,避免物理刪除後想要恢復數據時尷尬)
表建好之後需要我們向表中插入數據,這時會用到增刪改查中的增
insert into
- 說明:主鍵列是自動增長,但是在全列插入時需要佔位,通常使用0或者 default 或者 null 來佔位,插入成功後以實際數據爲準
- 全列插入:值的順序與表中字段的順序對應
insert into 表名 values(...)
例:
insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');
- 部分列插入:值的順序與給出的列順序對應
insert into 表名(列1,...) values(值1,...)
例:
insert into students(name,hometown,birthday) values('黃蓉','桃花島','2016-3-2');
- 上面的語句一次可以向表中插入一行數據,還可以一次性插入多行數據,這樣可以減少與數據庫的通信
- 全列多行插入:值的順序與給出的列順序對應
insert into 表名 values(...),(...)...;
例:
insert into classes values(0,'python1'),(0,'python2');
insert into 表名(列1,...) values(值1,...),(值1,...)...;
例:
insert into students(name) values('楊康'),('楊過'),('小龍女');
說完增我們來聊一聊數據庫中的刪
drop
drop在英文中有放棄,停止的意思,那當我們要放棄這個數據庫或者這個數據庫中的某一個表時可以用到drop drop關鍵字可以摧毀數據庫或者表並不僅僅是清除數據那麼簡單,其表結構也會被刪除
drop table 表名;
drop database 庫名;
請記得在摧毀前備份數據庫,同時不建議使用物理刪除這麼暴力的方式清除數據,除非這個數據對你對別人都沒什麼意義或者作用
清除數據但是不清除表結構的話我們還可以用
truncate table 表名;
如果要刪除的不是全部而是一部分數據的話,我們可以使用
delete
delete from 表名 where 條件
例:
delete from students where id=5;
刪除我們聊的差不多了,接下來我們聊聊修改
同時還有一部分修改和刪除連接在一起的部分,邏輯刪除
邏輯刪除,本質就是修改操作
update students set is_delete=1 where id=1;
修改使用的就是update,我們可以理解爲修改或者說對舊的數據進行更新
格式: update 表名 set 列1=值1,列2=值2… where 條件
update 表名 set 列1=值1,列2=值2... where 條件
例:
update students set gender=0,hometown='北京' where id=5;
這些目前就是我對數據庫進行的增刪改的一般性操作,歡迎在sql語句中游了很遠的大佬對我進行指正,萬分感謝!