一龟糕、總體內(nèi)容
- 1.1、數(shù)據(jù)存儲(chǔ)
- 1.2凑术、數(shù)據(jù)庫(kù)
- 1.3翩蘸、RDBMS
- 1.4、RDBMS 和 數(shù)據(jù)庫(kù)的關(guān)系
- 1.5淮逊、SQL
- 1.6催首、MySQL
- 1.7、通過(guò)navicat操作數(shù)據(jù)庫(kù)
- 1.8泄鹏、數(shù)據(jù)完整性(數(shù)據(jù)類型與約束)
- 1.9郎任、命令行腳本操作數(shù)據(jù)庫(kù) (重點(diǎn))
- 1.10、表中數(shù)據(jù)的增刪改查(curd)
- 1.11备籽、數(shù)據(jù)庫(kù)的備份與恢復(fù)
目標(biāo):熟練編寫數(shù)據(jù)的增刪改查相關(guān)的 SQL 語(yǔ)句
二舶治、數(shù)據(jù)存儲(chǔ)
-
2.1、以前是這樣記錄的:結(jié)繩記事
-
2.2车猬、也有這樣記錄的:甲骨文
-
2.3霉猛、后來(lái)開(kāi)始這樣記錄:圖書
2.4、傳統(tǒng)記錄數(shù)據(jù)的缺點(diǎn) : 不易保存珠闰、備份困難惜浅、查找不便,舉個(gè)例子:在有紙質(zhì)的時(shí)候伏嗜,你想要另存一份東西坛悉,你就需要再抄寫一份,耗時(shí)耗精力承绸。
-
2.5裸影、現(xiàn)代化手段----文件
- 使用簡(jiǎn)單,例如python中的open可以打開(kāi)文件军熏,用read/write對(duì)文件進(jìn)行讀寫轩猩,close關(guān)閉文件
- 對(duì)于數(shù)據(jù)容量較大的數(shù)據(jù),不能夠很好的滿足,而且性能較差
- 不易擴(kuò)展
-
2.5界轩、更好的 現(xiàn)代化手段----數(shù)據(jù)庫(kù)
- 持久化存儲(chǔ)
- 讀寫速度極高
- 保證數(shù)據(jù)的有效性
- 對(duì)程序支持性非常好画饥,容易擴(kuò)展
-
真實(shí)的倉(cāng)庫(kù)是這樣的:
-
我們看到的是這個(gè)樣子的(開(kāi)發(fā)者看到的樣子)
-
顧客看到的是這個(gè)樣子的:
三、數(shù)據(jù)庫(kù)
-
3.1浊猾、數(shù)據(jù)庫(kù)就是一種特殊的文件抖甘,通過(guò)特殊的處理,讀寫的方式和普通的文本文件是不一樣的葫慎,其中存儲(chǔ)著需要的數(shù)據(jù)
-
3.2、關(guān)系型數(shù)據(jù)庫(kù)核心元素
- 數(shù)據(jù)行(記錄)
- 數(shù)據(jù)列(字段)
- 數(shù)據(jù)表(數(shù)據(jù)行的集合)
- 數(shù)據(jù)庫(kù)(數(shù)據(jù)表的集合)
-
一個(gè)數(shù)據(jù)庫(kù)可以有很多的表偷办,每個(gè)表都有一個(gè)主鍵艰额,每個(gè)表都可以作為其他表的字段
四、RDBMS:(Relational Database Management System)通過(guò)表來(lái)表示關(guān)系型
查看數(shù)據(jù)庫(kù)排名
- 4.1椒涯、RDBMS 是一套軟件柄沮,將來(lái)用來(lái)管理數(shù)據(jù)庫(kù)的文件,關(guān)系型數(shù)據(jù)庫(kù)
- 4.2废岂、當(dāng)前主要使用兩種類型的數(shù)據(jù)庫(kù):關(guān)系型數(shù)據(jù)庫(kù)祖搓、非關(guān)系型數(shù)據(jù)庫(kù),本部分主要討論關(guān)系型數(shù)據(jù)庫(kù)湖苞,對(duì)于非關(guān)系型數(shù)據(jù)庫(kù)會(huì)在后面學(xué)習(xí)
- 4.3拯欧、所謂的關(guān)系型數(shù)據(jù)庫(kù)RDBMS,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù)财骨,借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)
- 4.4镐作、關(guān)系型數(shù)據(jù)庫(kù)的主要產(chǎn)品:
- oracle:在以前的大型項(xiàng)目中使用,銀行,電信等項(xiàng)目,做大型網(wǎng)站
- mysql:web時(shí)代使用最廣泛的關(guān)系型數(shù)據(jù)庫(kù)隆箩,一般用作網(wǎng)站该贾,存儲(chǔ)持久化的數(shù)據(jù),一般用作小型網(wǎng)站和中型網(wǎng)站足夠了
- ms sql server:在微軟的項(xiàng)目中使用
- sqlite:輕量級(jí)數(shù)據(jù)庫(kù)捌臊,主要應(yīng)用在移動(dòng)平臺(tái)
- redis 一般用來(lái)當(dāng)做緩存
- mongodb 用來(lái)存儲(chǔ)非關(guān)系型的數(shù)據(jù)結(jié)構(gòu)杨蛋,一般用作爬蟲,存儲(chǔ)沒(méi)有關(guān)系的數(shù)據(jù)
五娃属、RDBMS和數(shù)據(jù)庫(kù)的關(guān)系
六、SQL (Structured Query Language): 是一門特殊的語(yǔ)言,專門用來(lái)操作關(guān)系數(shù)據(jù)庫(kù)护姆,不區(qū)分大小寫
SQL是結(jié)構(gòu)化查詢語(yǔ)言矾端,是一種用來(lái)操作RDBMS的數(shù)據(jù)庫(kù)語(yǔ)言,當(dāng)前關(guān)系型數(shù)據(jù)庫(kù)都支持使用SQL語(yǔ)言進(jìn)行操作,也就是說(shuō)可以通過(guò) SQL 操作 oracle,sql server,mysql,sqlite 等等所有的關(guān)系型的數(shù)據(jù)庫(kù)
- 6.1卵皂、SQL語(yǔ)句主要分為:
- DQL:數(shù)據(jù)查詢語(yǔ)言秩铆,用于對(duì)數(shù)據(jù)進(jìn)行查詢,如select
- DML:數(shù)據(jù)操作語(yǔ)言,對(duì)數(shù)據(jù)進(jìn)行增加殴玛、修改捅膘、刪除,如insert滚粟、udpate、delete
- TPL:事務(wù)處理語(yǔ)言,對(duì)事務(wù)進(jìn)行處理厕妖,包括begin transaction橙喘、commit、rollback
- DCL:數(shù)據(jù)控制語(yǔ)言亚侠,進(jìn)行授權(quán)與權(quán)限回收曹体,如grant、revoke
- DDL:數(shù)據(jù)定義語(yǔ)言硝烂,進(jìn)行數(shù)據(jù)庫(kù)箕别、表的管理等,如create滞谢、drop
- CCL:指針控制語(yǔ)言串稀,通過(guò)控制指針完成表的操作,如declare cursor
- 6.2爹凹、對(duì)于web程序員來(lái)講厨诸,重點(diǎn)是數(shù)據(jù)的crud(增刪改查),必須熟練編寫DQL禾酱、DML微酬,能夠編寫DDL完成數(shù)據(jù)庫(kù)、表的操作颤陶,其它語(yǔ)言如TPL颗管、DCL、CCL了解即可
- 6.2滓走、學(xué)習(xí)要求
熟練掌握數(shù)據(jù)增刪改查相關(guān)的 SQL 語(yǔ)句編寫
-
在 Python代碼中操作數(shù)據(jù)就是通過(guò) SQL 語(yǔ)句來(lái)操作數(shù)據(jù)
# 創(chuàng)建Connection連接 conn = connect(host='localhost', port=3306, user='root', password='mysql', database='python1', charset='utf8') # 得Cursor對(duì)象 cs = conn.cursor() # 更新 # sql = 'update students set name="劉邦" where id=6' # 刪除 # sql = 'delete from students where id=6' # 執(zhí)行select語(yǔ)句垦江,并返回受影響的行數(shù):查詢一條學(xué)生數(shù)據(jù) sql = 'select id,name from students where id = 7' # sql = 'SELECT id,name FROM students WHERE id = 7' count=cs.execute(sql) # 打印受影響的行數(shù) print(count)
七、MySQL
-
7.1搅方、MySQL 簡(jiǎn)介
- 點(diǎn)擊查看MySQL官方網(wǎng)站
- MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)比吭,由瑞典MySQL AB公司開(kāi)發(fā),后來(lái)被Sun公司收購(gòu)姨涡,Sun公司后來(lái)又被Oracle公司收購(gòu)衩藤,目前屬于Oracle旗下產(chǎn)品
-
特點(diǎn)
- 使用C和C++編寫,并使用了多種編譯器進(jìn)行測(cè)試涛漂,保證源代碼的可移植性
- 支持多種操作系統(tǒng)赏表,如Linux检诗、Windows、AIX瓢剿、FreeBSD逢慌、HP-UX、MacOS间狂、NovellNetware攻泼、OpenBSD、OS/2 Wrap前标、Solaris等
- 為多種編程語(yǔ)言提供了API坠韩,如C、C++炼列、Python只搁、Java、Perl俭尖、PHP氢惋、Eiffel、Ruby等
- 支持多線程稽犁,充分利用CPU資源
- 優(yōu)化的SQL查詢算法焰望,有效地提高查詢速度
- 提供多語(yǔ)言支持,常見(jiàn)的編碼如GB2312已亥、BIG5熊赖、UTF8
- 提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑
- 提供用于管理虑椎、檢查震鹉、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具
- 大型的數(shù)據(jù)庫(kù)±可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)
- 支持多種存儲(chǔ)引擎
- MySQL 軟件采用了雙授權(quán)政策传趾,它分為社區(qū)版和商業(yè)版,由于其體積小泥技、速度快浆兰、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn)珊豹,一般中小型網(wǎng)站的開(kāi)發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)
- MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式
- Mysql是可以定制的簸呈,采用了GPL協(xié)議,你可以修改源碼來(lái)開(kāi)發(fā)自己的Mysql系統(tǒng)
- 在線DDL更改功能
- 復(fù)制全局事務(wù)標(biāo)識(shí)
- 復(fù)制無(wú)崩潰從機(jī)
- 復(fù)制多線程從機(jī)
開(kāi)源 免費(fèi) 不要錢 使用范圍廣,跨平臺(tái)支持性好,提供了多種語(yǔ)言調(diào)用的 API,是學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)的首選
-
7.2店茶、MySQL服務(wù)器下載以及安裝,服務(wù)器端一般以服務(wù)方式管理蜕便,名稱為mysql
-
我的是Mac電腦,mysql的官網(wǎng)地址 , 選擇一個(gè)進(jìn)行下載
-
查看是否安裝上mysql忽妒,打開(kāi)偏好設(shè)置玩裙,在安裝的過(guò)程中會(huì)讓輸入一個(gè)密碼,記好
-
也可以在終端輸入
mysql -v
查看是否安裝上,會(huì)報(bào)錯(cuò)段直,想輸入mysql吃溅,不報(bào)這個(gè)錯(cuò)咋辦? 起別名# 從命令行訪問(wèn)常用程序(如 mysql 和 mysqladmin) alias mysql=/usr/local/mysql/bin/mysql alias mysqladmin=/usr/local/mysql/bin/mysqladmin
輸入
mysql --help
即可看到mysql都具有哪些命令-
添加系統(tǒng)環(huán)境變量
cd ~ vim .bash_profile # 添加以下代碼 export PATH=${PATH}:/usr/local/mysql/bin # 退出后 source .bash_profile # 如果不進(jìn)行以下操作的話鸯檬,每打開(kāi)一個(gè)終端决侈,都要再輸一遍 source .bash_profile vim .zshrc # 添加以下代碼 export PATH=${PATH}:/usr/local/mysql/bin # 退出后 source .zshrc
-
修改密碼
mysqladmin -u root -p password 12345678 # 12345678是我的新密碼,自行修改成自己想要設(shè)置的密碼 # 按回車后, 提示輸入密碼,此時(shí)讓輸入的密碼不是你電腦的密碼,而是數(shù)據(jù)庫(kù)的密碼喧务。
-
mysql -u root -p
回車之后輸入密碼赖歌,進(jìn)入MySQL的運(yùn)行框,可看下圖
-
show databases;
查看都有哪些庫(kù)功茴;;
不可少
輸入
exit
或quit
或\q
庐冯,按下回車退出, 或者control+D
退出-
另外 啟動(dòng)/停止/重啟 MySQL服務(wù)
啟動(dòng)MySQL服務(wù) sudo /usr/local/mysql/support-files/mysql.server start 停止MySQL服務(wù) sudo /usr/local/mysql/support-files/mysql.server stop 重啟MySQL服務(wù) sudo /usr/local/mysql/support-files/mysql.server restart
提示:上面的步驟都是我在本地搞的坎穿,這個(gè)博客里面是我在服務(wù)器安裝mysql的參考 在阿里云的服務(wù)器linux下安裝mysql和卸載mysql展父,在7.3里面添加其他用戶也是我在阿里云服務(wù)器搞的
-
-
7.3、MySQL添加其他用戶
-
(1)玲昧、找到my.cnf配置文件: 你的MySQL有沒(méi)有配置栖茉,如果沒(méi)有配置的話,配置下:my.cnf 配置文件
如果/etc/
目錄下沒(méi)有my.cnf
配置文件孵延,請(qǐng)到/usr/share/mysql/
下找到*.cnf
文件吕漂,拷貝其中一個(gè)到/etc/
并改名為my.cnf
)中。命令如下:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
提示:我是報(bào)錯(cuò):mysql創(chuàng)建用戶報(bào)錯(cuò)ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value,原因是mysql默認(rèn)配置嚴(yán)格模式尘应,該模式禁止通過(guò)insert的方式直接修改mysql庫(kù)中的user表進(jìn)行添加新用戶惶凝。
-
(2)、
vim /etc/my.cnf
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
修改成:
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然后重啟mysql服務(wù)
service mysql restart
-
(3)菩收、創(chuàng)建用戶梨睁,創(chuàng)建之前先輸入一下:
use mysql;
mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("456123"));
這樣就創(chuàng)建了一個(gè)名為:test 密碼為:1234 的用戶。
注意:此處的"localhost"娜饵,是指該用戶只能在本地登錄坡贺,不能在另外一臺(tái)機(jī)器上遠(yuǎn)程登錄。如果想遠(yuǎn)程登錄的話箱舞,將"localhost"
改為"%"
遍坟,表示在任何一臺(tái)電腦上都可以登錄。也可以指定某臺(tái)機(jī)器可以遠(yuǎn)程登錄晴股。 -
(4)愿伴、登錄MYSQL(有ROOT權(quán)限),這里以ROOT身份登錄
> mysql -u root -p
-
(5)电湘、為用戶創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)(test)隔节,如果數(shù)據(jù)庫(kù)存在就不需要再建了鹅经,直接進(jìn)行第六步
mysql>create database test;
-
(6)、授權(quán)test1用戶擁有test數(shù)據(jù)庫(kù)的所有權(quán)限(某個(gè)數(shù)據(jù)庫(kù)的所有權(quán)限)
mysql>grant all privileges on test.* to test1@localhost identified by '456123'; mysql>flush privileges;//刷新系統(tǒng)權(quán)限表
-
(7)怎诫、如果想指定部分權(quán)限給一用戶瘾晃,可以這樣來(lái)寫
mysql>grant select,update on test.* to test1@localhost identified by '456123';
-
(8)、授權(quán)test1用戶擁有所有數(shù)據(jù)庫(kù)的某些權(quán)限
mysql>grant select,delete,update,create,drop on *.* to test1@"%" identified by "456123";
-
(9)幻妓、參考資料 MySQL添加用戶蹦误、刪除用戶與授權(quán)
提示:
- 查看有所有的庫(kù):
show databases;
- 建立數(shù)據(jù)庫(kù) :
create database testTable;
- 查看版本:
select version();
- 顯示當(dāng)前時(shí)間:
select now();
- 查看有所有的庫(kù):
-
-
7.4、MySQL客戶端安裝以及使用,客戶端為開(kāi)發(fā)人員與dba使用肉津,通過(guò)socket方式與服務(wù)端通信强胰,常用的有navicat、命令行 mysql
-
圖形化界面客戶端
navicat
, 可以到Navicat官網(wǎng)下載
-
問(wèn)題一:中文亂碼
解決辦法:打開(kāi)start_navicat文件將export LANG="en_US.UTF-8"改為export LANG="zh_CN.UTF-8"
-
問(wèn)題二:試用期
解決辦法:刪除用戶目錄下的.navicat64目錄cd ~ rm -r .navicat64
-
最基本的連接命令如下妹沙,輸入后回車
mysql -u root -p
-
連接 阿里云 mysql 數(shù)據(jù)庫(kù)
-
解決阿里云MySQL遠(yuǎn)程連接不上的問(wèn)題:
step1:
1偶洋、修改user表:MySQL>update user set host = '%' where user = 'root';
2、授權(quán)主機(jī)訪問(wèn):MySQL>GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;
3距糖、刷新權(quán)限:MySQL>FLUSH PRIVILEGES;
4涡真、退出:MySQL>EXIT;-
step2:查看端口監(jiān)聽(tīng)狀態(tài),netstat -an|grep 3306肾筐,如果顯示不是如下圖所示哆料,則需要修改配置文件。找到my.cnf,一般在/etc/mysql/下面吗铐,具體情況根據(jù)實(shí)際而定东亦。注釋掉其中的bind-address屬性。如下
再次-an|grep 3306
,如下級(jí)OK:
-
step3:開(kāi)啟阿里云安全組端口策略
進(jìn)入控制臺(tái)唬渗,網(wǎng)絡(luò)和安全->安全組->配置規(guī)則典阵,將MySQL監(jiān)聽(tīng)端口開(kāi)放即可,如下:
step4:再次測(cè)試就是上面圖中連接成功的狀態(tài)
-
連接后的效果(這里我用了一個(gè)root用戶和四個(gè)測(cè)試用戶)
-
八镊逝、通過(guò)navicat操作數(shù)據(jù)庫(kù)
8.1壮啊、在
7.3
里面,我們已經(jīng)安裝好navicat
,那么我們使用一下它撑蒜。-
8.2歹啼、建庫(kù)
-
選中一個(gè)庫(kù),右擊建庫(kù)
-
選擇 utf8 作為字符集
-
選擇普通的默認(rèn)排序
-
-
-
8.3狸眼、建表 和 在表中建字段
九、數(shù)據(jù)完整性
9.1浴滴、一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)完整的業(yè)務(wù)單元拓萌,可以包含多張表,數(shù)據(jù)被存儲(chǔ)在表中升略;在表中為了更加準(zhǔn)確的存儲(chǔ)數(shù)據(jù)微王,保證數(shù)據(jù)的正確有效屡限,可以在創(chuàng)建表的時(shí)候,為表添加一些強(qiáng)制性的驗(yàn)證炕倘,包括數(shù)據(jù)字段的類型囚霸、約束。
-
9.2激才、數(shù)據(jù)類型
- 可以通過(guò)查看幫助文檔查閱所有支持的數(shù)據(jù)類型
- 使用數(shù)據(jù)類型的原則是:夠用就行,盡量使用取值范圍小的额嘿,而不用大的瘸恼,這樣可以更多的節(jié)省存儲(chǔ)空間
- 常用數(shù)據(jù)類型如下:
- 整數(shù):int,bit(更小的類型)
- 小數(shù):decimal
- 字符串:varchar,char
- 日期時(shí)間: date, time, datetime
- 枚舉類型(enum)
- 特別說(shuō)明的類型如下:
- decimal表示浮點(diǎn)數(shù)册养,如decimal(5,2)表示共存5位數(shù)东帅,小數(shù)占2位
- char表示固定長(zhǎng)度的字符串,如char(3)球拦,如果填充'ab'時(shí)會(huì)補(bǔ)一個(gè)空格為'ab '
- varchar表示可變長(zhǎng)度的字符串靠闭,如varchar(3),填充'ab'時(shí)就會(huì)存儲(chǔ)'ab'
- 字符串text表示存儲(chǔ)大文本坎炼,當(dāng)字符大于4000時(shí)推薦使用
- 對(duì)于圖片愧膀、音頻、視頻等文件谣光,不存儲(chǔ)在數(shù)據(jù)庫(kù)中檩淋,而是上傳到某個(gè)服務(wù)器上,然后在表中存儲(chǔ)這個(gè)文件的保存路徑(我一般他視頻或者圖片放到七牛云萄金,在自己的服務(wù)器存儲(chǔ)視頻或者圖片的鏈接)
- 更全的數(shù)據(jù)類型可以參考:東哥推薦的博客
-
9.3蟀悦、約束
- 主鍵primary key:物理上存儲(chǔ)的順序
- 非空not null:此字段不允許填寫空值
- 惟一unique:此字段的值不允許重復(fù)
- 默認(rèn)default:當(dāng)不填寫此值時(shí)會(huì)使用默認(rèn)值,如果填寫時(shí)以填寫為準(zhǔn)
- 外鍵foreign key:對(duì)關(guān)系字段進(jìn)行約束氧敢,當(dāng)為關(guān)系字段填寫值時(shí)日戈,會(huì)到關(guān)聯(lián)的表中查詢此值是否存在,如果存在則填寫成功孙乖,如果不存在則填寫失敗并拋出異常浙炼;提示:在自己的表中導(dǎo)入的其他表的主鍵是外鍵
- 說(shuō)明:雖然外鍵約束可以保證數(shù)據(jù)的有效性,但是在進(jìn)行數(shù)據(jù)的crud(增加唯袄、修改鼓拧、刪除、查詢)時(shí)越妈,都會(huì)降低數(shù)據(jù)庫(kù)的性能季俩,所以不推薦使用,那么數(shù)據(jù)的有效性怎么保證呢梅掠?答:可以在邏輯層進(jìn)行控制酌住;
-
9.4店归、類型表
-
數(shù)值類型(常用)
類型 字節(jié)大小 有符號(hào)范圍(Signed) 無(wú)符號(hào)范圍(Unsigned) TINYINT
1 -128 ~ 127 0 ~ 255 SMALLINT
2 -32768 ~ 32767 0 ~ 65535 MEDIUMINT
3 -8388608 ~ 8388607 0 ~ 16777215 INT/INTEGER
4 -2147483648 ~2147483647 0 ~ 4294967295 BIGINT
8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615 -
字符串
類型 字節(jié)大小 示例 CHAR
0-255
類型: char(3)
輸入'ab'
, 實(shí)際存儲(chǔ)為'ab '
, 輸入'abcd'
實(shí)際存儲(chǔ)為'abc'
VARCHAR
0-255
類型: varchar(3)
輸'ab'
,實(shí)際存儲(chǔ)為'ab'
, 輸入'abcd'
,實(shí)際存儲(chǔ)為'abc'
TEXT
0-65535
大文本 -
日期時(shí)間類型
類型 字節(jié)大小 示例 DATE
4 '2020-01-01'
TIME
3 '12:29:59'
DATETIME
8 '2020-01-01 12:29:59'
YEAR
1 '2017'
TIMESTAMP
4 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC
-
十、命令行腳本操作數(shù)據(jù)庫(kù)
-
10.1酪我、鏈接數(shù)據(jù)庫(kù)
-
鏈接
-
第一種:需要輸入密碼
mysql -uroot -p 輸入密碼進(jìn)入
-
第二種:直接跟上密碼(-p與密碼之間沒(méi)有間隔)
mysql -u root -p密碼
-
-
鏈接成功
-
退出登錄
quit 和 exit 或 ctrl+d
-
登錄成功后挡鞍,輸入如下命令查看效果
查看版本:select version(); 顯示當(dāng)前時(shí)間:select now();
-
修改輸入提示符
prompt python>
-
\D
完整日期 -
\U
使用用戶
-
-
-
10.2时呀、數(shù)據(jù)庫(kù)
-
查看所有數(shù)據(jù)庫(kù)
show databases;
-
使用數(shù)據(jù)庫(kù)
use 數(shù)據(jù)庫(kù)名;
-
查看當(dāng)前使用的數(shù)據(jù)庫(kù)
select database();
-
創(chuàng)建數(shù)據(jù)庫(kù)(查看創(chuàng)建方式:
show create table classes;
)create database 數(shù)據(jù)庫(kù)名 charset=utf8;
例如:
testBase
是數(shù)據(jù)庫(kù)名字create database testBase charset=utf8;
-
刪除數(shù)據(jù)庫(kù)
drop database 數(shù)據(jù)庫(kù)名;
例如:
testBase
是上面創(chuàng)建的數(shù)據(jù)庫(kù)名字drop database testBase;
-
-
10.3、數(shù)據(jù)表
-
查看當(dāng)前數(shù)據(jù)庫(kù)中所有表
show tables;
-
查看表結(jié)構(gòu)
desc 表名;
-
創(chuàng)建表,
auto_increment
表示自動(dòng)增長(zhǎng)CREATE TABLE table_name( column1 datatype contrai, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY(one or more columns) );
例:創(chuàng)建班級(jí)表
create table classes( id int unsigned auto_increment primary key not null, name varchar(10) );
例:創(chuàng)建學(xué)生表(
primary key auto_increment not null
:設(shè)為主鍵、自增長(zhǎng)镀脂、不為空) 約束的順序隨便寫,最后一個(gè)字段不要 逗號(hào)沈跨,在定義類型的時(shí)候篮奄,后面加上unsigned
表示無(wú)符號(hào),gender enum('男','女','人妖','保密') default "保密"
,可以為gender設(shè)置默認(rèn)值 "保密"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 );
-
給表添加數(shù)據(jù)
insert into students values(0,"馬冶",26,172.33,"男"穆趴,1) 查詢表內(nèi)容 select * from students;
-
修改表-添加字段
alter table 表名 add 列名 類型;
例如:給students表添加生日字段
alter table students add birthday datetime;
-
修改表-修改字段:重命名版(字段名字脸爱、類型、及約束 都可以改變)
alter table 表名 change 原名 新名 類型及約束;
例如:把學(xué)生的 birthday 改為 birth 類型還是datetime not null未妹,不能為空
alter table students change birthday birth datetime not null;
-
修改表-修改字段:不重命名版(字段名字不變簿废,類型以及約束可以改變)
alter table 表名 modify 列名 類型及約束;
例如:
alter table students modify birth date not null;
-
修改表-刪除字段
alter table 表名 drop 列名;
例如:刪除表中 gender(性別) 字段
alter table students drop gender;
-
查看表的創(chuàng)建語(yǔ)句
show create table 表名;
例如:
show create table classes;
-
刪除表
drop table 表名;
例如:刪除表
drop table students;
-
十一络它、表中數(shù)據(jù)的增刪改查(curd)
curd的解釋: 代表 創(chuàng)建(Create)族檬、更新(Update)、讀然痢(Retrieve)和 刪除(Delete)
-
11.1导梆、準(zhǔn)備
-
(1)、創(chuàng)建一個(gè)班級(jí)庫(kù):
ClassDataBase
create database ClassDataBase charset=utf8;
-
(2)迂烁、在 班級(jí)庫(kù):
ClassDataBase
里面創(chuàng)建一個(gè)學(xué)生表studentTable
看尼,里面創(chuàng)建 4 個(gè)字段:id、name盟步、age藏斩、gender,提示:gender 是枚舉類型create table studentTable( id int unsigned primary key auto_increment not null, name varchar(20) default '', age tinyint unsigned default 0, gender enum('男','女','人妖','保密') default '保密' );
-
-
11.2兆览、增 加數(shù)據(jù)
-
全列插入:有幾個(gè)字段插入幾個(gè),主鍵字段 可以用
0
塞关、null
抬探、default
來(lái)占位,枚舉可以用 1,2小压,3线梗,4來(lái)代替,如下面的例子中 "男" 可以用1
來(lái)代替,看上圖的枚舉怠益,男是第一位仪搔,枚舉有幾個(gè)最大是幾,上面的gender是四個(gè)性別蜻牢,最大是4烤咧,超過(guò)4報(bào)錯(cuò)insert into 表名 values(value1,value2,value3,.....);
例如:-- 向studentTable表插入 一個(gè)學(xué)生信息(studentTable是表名)
insert into studentTable values(0, "小王", 26, "男");
-
部分插入
insert into 表名(列1名,列2名,...) values(值1,值2,...)
例如:枚舉選的4 ,所以是 保密
insert into studentTable (name, gender) values ("小紅", 4);
-
多行插入
insert into studentTable (name, gender) values ("小李", 3),("小明", 1); insert into studentTable values(default, "小飛", 20, "女"), (default, "小杜", 20, "男");
-
-
11.3抢呆、刪 除數(shù)據(jù)
-
物理刪除(不要去操作):
delete from 表名 where 條件;
delete from studentTable; -- 整個(gè)數(shù)據(jù)表中的所有數(shù)據(jù)全部刪除 delete from studentTable where name="小杜";
-
邏輯刪除:用一個(gè)字段來(lái)表示 這條信息是否已經(jīng)不能再使用了煮嫌,給
studentTable
表添加一個(gè)is_delete
字段bit 類型
, bit里面存儲(chǔ)的是 0 與 1。
例如:給表studentTable增加bit字段镀娶,默認(rèn)為 0 ,代表沒(méi)有刪除alter table studentTable add is_delete bit default 0;
根據(jù)小飛的id揪罕,模擬邏輯刪除 小飛(也就是更新數(shù)據(jù))
update studentTable set is_delete=1 where id=5;
-
-
11.4梯码、改 變數(shù)據(jù)(修改數(shù)據(jù))
update 表名 set 列1=值1,列2=值2... where 條件;
例如:update studentTable set gender=1; -- 全部都改 update studentTable set gender=2 where name="小王"; -- 只要name是小王的 全部的修改 update studentTable set gender=1 where id=3; -- 只要id為3的 進(jìn)行修改 update studentTable set age=22, gender=1 where id=3; -- 只要id為3的 進(jìn)行修改
-
11.5、查 詢數(shù)據(jù)
-
查詢所有列
select * from 表名;
例如:
select * from studentTable;
-
一定條件下查詢
select * from 表名 where 條件; -- 查詢 條件 下的所有信息
例如:
select * from studentTable where name="小王"; -- 查詢 name為 小王 的所有信息 select * from studentTable where id>2; -- 查詢 id > 2 的所有信息
-
查詢指定列
select 列1,列2,... from 表名;
例如:
select name,gender from studentTable;
-
可以 使用 as 為 列或表 指定別名
select 字段[as 別名] , 字段[as 別名] from 數(shù)據(jù)表 where ....;
例如:
select name as 姓名,gender as 性別 from studentTable;
-
查詢 字段的順序(哪個(gè)在前面就先顯示誰(shuí))
select id as 序號(hào), gender as 性別, name as 姓名 from studentTable;
-
十二好啰、數(shù)據(jù)庫(kù)的備份與恢復(fù) 參考博客
-
12.1轩娶、備份
運(yùn)行mysqldump命令 (下面python.sql
是新的數(shù)據(jù)庫(kù) )mysqldump –u root –p 數(shù)據(jù)庫(kù)名 > fileName.sql; # 按提示輸入mysql的密碼
提示:
mysqldump –u root –p 數(shù)據(jù)庫(kù)名 > fileName.sql;
里面的python.sql
你可以指定路徑,如果不指定就是備份到當(dāng)前目錄 -
12.2框往、恢復(fù)
連接mysql鳄抒,創(chuàng)建新的數(shù)據(jù)庫(kù)mysql -u root -p密碼 create database 數(shù)據(jù)庫(kù)名 charset=utf8; quit
退出連接,執(zhí)行如下命令
mysql -u root –p 上面創(chuàng)建的新數(shù)據(jù)庫(kù)名 < fileName.sql # 根據(jù)提示輸入mysql密碼
提示:fileName.sql 會(huì)自動(dòng)回到當(dāng)初把它備份出來(lái)的地方椰弊,名字是你新起的名字