MYSQL快速入門(1)
阿新 • • 發佈:2019-01-13
MYSQL快速入門
一、MySQL資料庫基礎
1.為什麼要存在資料庫
對於資料儲存
,我們可以接使用檔案
,但是為什麼要存在資料庫
,因為檔案儲存資料有很大的缺點
:
- 檔案
不利於資料查詢和管理
- 檔案儲存
資料
不安全 - 檔案在程式中
控制不安全
- 檔案
不利於存放海量資料
為了解決上面的一些問題,一些大牛們設計出了各類資料庫用來儲存和管理資料
磁碟和記憶體
。
2.目前主流的資料庫
sql server
: 微軟的資料庫,適用於中大型專案Oracle
:全球最大的資料庫使用量,java
程式設計師必學,適合處理複雜業務,收費的MySql
:sun
公司產品,現在也屬於甲骨文,併發性好,不適合複雜的業務,免費的,主要 用在電商,SNS,論壇。對簡單的SQL
處理效果好。DB2
:IBM
公司,處理海量資料,功能強悍informix
:IBM
公司,安全非常強
3.MTSQL的基本使用
3.1 MYSQL的安裝
centos 7.0下直接執行yum -y install mysql-server進行安裝
3.2 MYSQL的啟動和關閉
- 啟動:
service mysqld start
- 關閉:
service mysqld stop
3.3 連線到MYSQL
mysql [-h 主機] -u 使用者 -p
說明:
-h
: 如果沒有寫-h 127.0.0.1
預設是連線本地
。如果需要登入到另外一個mysql
,則需要修改配置
,一般情況不讓遠端登入
-u
:表示登入的使用者
,一般是root
-p
:表示登入密碼
,剛開始如果自己沒有設定,預設是空
,直接跳過
即可出現下面的介面,說明已經連線到資料庫
3.4 資料庫伺服器、資料庫和表的關係
- 安裝
資料庫伺服器
,只是在機器上安裝了一個資料庫管理程式
,這個管理程式可以管理多個數據庫
,一般開發人員會針對每一個應用建立一個數據庫
。 - 為儲存應用中
實體的資料
,一般會在資料庫中建立多個表
,以儲存程式中實體的資料
。 - 一個
資料庫伺服器
可以存在多個數據庫
,而一個數據庫
也可以存在多個表
。
3.5 建立庫和表
- 建立庫:
create database 庫名
- 使用庫:
use 庫名
- 建立表:
表是在庫裡建立的,所以要先選擇庫才能建立表
-- 建立表
create table 表名(
欄位1 列型別1,
欄位2 列型別2,
...
欄位n 列型別n
);
- 向表中插入資料:
insert into 表名(欄位名1, 欄位2, ...) values(values1, value2);
- 查看錶中的資料
select * from 表名
例如:建立一個person
表,並插入一條記錄
-- 建立表
create table person( name varchar(30), id int);
-- 插入記錄
insert into person values('zhangsan',123);
-- 查看錶中的資料
-- select * from person
3.5 SQL分類
- 資料定義語言,用來維護儲存資料的結構
DDL:create drop alter
- 資料操作語言,操作表中的內容
DML:insert delete update
- 資料查詢語言
DQL:select
- 資料控制語句,負責許可權管理和事務
DCL:grant revoke commit
二.庫的操作
1.建立資料庫
- 語法
create database [if not exists] db_name
[createspecification][createspecification]
-- createspecification:
-- CHARSET(字符集,一般指定為utf8)
-- COLLATE(校驗規則,資料庫字符集的比較方式,預設utf8_ general_ ci,一般不指定)
1.1 字符集和校驗規則
字符集
:是一套表示字元的符號和這些的符號的底層編碼校驗規則
: 是在字符集內用於比較字元的一套規則
如在某個字符集“X”
的A與a
,他們的底層編碼分別是A=0,a=100
。這裡符號“A”“a”
和底層編碼“0”“100”
就是字符集的概念範圍。假設我們要比較A與a
的大小,我們得到a>A
,因為我們是根據其底層編碼進行比較的,這就是這個字符集“X”
的一種校驗規則“Z”
(根據底層編碼來比較)。假設,現在有另外一種校驗規則,是先取其相反數,然後再比較大小,那麼就很顯然的得到a<A
,這就是字符集“X”
的另外一種校驗規則“Z1”
。由此可見,一種字符集可能存在多個與之對應的校驗規則(一對多關係)
-- 建立一個數據庫,校驗規則使用utf8_ general_ ci[不區分大小寫]
-- a A b B (排序)
mysql> create database x1 collate utf8_general_ci;
-- 建立一個數據庫,校驗規則使用utf8_ general_ bin[區分大小寫]
-- A B a b(排序)
create database x2 collate utf8_bin;
- 檢視系統預設字符集以及校驗規則
show variables like 'character_set_database'; -- 字符集
show variables like 'collation_database'; -- 校驗規則
- 建立庫的各種情況
create database company1; -- 系統預設的字符集和校驗規則
create database company2 charset=utf8; -- 指定為utf8字符集建庫
create database company3 charset=utf8 collate utf8_general_ci; -- 指定字符集為utf8和校驗規則為utf8_general_ci
2.操縱資料庫
2.1 檢視現在存在哪些資料庫
show databases;
2.2 顯示資料庫建立語句
mysql> show create database mytest;
+----------+------------------------------------------------------------+ | Database | Create Database |
+----------+----------------------------------------------------------+ |
mytest | CREATE DATABASE `mytest` /*!40100 DEFAULT CHARACTER SET utf8 */| +----------+----------------------------------------------------------+
說明:
1) MySQL 建議我們關鍵字使用大寫,但是不是必須的。
2) 資料庫名字的反引號``,是為了防止使用的資料庫名剛好是關鍵字
3) /*!40100 default.... */ 這個不是註釋,表示當前mysql 版本大於4.01版本,就執行這句話
2.3 刪除資料庫
DROP DATABASE [IF EXISTS] db_ name;
-- []代表可存在也可不存在
-- 刪庫操作一定要慎重使用
-- 資料庫內部看不到對應的資料庫
-- 對應的資料庫資料夾被刪除,級聯刪除,裡面的資料表全部被刪
2.4 檢視當前MySQL資料庫的連線情況
show processlist
-- 可以查出當前有哪些使用者連線到我們的MySQL,如果查出某個使用者不是你正常登陸的,很有可能你的資料庫被人入侵了。如果發現自己資料庫比較慢時,可以用這個指令來看看資料庫連線情況。
2.5 備份和恢復資料庫
備份語法:mysqldump -u(以哪個使用者去備份) -p(密碼) 資料庫名 > 資料庫存放路徑
-- 退出mysql,在shell下執行對資料庫進行備份
mysqldump -u root -p msg > ./msg.bk
-- 然後進入mysql中刪除原來的庫
drop database msg
-- 要恢復資料庫,必須先建立一個空的資料庫。好和以前的資料庫名字一致
create database msg
use msg
source ./msg.bk
-- 這樣即可恢復原來的資料庫
- 備份的是
資料庫中的一張表
,而是資料庫
-- 備份到當前目錄下
mysqldump -u root -p密碼 資料庫名 表名1 表名2 > ./msg.bk
-- 恢復
source 備份的檔案路徑及檔名
- 備份
多個數據庫
mysqldump -u root -p密碼 -B 資料庫名1 資料庫名2 ... > 資料庫存放路徑
-- 同時恢復多個數據庫
source 備份的檔案
注意點:
- 在使用
source
恢復資料時,保證use
對應的資料庫 - 當我們備份一個數據庫時,也帶上
-B
引數,在恢復資料庫
時,不需要再建立空資料庫
2.6 修改庫
修改庫的語法:
ALTER DATABASE [IF EXISTS] db_name [alter_spacification ],[alter_spacification]
-- 對資料庫的修改主要指的是修改資料庫的字符集,校驗規則
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
例如:
-- 修改msg庫的字符集為utf8
alter database msg charset=utf8
檢視msg庫
的字符集:
三.表的操作
1.建立表
- 建立表的語法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校驗規則 engine 儲存引擎;
說明:
-- field 表示列名
-- datatype 表示列的型別
-- character set 字符集,如果沒有指定字符集,則以所在資料庫的字符集為準
--collate 校驗規則,如果沒有指定校驗規則,則以所在資料庫的校驗規則為準
- 建立一張學生表
create table stu1 (
id int comment '學號',
name varchar(20) comment '姓名'
) character set utf8 engine MyISAM;
不同的儲存引擎,建立表的檔案不一樣:
- 查看錶的結構
desc 表名
例如:檢視學生表示stu1
的表結構
2. 修改表
修改表一般指的是修改某個表的結構
,比如欄位名字
,欄位大小
,欄位型別
,表的字符集型別
,表的儲存引擎
,新增欄位
,刪除欄位
等等
# 修改表結構
-- 新增列
alter table 表名 add (filed datatype)
-- 預設插入到最後一列
alter table user add addr varchar(60);
-- after name 表示插入到name後邊,但是不能用before
alter table user add gender varchar(2) after name;
-- in first 表示插入到第一列
alter table user add class int first;
-- 改變列的型別
alter table 表名 modify 列名 新型別名
alter table user modify name varchar(60)
-- 刪除某列,這一列的資料全部沒有,儘量不要這麼做
alter table user drop 列名;
-- 改表名
alter table user rename to 新表名;
-- 修改表的字符集
alter table user charset=gbk;
-- 修改列的字符集
alter table user modify name varchar(60) charset utf8;
-- 將name列修改為xingming
alter table user change name xingming varchar(30);
注:在MYSQL
中的各類語句一般使用大寫
,在本篇博文中,由於大寫寫起來比較難看懂
,所以就採用小寫
。