MySql資料庫筆記(功能齊全)

lkm_0617發表於2020-10-06
###資料庫
####資料庫簡介
- 通過IO流自己對資料進行操作需要寫
- 大量的程式碼,而且不能保證程式的執行效率,IT行業中凡是很常用實現又很麻煩的業務,通常會有完整的解決方案,資料庫軟體就是對資料增刪改查的解決方案,程式設計師只需要學習如何使用資料庫軟體即可。
- 什麼是DBMS: DataBase資料庫Management管理System系統(資料庫管理軟體),常見的DBMS: MySQL、Oracle、DB2、SQLserver等
####DBMS介紹:
1. MySQL: Oracle公司產品, 08年被SUN公司收購,09年Sun公司被Oracle收購,擔心MySQL被閉源,原MYSQL創始人們離開Oracle建立了MariaDB,市場佔有率排名第一。
2. Oracle: Oracle公司產品,市場佔有率排名第二,效能最高,價格最貴,老闆拉力.艾莉森。
3. SQLServer: 微軟公司產品,市場佔有率排名第三,主要應用在微軟的整套解決方案中
	整套解決方案: 開發語言+作業系統+web服務軟體+資料庫軟體
4. DB2: IBM公司產品,一般應用在IBM整套解決方案中
5. SQLite: 輕量級資料庫。安裝包只有幾十k,應用在移動裝置和嵌入式裝置中
- 開源和閉源區別:
1. 開源: 開放原始碼,免費,盈利方式:靠提供服務賺錢,有技術大牛無償維護升級。
2. 閉源:不公開原始碼,收費,盈利方式:靠賣產品和賣服務賺錢,有技術大牛攻擊,不過公司有錢可以養一幫人維護。
###SQL
- Structured Query Language:結構化 查詢 語言  ,用於程式設計師和資料庫之間的交流,學習資料庫主要學習的就是這門語言
####如何連線MySQL資料庫軟體
1. window:
2. linux:在空白區域右鍵-》終端-》mysql -uroot -p 回車-》輸入密碼(沒有密碼直接敲回車)敲回車
3. 退出指令: exit
####資料庫相關SQL
1. 查詢所有資料庫
- 格式:show databases;
2. 建立資料庫並指定字符集
- 格式: create database 資料庫名 character set utf8/gbk;
	create database db1 character set utf8;
	show databases;
	create database db2 character set gbk;
3. 檢視資料庫詳情
- 格式: show create database 資料庫名;
	show create database db1;
4. 刪除資料庫 
- 格式: drop database 資料庫名;
	drop database db1;
5. 使用資料庫
- 格式: use 資料庫名;
	use db1;(前提db1已經存在)
- 練習:
	1. 分別建立mydb1和mydb2資料庫 第一個是gbk第二個是utf8
	2. 建立完後查詢兩個是不是都存在
	3. 查詢兩個字符集是否正確
	4. 先使用mydb1再使用mydb2
	5. 刪除兩個資料庫 
	
####表相關SQL
- 表相關的各種操作必須已經使用了資料庫 
	create database db1 character set utf8;
	use db1;
1. 建立表
- 格式: create table 表名(欄位名 型別,欄位名 型別);
	create table person(name varchar(10),age int);
- 練習: 建立學生表student 欄位有: 學號id 姓名name 語文chinese 數學math 英語english
	create table student
	(id int,name varchar(10),chinese int,math int,english int);
2. 查詢所有表
- 格式: show tables;	
3. 檢視錶詳情
- 格式: show create table 表名;
	show create table student;
4. 建立表指定字符集
- 格式: create table 表名(欄位名 型別,欄位名 型別) charset=utf8/gbk;
	create table t1(name varchar(10),age int)charset=gbk;
	show create table t1;
5. 檢視錶欄位
- 格式: desc 表名;
	desc student;
6. 刪除表
- 格式: drop table 表名
	drop table t1;
7. 新增表欄位 
- 最後新增格式: alter table 表名 add 欄位名 型別; 
	alter table person add sal int;
- 最前面新增格式:alter table 表名 add 欄位名 型別 first; 
	alter table person add id int first;
- xxx的後面新增格式:alter table 表名 add 欄位名 型別 after xxx; 
	alter table person add gender varchar(10) after name;
8. 刪除表欄位
- 格式: alter table 表名 drop 欄位名;
	alter table person drop gender;
9. 修改表欄位名和型別
- 格式: alter table 表名 change 原名 新名 新型別;
	alter table person change sal gender varchar(10);
####資料庫和表相關練習:
1. 建立資料庫mydb1 字符集為utf8   並使用該資料庫
	create database mydb1 character set utf8;
	use mydb1;
2. 在mydb1中建立員工表emp  欄位有name   字符集為utf8
	create table emp (name varchar(10)) charset=utf8;
3. 新增表欄位age在最後面
	alter table emp add age int;
4. 新增id欄位在最前面
	alter table emp add id int first;
5. 新增sal欄位在name的後面
	alter table emp add sal int after name;
6. 修改欄位sal為salary
	alter table emp change sal salary int;
