1. 程式人生 > >Mac MySQL安裝和MySQL命令列

Mac MySQL安裝和MySQL命令列

2018/04/17安裝MySQL (切記系統通知發過來的的初始密碼)之後初次登入需要密碼安裝MySQL圖形化介面工具(可不安裝)連結資料庫檢視 mysql 埠號的方法是show global variables like 'port';Mac進入MySQL系統命令為

/usr/local/mysql/bin/mysql -u root -p然後輸入密碼進入

首先手動啟動Mysql應用程式開啟終端輸入如下命令:  /usr/local/mysql/bin/mysql -u root -p(注意:Windows下的是:  mysql -u root -p)其中root為使用者名稱。這時會出現如下命令:Enter password:  123456這樣就可以訪問你的
資料庫
伺服器了。                                   資料庫操作下面介紹一些關於從資料庫建立到使用的一些簡單的方法;建立一個名字為mydatabase資料庫:  create database mydatabase ;可以用以下地命令來檢視建立的資料庫是否成功: show databases ;更改資料庫名字 : alter databases  Hdatabase ;刪除資料庫 :drop database [if exists] mydatabase;更改資料庫mydatabase的字符集 :  alter database mydatabase charset GBK ;
進入資料庫:  use mydatabase ;用下面的命令來檢視該資料庫中的表:  show tables ;查詢MySQL支援的儲存引擎:show engines; show engines\g SHOW ENGINES\G查詢預設儲存引擎 :SHOW VARIABLES LIKE 'storage_engine%';表操作用下面的命令來建立表:create table tb_admin (                                      ->id int auto_increment primary key,-> user varchar(30) not null,
-> password varchar(30) not null,-> createtime datetime);對於字元型別的有:char:固定長度,儲存ANSI字元,不足的補英文半形空格。nchar:固定長度,儲存Unicode字元,不足的補英文半形空格varchar:可變長度,儲存ANSI字元,根據資料長度自動變化。nvarchar:可變長度,儲存Unicode字元,根據資料長度自動變化。也就是說:varchar 可變長度,varchar(50)即長度為:50個字元當有存入值時,就跟據實際的值的大小(長度)存入資料。mysql 4.0版本以下,varchar(50), 指的是50位元組,如果存放utf8漢字時,只能存放16個(每個漢字3位元組mysql 5.0版本以上,varchar(50), 指的是50字元,無論存放的是數字、字母還是UTF8漢字每個漢字3位元組),都可以存放50個。用下面的命令來檢查表的建立是否成功:   show tables;檢視 表結構:show columns from 表名 from 庫名;
檢視該表結構,表中欄位的資訊:  desc 表名 ;        describe 表名;       show columns from  表名;查看錶中的某一列 :describe 資料表名 列名;
表增添新欄位以及修改欄位初始表格
增加新欄位 :alter table 表名 add 欄位;
修改欄位定義:alter table 表名 modify 欄位名 定義;
修改欄位名alter table 表名 change 需要修改的欄位名 新欄位名 欄位定義;
刪除欄位:alter table 表名 drop 欄位名;
修改表名:alter table 表名 rename as 新表名;將表tb_userNew 更名為 tb_userOldalter table tb_userNew rename as tb_userOld;重命名錶:rename table 資料表名1 to 資料表名2;將表tb_admin 重新命名為tb_userrename table tb_admin to tb_user;複製表:create table 新表 like 舊錶;建立一份資料表tb_user的備份 tb_userNewcreate table tb_userNew like tb_user;複製表的結構並不複製表的資料如果想要連表的資料一併複製執行下面命令列create tabletb_userNewas select * fromtb_user;查看錶中的資料:select * from 表名;如果檢視tb_admin表中的資料select * from tb_admin;刪除表:drop table [if exists] 資料表名;表中新增資料:查看錶的結構為
命令列進入資料庫use 資料庫名;insert into 表名 values(1,'mr','mrsoft','2018-04-20 18:29:20');#依據表的結構來進行新增查看錶資料資訊:select * from 表名;查看錶中的某一列 :describe 資料表名 列名;
插入資料中的部分資料:use 庫名;insert into 表名(欄位1,欄位2,……) values(資料1,資料2,……);
插入多條資料:use 庫名;insert into 表名(欄位1,欄位2,……)values(資料1,資料2,……),(資料1,資料2,……),(資料1,資料2,……),……
使用insert ……set 語句插入資料:use 資料庫名;insert into 表名set 欄位1=資料1, 欄位2=資料2, 欄位3=資料3,……
插入查詢結果例:把db_admin.tb_mrbook表中的user和pass列插入db_admin.tb_admin中先查詢tb_mrbookselect * from tb_mrbook;insert into db_admin.tb_admin(user,password)select user,pass from tb_mrbook;修改資料將管理員資訊表tb_admin中的mrbccd的管理員密碼123修改為456:update db_admin.tb_admin set password='456' where user='mrbccd';檢視某一欄位行select * from db_admin.tb_admin where user='mrbccd';
刪除資料use db_admin;delete from tb_admin where user='mr';刪除所有資料truncate [table] 資料表名;使用該語句表中的auto_increment自動計數器將重新設定為該列的初始值 無刪除記錄delete刪除auto_increment則不這樣而且刪除會有刪除記錄表的查詢查詢全表資料:use 資料庫名;select * from 資料表名;
查詢表中的一列或者多列:select 欄位1,欄位2,…… from 表名;
檢視某一欄位行where查詢select * from db_admin.tb_admin where user='mrbccd';
從一張表或者多張表中獲取資料例:從tb_admin表和tb_students表中查詢tb_admin.id、tb_admin.user、tb_students.id、tb_students.name欄位的值命令如:select tb_admin.id,tb_admin.user,tb_students.id,tb_students.name from tb_admin,tb_students;總結 前面寫了增刪改最後說一下查查詢所有欄位:select * from 表名;查詢指定欄位:select 欄位名 from 表名;查詢指定資料:select * from 表名 where 欄位1=資料1;查詢關鍵字:select * from 表名 where 條件 [not] in(資料1,資料2,……);帶關鍵字 between and的範圍查詢:select * from 表名 where 條件 [not] between 取值1 and 取值2;帶like的字元匹配查詢:含有兩種萬用字元%和_ A%B 搜尋以A開頭以B結尾的資料 %A%搜尋含有A的資料m_n搜尋以m開頭以n結尾的三個字元 _ 代表任意一個字元中英文字元視作無差距。例:查詢tb_login表中user欄位中包含mr字元的資料:select * *from tb_login where user like '%mr%';使用is [not] null查詢空值用來判斷欄位是否為空值(null)查詢tb_book表中name 欄位的值為空的記錄:select books,row from tb_book where row is null;帶有and or的多條件查詢:select * from tb_login where user='mr' and section='php';select * from tb_login where section='php' or section'程式開發';使用distinct 去除結果中的重複行:select distinct 欄位名 from 表名;使用order by 對查詢結果排序:order by 欄位名 [asc(升序)|desc(降序)];使用group by 分組查詢:只顯示該組中的一條資訊:select id,books,talk from tb_book group by talk;使用limit 限制查詢數量 通過id的升序排列查詢三條資訊:select * from tb_login order by id asc limit 3;從第5條開始查詢3條資訊:select * from tb_login order by id asc limit 5,3;函式select count(*) from tb_login;查詢對於除*以外的任何引數,返回所選擇集合中非null值的行的數目。select sum(row) from tb_book; 顯示row欄位中欄位的總和。select avg(row) from tb_book;顯示row欄位的平均值為0的計算在內,為null的不計算在內。select max(row)from tb_book;顯示row欄位中數字最大的值。select min(row)from tb_book;顯示row欄位中數字最小的值。查詢tb_login表中的記錄,但user欄位值必須在tb_book表中的user欄位中出現過select * from tb_login where user in (select user from tb_book);帶有比較運算子的子查詢:select id,books,row from tb_book where row>=(select row from tb_row where id=1);合併查詢結果:union 和 union allselect user from tb_bookunionselect user from tb_login;合併相同查詢結果項進行輸出顯示select user from tb_bookunion allselect user from tb_login;列舉所有查詢結果執行資料庫查詢時,有完整查詢和模糊查詢之分。一般模糊語句如下:SELECT 欄位 FROM 表 WHERE 某欄位 Like 條件其中關於條件,SQL提供了四種匹配模式:1、%:表示任意0個或多個字元。可匹配任意型別和長度的字元,有些情況下若是中文,請運用兩個百分號(%%)表示。比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'將會把u_name為“張三”,“張貓三”、“三腳貓”,“唐三藏”等等有“三”的記錄全找出來。另外,如果須要找出u_name中既有“三”又有“貓”的記錄,請運用 and條件SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%貓%'若運用 SELECT * FROM [user] WHERE u_name LIKE '%三%貓%'雖然能搜尋出“三腳貓”,但不能搜尋出符合條件的“張貓三”。2、_: 表示任意單個字元。匹配單個任意字元,它常用來限定表示式的字元長度語句:比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'只找出“唐三藏”這樣u_name為三個字且中間一個字是“三”的;再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';只找出“三腳貓”這樣name為三個字且第一個字是“三”的;3、[ ]:表示括號內所列字元中的一個(類似正則表示式)。指定一個字元、字串或範圍,要求所匹配物件為它們中的任一個。比如 SELECT * FROM [user] WHERE u_name LIKE '[張李王]三'將找出“張三”、“李三”、“王三”(而不是“張李王三”);如 [ ] 內有一系列字元(01234、abcde之類的)則可略寫為“0-4”、“a-e”SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'將找出“老1”、“老2”、……、“老9”;4、[^ ]:表示不在括號所列之內的單個字元。其取值和 [] 相同,但它要求所匹配物件為指定字元以外的任一個字元。比如 SELECT * FROM [user] WHERE u_name LIKE '[^張李王]三'將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';將排除“老1”到“老4”,尋找“老5”、“老6”、……5、查詢內容包含萬用字元時由於萬用字元的緣故,導致我們查詢特殊字元“%”、“_”、“[”的語句不能正常實現,而把特殊字元用“[ ]”括起便可正常查詢。據此我們寫出以下函式:function sqlencode(str)str=replace(str,"[","[[]") '此句一定要在最前str=replace(str,"_","[_]")str=replace(str,"%","[%]")sqlencode=strend function在查詢前將待查字串先經該函式處理即可。正則表示式查詢1. 字元 ‘^' 查詢以特定字元或字串開頭的記錄
1SELECT * FROM user WHERE email REGEXP '^a'
字元 ‘^' 匹配以特定字元或字串開頭的記錄,以上語句查詢郵箱以 a 開頭的記錄2. 字元 ' 查詢以特定字元或字串結尾的記錄
1SELECT * FROM user WHERE phone REGEXP '0$'
字元 ‘$' 匹配以特定字元或字串結尾的記錄,以上語句查詢郵箱以 0 結尾的記錄3. 用符號“.”;來代替字串中的任意一個字元
1SELECT * FROM user WHERE email REGEXP 'a.c'
查詢郵箱 a、c 之間有一個字元的記錄,'.' 相當於是一個佔位符。如果寫成 REGEXP ‘a..c' , 即a、c之間有兩個點,則表示郵箱中 a、c 之間要有兩個字元。4.使用“*”匹配多個字元
1SELECT * FROM user WHERE email REGEXP 'm*'
查詢所有郵箱中有 m 的記錄。
1SELECT * FROM user WHERE email REGEXP '^am*'
查詢郵箱字母 a開頭, a後面有字母 m 的記錄。其中'*' 表示0次或以上。5. 用字元“+”表示緊跟的字元
1SELECT * FROM user WHERE email REGEXP 'm+'
查詢所有郵箱中有 m 的記錄。
1SELECT * FROM user WHERE email REGEXP '^am+'
查詢郵箱字母 a開頭, a後面緊跟字母 m 的記錄。其中'+' 表示緊跟字元。6. “|” 分隔條件匹配指定字串
1SELECT * FROM user WHERE email REGEXP 'qq.com|163.com'
正則表示式可以匹配指定的字串,字串之間使用 “|” 分隔。7. “[]” 表示集合匹配指定字串中的任意一個
1SELECT * FROM user WHERE email REGEXP '[az]'
”[]“ 指定一個集合,以上表示查詢郵箱中帶有 a或z或兩者都有的郵箱。也可以用來匹配數字集合,比如 [0-9] 表示集合區間所有數字,[a-z] 表示集合區間所有字母。8. “[^]”匹配指定字元以外的字元
1SELECT * FROM user WHERE email REGEXP '[^a-d1-3]'
如上匹配郵箱中不包含 a、b、c、d 且 不包含 1、2、3 的記錄。9. 使用{n,}{n,m}來指定字串連接出現的次數
1SELECT * FROM user WHERE email REGEXP 'b{2}'
表示字母 b 至少出現 2 次。
1SELECT * FROM user WHERE email REGEXP 'yu{1,3}'
表示字串 ba 至少出現1次,至多出現3次。查詢使用者名稱:user(),system_user(),session_user()索引Mysql各種索引區別:普通索引:最基本的索引,沒有任何限制唯一索引:與"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。主鍵索引:它 是一種特殊的唯一索引,不允許有空值。 全文索引:僅可用於 MyISAM 表,針對較大的資料,生成全文索引很耗時好空間。組合索引:為了更多的提高mysql效率可建立組合索引,遵循”最左字首“原則。建立複合索引時應該將最常用(頻率)作限制條件的列放在最左邊,依次遞減。組合索引最左欄位用in是可以用到索引的,最好explain一下select。建立索引(1)在建立資料表的時候建立索引create table table_name(屬性名 資料型別[約束條件],屬性名 資料型別[約束條件],屬性名 資料型別[約束條件],……屬性名 屬性型別[UNIQUE|FULLTEXT|SPATIAL] INDEX }KEY[別名](屬性名1 [長度])[asc|desc]));使用show create table語句可以檢視完整表結構例:建立score資料表並在該表的id欄位上建立普通索引create table score(id int(11) auto_increment primary key not null,name varchar(50) not null,math int(5) not null,index(id));例:建立address資料表,並在該表的id欄位上建立唯一索引create table address(id int(11) auto_increment primary key not null,name varchar(50) not null,math int(5) not null,unique index address(id asc));例:建立cards資料表,並在該表的info欄位上建立全文索引(全文索引的建立只能作用在char varchar text型別的欄位上,建立全文索引需要使用fulltext 引數進行約束)create table cards(id int(11) auto_increment primary key not null,name varchar(50) not null,math int(5) not null,number bigint(11),info varchar(50),