MySQL使用入門
資料庫概述
資料庫是存放資料的倉庫,在應用的開發中總是離不開資料的查詢、處理、存盤,例如圖書管理系統就需要操縱和存盤大量的資料,沒有資料庫之前我們使用檔案存盤資料,但是檔案存盤有很多弊端,查詢效率低,讀取麻煩,不易于管理等等,這么多的麻煩我們都可以交給資料庫進行管理,資料庫是專門為資料存盤管理開發的軟體,使用它可以有更高的效率和安全性,
-
資料庫的分類
不同資料庫管理資料的方式有很大差別,以是否為關系型資料庫可分為兩大類,
關系型:MySQL、ORACAL、DATEBASE、PostgreSQL、SQL server
非關系型:Redis、MongoDB -
關系型資料庫MySQL
暫不討論各個資料庫之間的區別,本文主要目的在于掌握MySQL的基本應用,
什么是關系型資料庫?關系型資料庫存的表是二維的表格,比如一張學生資訊表,一個學生的資訊包含很多項:學號、姓名、性別和年齡等,60個學生就有60個不同學號,最多60個姓名,性別或男或女,每一個項(在表格中是每一列)都是一個同型別值得集合,而集合之間并不是任意隨機得組合,不是隨便拿一個學號隨便拿一個姓名就組合在一起,而是有意義得特定組合,用于表示一個一個的學生資訊,這就是所謂得“關系”,如果你不想理解這些,權當它就是excel表格就好,
MySQL安裝
Windows安裝MySQL5.7.17
-
在MySQL官網 http://dev.mysql.com/downloads/mysql/ 上面下載ZIP安裝包(Windows (x86, 64- bit), ZIP Archive),
-
下載完成后解壓,將其放到想要安裝的目錄下, 例如:D:\MySQL5.7\mysql-5.7.17-winx64
-
新建一個my.ini組態檔,原始的my-default.ini組態檔只是個模版,不要在里面改動, my.ini的內容如下:
[mysql] default-character-set=utf8
[mysqld] port = 3306 basedir=D:\MySQL5.7\mysql-5.7.17-winx64 datadir=D:\MySQL5.7\mysql-5.7.17- winx64\data max_connections=200 character-set-server=utf8 default-storage-engine=INNODB explicit_defaults_for_timestamp=true
-
在安裝路徑下新建一個空的data檔案夾,
-
以管理員身份運行cmd,進入bin目錄,執行
mysqld --initialize-insecure --user=mysql命令,不進行這一步,安裝完成之后無法啟動服務, -
依然在管理員cmd視窗的bin目錄下,執行
mysqld install命令安裝,完成后會提示安裝成功, -
依然在管理員cmd視窗的bin目錄下,執行
net start mysql命令啟動MySQL服務, -
修改環境變數,添加 "D:\MySQL5.7\mysql-5.7.17-winx64\bin",
-
在普通cmd視窗中,進入bin目錄,執行
mysql -u root -p命令,默認沒有密碼,回車進入,
Mac系統中安裝MySQL
使?Mac中的Homebrew進?mysql的安裝
-
下載安裝mysql
brew install [email protected]
如果看到以下界?則表示已經下載安裝成功
-
啟動mysql
mysql.server start -
關閉mysql
mysql.server stop -
登錄mysql
mysql -u root -p
資料庫的基本邏輯結構
整個MySQL庫中包含多個庫,其中四個是自帶的核心庫,每個庫中又有若干個個表,每個表就類似于一個excel表格
- MySQL
- 若干庫
- 若干表
基礎操作
初識MySQL
- 首先終端輸入命令
mysql -u root -p登錄MySQL - 查看庫輸入
show databases;陳述句查看所有庫(所有SQL陳述句都以分號結尾),結果如下
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
-- 可以看見四個預置的庫,都是一些核心庫不要洗掉,
- 選擇其中一個庫(例如mysql庫)
use mysql; - 查看庫中所有表
show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
... ...
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
-- 行數比較多,中間部分省略號表示
select host,user from user;查看user表中的所有資料的 host和user欄位列
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
select * from user;查看user表中的所有資料的所有欄位
新建一個庫
create database mydb default charset=utf8;
-- 執行后查看所有庫就能看見mydb庫,其中default charset=utf8 選定庫的使用的字符集為UTF-8
新建一個表
-- 在哪個庫中建表必須先選中那個庫,然后使用下面陳述句創建一個簡單的表user
create table user(
name varchar(20),
age int,
sex char(1)
)engine=innodb default charset=utf8;
-- 注意每個欄位之間逗號隔開,最后一個欄位后面沒有逗號!
向表中添加資料
-- 向user表中添加name,age,sex資料
insert into user(name,age,sex) values('admin',26,'男');
-- 欄位賦值順序可以自由排列,也可以選擇性賦值,若沒有提供賦值順序,默認按照定義順序全部賦值
insert into user values('張三',22,'女');
DML
Data Manipulation Language 資料操作語言
-- 資料操縱就是對資料內容的操縱,包括INSERT(增)、DELETE(刪)、UPDATE(改),
-- INSERT: 除了上面的一條陳述句插入一行資料的情況,也可以一次性插入多行資料:
insert into user values('張三',22,'女'),('admin',26,'男'),('alian',16,'男');
-- DELETE: 要謹慎控制過濾條件,如果過濾控制不當會洗掉所有資料
delete from user where name = '張三';
-- UPDATE: 更新時也同樣注意過濾條件,下面陳述句直接將用戶admin的年齡和性別進行了更改
update user set age = 23, sex = '女' where name = 'admin';
DDL
Data Definition Language 資料定義語言
-- 資料定義是關于表的結構的操作,包括表的定義和表結構的更改,
-- 建表陳述句上面已有實體,表的洗掉陳述句如下:
drop table user;
-- 增加欄位(列),洗掉欄位(列)
alter table user add birthday date;
alter table user drop age;
-- 更改欄位,使用change時必須更改欄位名字,使用modify時不能更改欄位名字
alter table user modify name char(50);
alter table user change name u_name char(30);
-- 更改表引擎
alter table user engine = '引擎';
-- 還有其他操作請參考官方檔案
DQL
Data Query Language 資料查詢語言
-- 在資料庫應用中,頻率最高的操作就是查詢
-- 單表查詢最基本格式,select哪些欄位、from哪個表、where篩選條件
select ... from ... where ...;
-- 例:查看所有大于20歲的用戶的名字
select name from user where age > 20;
-- 多個篩選條件之間可以用 and 和 or 連接,注意條件結合的優先級,使用()來控制他們的結合,
-- 嵌套查詢,前面單表查詢的結果也是一個表,這個結果表又可以作為被查詢的表,這樣就形成了嵌套查詢,
select ... from (select ... from ... where ...) where ...;
統計、分組、排序
統計:很多時候我們需要對資料資料進一步處理,找出其中的最大值、最小值、總和、平均值和計數,使用下面的函式
select max(age),min(age),sum(age),avg(age),count(age) from user;
-- 統計函式會把多行資料統計為一行資料,比如100個年齡,用max函式統計就變成一個資料,就是100個資料中最大的資料,
分組:統計函式除了上面的簡單用法--把所有資料統計運算變為一行資料之外,通常和分組陳述句一起使用,
比如想要分別統計男人和女人的平均年齡,
select sex,avg(age) from user group by sex;
-- group by sex 的語意就是根據sex的值不同分組,sex只有兩個值'男'和'女',相應就分為兩組,統計函式的作用域是再組內,組之間不會影響,
排序:當我們遇到一個查詢成績單這樣的需求時,通常我們想要的結果是一個成績從高到低降序排列的結果表,
select name,age from user order by age desc;
-- 其中 desc 代表降序排列,升序排列為 asc 可以,默認值為asc,
分頁查詢
當查詢結果有很多行時,我們可以選擇查看其中一段
select name,age from user limit 3;-- 只看3條
select name,age from user limit 4,3;-- 跳過前4條,查看3條
總結
- 安裝MySQL
- 打開MySQL
- 查看&操作MySQL
熟悉使用以下關鍵詞
show , databases , use , table
select , from , where , count , min , max , sum , avg , group by , order by , desc
create , database , default , charset , engine , innodb , insert into , alter table , modify , change
應該這些代碼的含義是什么
show databases;
use ...;
select ... from ... where ...;
select max(...),avg(...),... from ... where ... group by ...;
select ... from ... group by ... desc;
select ... from ... limit ...;
create database ... default charset=...;
create table ...(
... ...,
... ...,
... ...
)engine=innodb default charset=utf8;
insert into ... values(...),(...),(...);
delete from ... where ...;
update ... set ... where ...;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/266277.html
標籤:其他