7. 刪除age欄位  alter table emp drop age;
8. 刪除emp表    drop table emp;
9. 刪除資料庫   drop database mydb1;
####資料相關SQL
create database newdb1 character set utf8;
use newdb1;
create table emp(id int,name varchar(10),age int);
1. 插入資料
- 全表插入格式: insert into 表名 values(1,2,3);
	insert into emp values(1,'Tom',18);
- 指定欄位格式:insert into 表名(欄位名1,欄位名2)values(1,2);
	insert into emp(name,age) values('Jerry',15);
- 批量插入資料格式:
	insert into emp values(4,'悟空',500),(5,'八戒',300),(6,'沙僧',200);
	insert into emp(name,age) values('劉備',25),('關羽',23),('張飛',18);
- 中文問題:
	insert into emp values(3,'劉德華',25);
	如果有同學執行以上SQL語句報錯的話執行以下SQL語句即可
	set names gbk;
2. 查詢資料
- 格式: select 欄位資訊 from 表名 where 條件;
- 舉例:
	1. 查詢所有的員工姓名   select name from emp;
	2. 查詢所有員工的所有資訊  select * from emp;
	3. 查詢年齡小於100歲的員工姓名和年齡 
		select name,age from emp where age<100;
	4. 查詢悟空的資訊
		select * from emp where name='悟空';
3. 修改資料
- 格式: update 表名 set 欄位名=,欄位名=where 條件;
- 舉例:
	1. 修改悟空名字為孫悟空
		update emp set name='孫悟空' where name='悟空';
	2. 修改劉備年齡為50update emp set age=50 where name='劉備';
	3. 修改30歲以下的員工年齡為10update emp set age=10 where age<30;
4. 刪除資料
- 格式: delete from 表名 where 條件;
- 舉例:
	1. 刪除Tom
		delete from emp where name='Tom';
	2. 刪除年齡10歲的員工
		delete from emp where age=10;
	3. 刪除所有資料
		delete from emp;
####練習:
1. 建立hero表 id  名字name  型別type  價格money
	create table hero(id int,name varchar(10),type varchar(10),money int);
2. 儲存以下資料
	insert into hero values
	(1, '諸葛亮', '法師', 18888),   (2, '周瑜', '法師', 13888),
	(3, '孫悟空', '打野', 18888),   (4, '小喬',  '法師', 13888),
	(5, '黃忠',   '射手', 8888),    (6, '劉備',  '戰士', 6888);
3. 修改所有1888828888  
	update hero set money=28888 where money=18888;
4. 修改所有法師為戰士 
	update hero set type='戰士' where type='法師';
5. 刪除價格為6888的英雄 delete from hero where money=6888;
6. 修改小喬為豬八戒 
	update hero set name='豬八戒' where name='小喬';
7. 刪除價格低於15000的英雄 delete from hero where money<15000;
8. 新增性別gender欄位在name的後面
	alter table hero add gender varchar(10) after name;
9. 修改所有英雄的性別為男 udpate hero set gender='男';
10. 刪除所有資料  delete from hero;
11. 刪除表  drop hero;

####資料型別
1. 整數: int(m)bigint(等效java中的long) ,m代表顯示長度 需要結合zerofill關鍵字使用
	create table t_int(id int,age int(10) zerofill);
	insert into t_int values(1,20);
	select * from t_int;
2. 浮點數: double(m,d)  m代表總長度 d代表小數長度  m=5 d=3  23.456,超高精度浮點數decimal(m,d) 只有涉及到超高精度運算時使用
3. 字串: 
- char(m): 固定長度 m=5 "abc" 所佔長度為5,執行效率略高 ,最大長度255
- varchar(m):可變長度m=5 "abc" 所佔長度為3,節省空間,最大長度65535 超過255建議使用text
- text(m):可變長度  最大長度65535
4. 日期:
- date: 只能儲存年月日
- time: 只能儲存時分秒
- datetime:年月日時分秒  預設值null  最大值9999-12-31
- timestamp:時間戳   預設值當前系統時間 最大值2038119create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
		insert into t_date values('2019-9-5',null,null,null);
		insert into t_date values(null,'17:37:28','2019-9-5 17:37:28',null);



###課程回顧:
1. 資料庫相關SQL
- show databases;
- create database db1 character set utf8/gbk;
- show create database db1;
- drop database db1;
- use db1;
2. 表相關SQL
- create table t1(id int,name varchar(10)) charset=utf8/gbk;
- show tables;
- show create table t1;
- desc t1;
- drop table t1;
- alter table t1 add age int first/   after xxx;
- alter table t1 drop age;
- alter table t1 change 原名 新名 新型別;
3. 資料相關SQL
- insert into t1(欄位名1,欄位名2) values('值1','值2'),('值1','值2');
- select 欄位資訊 from t1 where 條件;
- update t1 set xxx=xxx where 條件;
- delete from t1 where 條件;
4. 資料型別
- 整數:  intbigint  
- 浮點數: double(m,d) m總長度 d小數長度  超高精度decimal(m,d)
- 字串: char 固定長度 最大255 varchar 可變長度最大65535 超高255建議使用text    text 可變長度最大65535
- 日期:  date  time  datetime 最大9999-12-31 預設null   timestamp最大2038-1-19  預設值當前系統時間




html 
css 
JavaScript
jQuery
Bootstrap 
MySQL

個人檔案裡有很多粉絲專享檔案,教程和原始碼

相關文章