MySql資料庫筆記(功能齊全)
###資料庫
####資料庫簡介
- 通過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. 修改劉備年齡為50歲
update emp set age=50 where name='劉備';
3. 修改30歲以下的員工年齡為10歲
update 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. 修改所有18888為28888
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:時間戳 預設值當前系統時間 最大值2038年1月19號
create 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. 資料型別
- 整數: int和bigint
- 浮點數: 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
個人檔案裡有很多粉絲專享檔案,教程和原始碼
相關文章
- MySQL資料庫學習筆記MySql資料庫筆記
- MySQL資料庫基礎筆記MySql資料庫筆記
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- MySQL學習筆記-使用Navicat操作MySQL資料庫MySql筆記資料庫
- 資料管理DMS:自建MySQL資料庫全量SQL診斷功能釋出啦!MySql資料庫
- 資料庫學習筆記 - MySQL基礎知識資料庫筆記MySql
- MySQL資料庫自動補全命令MySql資料庫
- MySQL資料型別筆記MySql資料型別筆記
- MySQL資料庫學習筆記02(事務控制,資料查詢)MySql資料庫筆記
- MySQL資料庫初級學習筆記---第一章-資料庫概述MySql資料庫筆記
- 開啟mysql 資料庫審計功能。MySql資料庫
- 全棧 – 11 資料庫 MySQL使用方法全棧資料庫MySql
- 全棧 - 11 資料庫 MySQL使用方法全棧資料庫MySql
- laravel筆記+資料庫操作Laravel筆記資料庫
- 資料庫學習筆記資料庫筆記
- PHP筆記--資料庫操作PHP筆記資料庫
- MySQL筆記複習(例項 全)MySql筆記
- 為VNPY增加資料庫記錄交易資料功能資料庫
- 全棧 – 12 資料庫 用Python操作MySQL全棧資料庫PythonMySql
- 全棧 - 12 資料庫 用Python操作MySQL全棧資料庫PythonMySql
- 功能齊全的視訊編輯軟體
- 資料庫筆試面試題庫(Oracle、MySQL等)資料庫筆試面試題OracleMySql
- oracle資料庫運維筆記Oracle資料庫運維筆記
- 4, 手工建立資料庫(筆記)資料庫筆記
- 資料庫大型應用——筆記2 50道mysql練習題資料庫筆記MySql
- DATAGUARD、broker安裝維護檔案(個人筆記比較齊全)筆記
- MySQL學習筆記--資料型別MySql筆記資料型別
- 使用RMAN建立資料庫備份庫(筆記)資料庫筆記
- Aerospike 分散式記憶體資料庫 筆記ROS分散式記憶體資料庫筆記
- Redis學習筆記(七) 資料庫Redis筆記資料庫
- 資料庫課程作業筆記資料庫筆記
- 達夢資料庫學習筆記資料庫筆記
- python學習筆記:資料庫Python筆記資料庫
- 資料庫原理學習筆記——引言資料庫筆記
- MySQL學習筆記12:資料型別MySql筆記資料型別
- 【資料庫】mysql資料庫索引資料庫MySql索引
- 資料庫學習筆記1(資料管理歷史)資料庫筆記
- 用JavaScript實現功能齊全的單連結串列JavaScript