產品經理技術腦:MySQL
什么是Mysql?
My是MySQL的聯(lián)合創(chuàng)始人 - Monty Widenius 的女兒的名字。MySQL是My和SQL的組合,這就是MySQL命名的由來。
MySQL原開發(fā)者為瑞典的MySQL AB公司,該公司于2008年被昇陽微系統(tǒng)(Sun Microsystems)收購。2009年,甲骨文公司(Oracle)收購昇陽微系統(tǒng)公司,MySQL成為Oracle旗下產品。
MySQL是一個數(shù)據(jù)庫管理系統(tǒng),也是一個關系數(shù)據(jù)庫。它是由Oracle支持的開源軟件。這意味著任何一個人都可以使用MySQL而不用支付一毛錢。另外,如果需要,還可以更改其源代碼或進行二次開發(fā)以滿足您的需要。
當您想收聽最喜歡的歌曲時,可以從智能手機上打開播放列表。在這種情況下,播放列表是數(shù)據(jù)庫就是從數(shù)據(jù)庫中讀取出來的。
當您拍攝照片并將其上傳到微博,朋友圈等,這樣的社交網(wǎng)絡中的帳戶時,您的照片庫就有可能存儲在一個數(shù)據(jù)庫中。
當您瀏覽電子商務網(wǎng)站購買鞋子,衣服等時,您使用購物車就是數(shù)據(jù)庫應用。
數(shù)據(jù)庫無處不在。
數(shù)據(jù)庫發(fā)展階段
數(shù)據(jù)庫的發(fā)展經歷了3個階段:
l人工管理階段
l文件系統(tǒng)階段
l數(shù)據(jù)管理系統(tǒng)階段
數(shù)據(jù)/表/數(shù)據(jù)庫3者之間的關系
l數(shù)據(jù)是以表的形式出現(xiàn)的
l每行記錄的是各種記錄的名稱
l每列記錄的是名稱鎖對應的數(shù)據(jù)
l許多的行和列就組成了一張表格
l許多的表格就組成一個庫
MySQL的特點與優(yōu)勢
MySQL 是開放源代碼的數(shù)據(jù)庫
MySQL 是開放源代碼的數(shù)據(jù)庫,任何人都可以獲取該數(shù)據(jù)庫的源代碼。
這就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的來使用該數(shù)據(jù)庫。MySQL 是一款可以自由使用的數(shù)據(jù)庫。
MySQL 的跨平臺性
MySQL 不僅可以在 Windows 系列的操作系統(tǒng)上運行,還可以在 UNIX、Linux 和 Mac OS 等操作系統(tǒng)上運行。因為很多網(wǎng)站都選擇 UNIX、Linux 作為網(wǎng)站的服務器,所以 MySQL 的跨平臺性保證了其在 Web 應用方面的優(yōu)勢。雖然微軟公司的 SQL Server 數(shù)據(jù)庫是一款很優(yōu)秀的商業(yè)數(shù)據(jù)庫,但是其只能在 Windows 系列的操作系統(tǒng)上運行。因此,MySQL 數(shù)據(jù)庫的跨平臺性是一個很大的優(yōu)勢。
價格優(yōu)勢
MySQL 數(shù)據(jù)庫是一個自由軟件,任何人都可以從 MySQL 的官方網(wǎng)站上下載該軟件,這些社區(qū)版本的 MySQL 都是免費試用的,即使是需要付費的附加功能,其價格也是很便宜的。相對于 Oracle、DB2 和 SQL Server 這些價格昂貴的商業(yè)軟件,MySQL 具有絕對的價格優(yōu)勢。
功能強大且使用方便
MySQL 是一個真正的多用戶、 多線程 SQL 數(shù)據(jù)庫服務器。它能夠快速、有效和安全的處理大量的數(shù)據(jù)。相對于 Oracle 等數(shù)據(jù)庫來說,MySQL 的使用是非常簡單的。MySQL 主要目標是快速、健壯和易用。
mysql基本命令
基礎常用命令
本地登錄:mysql -uroot -p密碼;(也可以不帶密碼,之后輸入)
遠程登錄:mysql -h 登錄ip -p 端口(通常3306) -uroot -p密碼;
(desc 表名;查看表的各個字段的屬性,以及自增鍵)
導出數(shù)據(jù)庫文件,保存:mysqldump -u用戶? -p 數(shù)據(jù)庫名 > xx.sql;
導入數(shù)據(jù)庫文件:mysql -u用戶 -p密碼? 數(shù)據(jù)庫名< xx.sql;
(也可以選擇登錄進去,在選擇數(shù)據(jù)庫后,使用source命令導入數(shù)據(jù))
創(chuàng)建命令
創(chuàng)建用戶:create user '用戶名' @'ip' identified by '密碼'
(ip是指用戶登錄mysql的電腦ip,可以寫%,本地寫localhost)
用戶授權:grant 權限(select/insert/updata/all priveleges) on 表/數(shù)據(jù)庫名 to '用戶'@'ip' identified by '密碼'
刪除用戶:drop user 用戶名@ip
查數(shù)據(jù)庫:show databases;? ?
看表:show tables;? ??
?? ? ?
創(chuàng)建數(shù)據(jù)庫:create database 數(shù)據(jù)庫名 default charset utf8;
創(chuàng)建表:create table 表名(列名 數(shù)據(jù)類型 約束···,列名 數(shù)據(jù)類型 約束···)engine=innodb default charset=utf8 ??
數(shù)據(jù)類型種類:
↘數(shù)字(int,tinyint,smallint,float,double)
↘字符串(char(個數(shù))varchar(個數(shù)))時間(DATE,TIME,DATETIME)
↘枚舉enum(值只能是枚舉中的元素)
↘集合set(值只能是結合元素的組合)
創(chuàng)建含主鍵的表:create table 表名(列名 數(shù)據(jù)類型 primary key auto_increment,列名 數(shù)據(jù)類型?約束···)engine=innodb default charset=utf8
創(chuàng)建含外鍵的表:create table 表名(列名 數(shù)據(jù)類型 primary key,列名 數(shù)據(jù)類型 constraint fk_外鍵名 foreign key (列名[,]) references 表名2(列名[,])···)engine=innodb default charset=utf8
查表命令
條件查詢
select * from 表名;
select 列名···from 表名;
select 列名 from 表名 where 列名(id等) >/
刪除,修改,插入命令
插入
insert into 表名(列名1,列名2···) values(值1,值2···),(值1,值2···),(值1,值2···);? 插入值;
insert into 表名1(列名) select 列名 from 表2; 在一個表中插入另一個表中數(shù)據(jù)
修改
update 表名 set 列名1=value1,列名2=value2 where 條件1 [and/or 條件2];
刪除
delete from 表名; 清除表(如果有自增id,id 不會重新開始)
delete from 表名 where 條件;清除特定數(shù)據(jù)
truncate table 表名;清除表(如果有自增id,id 會重新開始)