MYSQL 入門全套
點擊上方「
Python開發
」,選擇「置頂公眾號」
關鍵時刻,第一時間送達!
mysql簡介
1、什麼是資料庫 ?
資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用。
主流的資料庫有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等,本文主要講述的是mysql
2、資料庫管理是幹什麼用的?
a. 將數據保存到文件或內存
b. 接收特定的命令,然後對文件進行相應的操作
PS:如果有了以上管理系統,無須自己再去創建文件和文件夾,而是直接傳遞 命令 給上述軟體,讓其來進行文件操作,他們統稱為資料庫管理系統(DBMS,Database Management System)
mysql安裝
MySQL是一種開放源代碼的關係型資料庫管理系統(RDBMS),MySQL資料庫系統使用最常用的資料庫管理語言–結構化查詢語言(SQL)進行資料庫管理。在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫管理系統) 應用軟體之一。
使用mysql必須具備一下條件
a. 安裝MySQL服務端
b. 安裝MySQL客戶端
c. 【客戶端】連接【服務端】
d. 【客戶端】發送命令給【服務端MySQL】服務的接受命令並執行相應操作(增刪改查等)
1、下載地址:http://dev.mysql.com/downloads/mysql/
2、安裝
windows安裝請參考:http://www.cnblogs.com/lonelywolfmoutain/p/4547115.html
linux下安裝:http://www.cnblogs.com/chenjunbiao/archive/2011/01/24/1940256.html
註:以上兩個鏈接有完整的安裝方式,擼主也是參考他的安裝的,安裝完以後mysql.server start啟動mysql服務
mysql操作
一、連接資料庫
mysql -u user -p 例:mysql -u root -p
常見錯誤如下:
ERROR 2002 (HY000): Can"t connect to local MySQL server through socket "/tmp/mysql.sock" (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.
退出連接:
QUIT 或者 Ctrl+D
二、查看資料庫,創建資料庫,使用資料庫查看資料庫: show databases;
默認資料庫:
mysql
-
用戶許可權相關數據
test
-
用於用戶測試數據
information_schema
-
MySQL本身架構相關數據
創建資料庫:
create
database
db1
DEFAULT
CHARSET
utf8
COLLATE
utf8_general_ci;
# utf8編碼 create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; # gbk編碼
使用資料庫:
use
db1;
顯示當前使用的資料庫中所有表:SHOW TABLES;
三、用戶管理
創建用戶
create user
"用戶名"
@"IP地址"
identified by
"密碼"
;刪除用戶
drop
user
"用戶名"
@"IP地址"
;修改用戶
rename user
"用戶名"
@"IP地址"
;
to
"新用戶名"
@"IP地址"
;;修改密碼
set password for
"用戶名"
@"IP地址"
=
Password
("新密碼"
)註:用戶許可權相關數據保存在mysql資料庫的user表中,所以也可以直接對其進行操作(不建議)
四、許可權管理
mysql對於許可權這塊有以下限制:
對於資料庫及內部其他許可權如下:
資料庫名.*
資料庫中的所有
資料庫名.表
指定資料庫中的某張表
資料庫名.存儲過程
指定資料庫中的存儲過程
*.*
所有資料庫
對於用戶和IP的許可權如下:
用戶名@IP地址
用戶只能在改IP下才能訪問
用戶名@192.168.1.%
用戶只能在改IP段下才能訪問(通配符%表示任意)
用戶名@%
用戶可以再任意IP下訪問(默認IP地址為%)
1、查看許可權:
show grants for "用戶"@"IP地址"
2、授權
grant 許可權 on 資料庫.表 to "用戶"@"IP地址"
3、取消授權
revoke 許可權 on 資料庫.表 from "用戶"@"IP地址"
授權實例如下:
grant
all
privileges
on
db1.tb1
TO
"用戶名"
@"IP"
grant
select
on
db1.*
TO
"用戶名"
@"IP"
grant
select
,insert
on
*.*
TO
"用戶名"
@"IP"
revoke
select
on
db1.tb1
from
"用戶名"
@"IP"
mysql表操作
1、查看錶
show
tables
;
# 查看資料庫全部表
select
*
from
表名;
# 查看錶所有內容
2、創建表
create
table
表名(
列名
類型
是否可以為空,
列名
類型
是否可以為空
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8來一個實例好詳解
CREATE
TABLE
`tab1`
(
`nid`
int
(11)
NOT NULL
auto_increment
,
# not null表示不能為空,auto_increment表示自增
`name`
varchar
(255)
DEFAULT
zhangyanlin,
# default 表示默認值
`email`
varchar
(255),
PRIMARY KEY
(`nid`)
# 把nid列設置成主鍵
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8;註:
默認值,創建列時可以指定默認值,當插入數據時如果未主動設置,則自動添加默認值
自增,如果為某列設置自增列,插入數據時無需設置此列,默認將自增(表中只能有一個自增列)注意:1、對於自增列,必須是索引(含主鍵)2、對於自增可以設置步長和起始值
主鍵,一種特殊的唯一索引,不允許有空值,如果主鍵使用單個列,則它的值必須唯一,如果是多列,則其組合必須唯一。
3、刪除表
drop table 表名
4、清空表內容
delete
from
表名
truncate
table
表名
5、修改表
添加列:
alter
table
表名
add
列名
類型
刪除列:
alter
table
表名
drop
column
列名
修改列:
alter
table
表名
modify
column
列名
類型;
-- 類型
alter
table
表名
change
原列名
新列名
類型;
-- 列名,類型
添加主鍵:
alter
table
表名
add
primary key
(列名);刪除主鍵:
alter
table
表名
drop
primary key
;
alter
table
表名
modify
列名
int
,
drop
primary key
;
添加外鍵:
alter
table
從表
add
constraint
外鍵名稱(形如:FK_從表_主表)
foreign key
從表(外鍵欄位)
references
主表(主鍵欄位);
刪除外鍵:
alter
table
表名
drop
foreign key
外鍵名稱
修改默認值:
ALTER
TABLE
testalter_tbl
ALTER
i
SET
DEFAULT
1000;
刪除默認值:
ALTER
TABLE
testalter_tbl
ALTER
i
DROP
DEFAULT
;對於上述這些操作是不是看起來很麻煩,很浪費時間,別慌!有專門的軟體能提供這些功能,操作起來非常簡單,這個軟體名字叫Navicat Premium ,大家自行在網上下載,練練手,但是下面的即將講到表內容操作還是建議自己寫命令來進行
6、基本數據類型
MySQL的數據類型大致分為:數值、時間和字元串
bit
[(M)]二進位位(101001),m表示二進位位的長度(1
-
64),默認m=1
tinyint
[(m)][
unsigned
][
zerofill
]
小整數,數據類型用於保存一些範圍的整數數值範圍:
有符號:
-128
~
127.
無符號:
0
~
255
特別的:
MySQL中無布爾值,使用
tinyint
(1)構造。
int
[(m)][unsigned
][zerofill
]
整數,數據類型用於保存一些範圍的整數數值範圍:
有符號:
-2147483648
~
2147483647
無符號:
0
~
4294967295
特別的:整數類型中的m僅用於顯示,對存儲範圍無限制。例如:
int
(5),當插入數據2時,select
時數據顯示為:00002
bigint
[(m)][unsigned
][zerofill
]大整數,數據類型用於保存一些範圍的整數數值範圍:
有符號:
-9223372036854775808
~
9223372036854775807
無符號:
0
~
18446744073709551615
decimal
[(m[,d])][
unsigned
][
zerofill
]準確的小數值,m是數字總個數(負號不算),d是小數點後個數。
m最大值為65,d最大值為30。
特別的:對於精確數值計算時需要用此類型
decaimal能夠存儲精確值的原因在於其內部按照字元串存儲。
FLOAT
[(M,D)][
UNSIGNED
][
ZEROFILL
]單精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。
無符號:
-3.402823466E
+
38
to
-1.175494351E
-
38,0
1.175494351E
-
38
to
3.402823466E
+
38有符號:
0
1.175494351E
-
38
to
3.402823466E
+
38
****
數值越大,越不準確
****
DOUBLE
[(M,D)][
UNSIGNED
][
ZEROFILL
]雙精度浮點數(非準確小數值),m是數字總個數,d是小數點後個數。
無符號:
-1.7976931348623157E
+
308
to
-2.2250738585072014E
-
3080
2.2250738585072014E
-
308
to
1.7976931348623157E
+
308有符號:
0
2.2250738585072014E
-
308
to
1.7976931348623157E
+
308****
數值越大,越不準確
****
char
(m)
char
數據類型用於表示固定長度的字元串,可以包含最多達255個字元。其中m代表字元串的長度。PS:
即使數據小於m長度,也會佔用m長度
varchar
(m)varchars數據類型用於變長的字元串,可以包含最多達255個字元。其中m代表該數據類型所允許保存的字元串的最大長度,只要長度小於該最大值的字元串都可以被保存在該數據類型中。
註:雖然
varchar
使用起來較為靈活,但是從整個系統的性能角度來說,char
數據類型的處理速度更快,有時甚至可以超出varchar
處理速度的50%。因此,用戶在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡
text
text
數據類型用於保存變長的大字元串,可以組多到65535(2**16
?
1)個字元。
mediumtext
A
TEXT
column
with
a
maximum
length
of
16,777,215
(2**24
?
1)
characters.
longtext
A
TEXT
column
with
a
maximum
length
of
4,294,967,295
or
4GB
(2**32
?
1)
characters.
enum
枚舉類型,
An
ENUM
column
can
have
a
maximum
of
65,535
distinct
elements.
(The
practical
limit
is
less than
3000.)
示例:
CREATE
TABLE
shirts
(
name
VARCHAR
(40),size
ENUM
("x-small"
,
"small"
,
"medium"
,
"large"
,
"x-large"
));
INSERT
INTO
shirts
(name,
size)
VALUES
(
"dress shirt"
,"large"
),(
"t-shirt"
,"medium"
),("polo shirt"
,"small"
);
set
集合類型
A
SET
column
can
have
a
maximum
of
64
distinct
members.
示例:
CREATE
TABLE
myset
(col
SET
("a"
,
"b"
,
"c"
,
"d"
));
INSERT
INTO
myset
(col)
VALUES
(
"a,d"
),(
"d,a"
),(
"a,d,a"
),(
"a,d,d"
),(
"d,a,d"
);
DATE
YYYY
-
MM-
DD(1000-
01-
01/
9999-
12-
31)
TIME
HH:MM:SS(
"-838:59:59"
/"838:59:59"
)
YEAR
YYYY(1901
/
2155)
DATETIME
YYYY
-
MM-
DDHH:MM:SS(1000
-
01-
0100:00:00
/
9999-
12-
3123:59:59
Y
)
TIMESTAMP
YYYYMMDD
HHMMSS(1970
-
01-
0100:00:00
/
2037年某時)
mysql表內容操作
表內容操作無非就是增刪改查,當然用的最多的還是查,而且查這一塊東西最多,用起來最難,當然對於大神來說那就是so easy了,對於我這種小白還是非常難以靈活運用的,下面咱來一一操作一下
1、增
insert
into
表
(列名,列名...)
values
(值,值,...)
insert
into
表
(列名,列名...)
values
(值,值,...),(值,值,值...)
insert
into
表
(列名,列名...)
select
(列名,列名...)
from
表
例:
insert
into
tab1(name,email)
values
("zhangyanlin"
,"zhangyanlin8851@163.com"
)2、刪
delete
from
表
# 刪除表裡全部數據
delete
from
表
where
id=1
and
name=
"zhangyanlin"
# 刪除ID =1 和name="zhangyanlin" 那一行數據
3、改
update 表 set name = "zhangyanlin" where id>1
4、查
select
*
from
表
select
*
from
表
where
id
>
1select
nid,name,gender
as
gg
from
表
where
id
>
1查這塊的條件太多太多我給列舉出來至於組合還得看大家的理解程度哈
a、條件判斷where
b、通配符like
c、限制limit
d、排序asc,desc
e、分組group by
來源:張岩林
www.cnblogs.com/aylin/p/5744312.html
Python開發整理髮布,轉載請聯繫作者獲得授權
【點擊成為Java大神】


※用 greenlet 實現 Python 中的並發
※使用 Scrapy 構建一個網路爬蟲
TAG:Python開發 |