天天看點

mac_MySQL安裝

一、下載下傳和安裝

到MySQL官網上http://dev.mysql.com/downloads/mysql/,下載下傳Community Server版 約164M

出現如下界面,選擇【No thanks,just start my download】

下載下傳完的檔案為:mysql-5.6.20-osx10.8-x86_64.dmg

mac_MySQL安裝

1.點選,安裝包裡的pkg檔案,進行安裝

mac_MySQL安裝

安裝後,會在根目錄下的usr/local/生成一個MySQL的檔案夾

mac_MySQL安裝

安裝好後,再系統偏好設定的其他裡,會出現如下圖示:

mac_MySQL安裝

3.點選此圖示,跳出對話框

mac_MySQL安裝
mac_MySQL安裝

點選Start MySQL Server按鈕,啟動mysql

二、打開終端

在終端輸入:

cd /etc/
      
sudo chmod +w bashrc      

sudo vi /etc/bashrc

 在bashrc的末尾增加以下兩個指令别名,便于快速使用mysql

#mysql

alias mysql=

'/usr/local/mysql/bin/mysql'

alias mysqladmin=

'/usr/local/mysql/bin/mysqladmin'

如果:更改/etc/bashrc後沒有生效, 那麼打開~/.bash_profile檔案, 然後把上面的兩行指令别名加到裡面, 最後在終端執行source ~/.bash_profile

提示:在bashrc中添加指令别名之後,需要重新啟動終端,方可使用快捷指令。

mac_MySQL安裝
mac_MySQL安裝

三、設定mysql root帳号的密碼

mysqladmin -u root password root      

2.如果設定完密碼後,需要修改,執行指令

mysqladmin -u root -p  password 最新密碼      

接着會提示輸入密碼,此時輸入舊密碼,回車

 四、連接配接資料庫

mysql -u root -p      

然後提示輸入密碼,輸入三中設定的初始密碼

mac_MySQL安裝

2.如果登陸遠端主機上的mysql資料庫

mysql -h 主機位址 -u 使用者名 -p 使用者密碼      

五. 配置PHPAdmin(非必須)

1. 下載下傳PHPAdmin,解壓縮到~/Sites目錄下,并将目錄重命名為:phpmyadmin;

2.  在浏覽器中輸入:

http:

//localhost/~apple/phpmyadmin/setup/

 添加一個伺服器配置即可。

 六. 設定資料庫預設字元集 (必須)

在終端輸入:

mysql -u root -p root

# 建立名為 mydb 的資料庫

create database mydb;

# 将 mydb 的預設字元集設定為 utf8

#alter database mydb

default

character

set

= utf8; 這個有問題,用下面的

ALTER DATABASE `db1` DEFAULT CHARACTER SET utf8

 注:mysql預設使用的字元集是latin1,不支援中文,需要設定一下哦。

mac_MySQL安裝

五、執行常用的mysql資料庫操作

首先,以root權限連接配接mysql

mysql -u root -proot      

然後,輸入root的密碼

mac_MySQL安裝

1、為新使用者授權

格式如下:

grant 操作權限 on 資料庫.* to 使用者名@登陸主機位址 identified by '密碼';      

意思是:授予,某主機上的某使用者(附帶該使用者的登陸密碼)在某資料庫上,執行某些操作的權限

(1)比如:任意主機上("%"),使用者(使用者名:test1,密碼:adc)在所有資料庫上,執行任意操作的權限(很危險)

grant all privileges on *.* to test1@"%" identified by "abc";      

其中all privileges表示查詢,插入,修改,删除的權限:select,insert,update,delete

以上指令等價于:

grant select,insert,update,delete on *.* to test1@"%" identified by "abc";      
重新整理權限      
flush privileges;      

 (2)比如:授權本地主機上的使用者操作資料庫的權限

建立資料庫(比如:openfire)

create database openfire;      

授予本地主機使用者(使用者名:test2,密碼:123)通路資料庫(資料庫名稱:openfire)的操作權限

grant all privileges on openfire.* to [email protected] identified by "123";      
flush privileges;      

 之後,就可以用新的使用者,通路openfire資料庫了

2.更新指定帳戶的密碼(使用者名:test1,新密碼:1234)

update mysql.user set password=password('1234') where User="test1" and Host="localhost";      

 3.删除使用者

先使用mysql資料庫

use mysql;      

删除mysql資料庫中user表中的某個本地使用者(test7)

delete from user where User="test7" and Host="localhost";      

 4.顯示指令

(1)顯示所有資料庫清單

show databases;      

初始化隻有兩個資料庫,mysql和test

注意:MYSQL的系統資訊都存儲在mysql庫中,比如:修改密碼和新增使用者,實際上就是用這個庫進行操作

(2)打開某個資料庫(比如資料庫:openfire)

use openfire;      
mac_MySQL安裝

(3)顯示本庫中的所有表

show tables;      

(4)顯示某表(table1)的結構

describe table1;      

(5)建庫

create database 庫名;      

(6)建表

use 庫名;

create table 表名 (字段設定清單);      

(7)删庫

drop database 庫名;      

(8)删表

drop table 表名;      

(9)将表中的記錄清空

delete from 表名;      

(10)顯示表中的記錄

select * from 表名;      

六、退出mysql

exit      
mac_MySQL安裝

 七、啟動、停止、重新開機MySQL (bash指令下,密碼是系統登入密碼)

啟動Mysql服務      

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start 停止Mysql服務 sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop 重新開機Mysql服務 sudo /Library/StartupItems/MySQLCOM/MySQLCOM restart

mac_MySQL安裝

八、其他常見表操作

bash下鍵入:mysql -uroot -p

回車後輸入密碼再回車

mysql -uroot -proot

臨時更改視窗字元編碼:輸入、結果

set character_set_client=gb2312;

set character_set_results=gb2312;

用庫:

use beyond;

查表:

show tables;

mysql> \s

mac_MySQL安裝

=======================================================

使用指定utf8建庫

mysql>create database mydb2 character set utf8;

mysql> create database mydb3 character set utf8 collate utf8_general_ci;

Query OK, 1 row affected (0.03 sec)

mac_MySQL安裝

mysql> drop database beyond;

mysql> show character set;

+----------+----------------+--------------+---------------+

| Charset  | Description    | Default collation   | Maxlen |

+----------+----------------+---------------------+--------+

utf8       | UTF-8 Unicode  | utf8_general_ci     |      3 |

mysql>show create database mydb2;

CREATE DATABASE `mydb2`

mysql>create database mydb3 character set utf8 collate utf8_general_ci;

>>alter database mydb2 character set gb2312;

>>show create database mydb2;

mac_MySQL安裝

示範恢複和備份

create database mydb4;

use mydb4;

create table user

(

name varchar(20)

);

insert into user(name) values('beyond');

select * from user;

-----看到user表有資料

mysql管理者的使用者名和密碼:root  root

建立一個名稱為mydb1的資料庫

create database mydb1;

show databases;

建立一個使用utf-8字元集的mydb2資料庫。

create database mydb2 character set utf8;

建立一個使用utf-8字元集,并帶校對規則的mydb3資料庫。

create database mydb3 character set utf8 collate utf8_general_ci;

檢視前面建立的mydb2資料庫的定義資訊

show create database mydb2;

删除前面建立的mydb1資料庫

drop database mydb1;

檢視伺服器中的資料庫,并把其中某一個庫的字元集修改為gb2312;

alter database mydb2 character set gb2312;

show create database mydb2;

示範恢複和備份

create database mydb4;

use mydb4;

create table user

(

name varchar(20)

);

insert into user(name) values('beyond');

select * from user;

-----看到user表有資料

對mydb4作備份操作,啟動一個bash指令行視窗,執行如下指令

mysqldump -uroot -p tt>c:\tt.sql

示範恢複

1.先删除庫

drop database tt;

2.恢複tt庫(1)

  2.1  為恢複庫,要先建立庫  create database tt;

  2.2  再恢複tt庫 

use tt; 

source c:\tt.sql   (source:可以執行一個 sql腳本)

3.恢複tt庫(2)

  2.1  為恢複庫,要先建立庫  create database tt;

  2.2  恢複庫   mysql -uroot -proot tt<c:\1.sql;   (window指令)

建立一個員工表

use mydb2;

create table employee

(

id int,

name varchar(40),

sex varchar(4),

birthday date,

entry_date date,

job varchar(40),

salary decimal(8,2),

resume text

);

show tables;  檢視庫的所有表

show create table employee;   檢視表的建立細節

desc employee;     看表結構

在上面員工表的基本上增加一個image列。

alter table employee add image blob;

修改job列,使其長度為60。

alter table employee modify job varchar(60);

删除sex列

alter table employee drop sex;

表名改為user。

rename table employee to user;

修改表的字元集為utf-8

alter table user character set utf8;

列名name修改為username

alter table user change column name username varchar(40);

删除表

drop table user;

使用insert語句向表中插入三個員工的資訊。

rename table user to employee;

insert into employee(id,username,birthday,entry_date,job,salary,resume) values(1,'aaa','1980-09-09','1980-09-09','bbb',90,'aaaaa');

select * from employee;

插入資料的細節1

insert into employee values(1,'aaa','1980-09-09','1980-09-09','bbb',90,'aaaaa');

插入資料的細節2

insert into employee values('1','aaa','1980-09-09','1980-09-09','bbb','90','aaaaa');

插入資料的細節3(插入中文)

要告訴mysql客戶采用gb2312編碼

show variables like 'chara%';

set character_set_client=gb2312;

insert into employee(id,username) values('3','張三');

要想檢視時不亂碼

show variables like 'chara%';

set character_set_results=gb2312;

select * from employee;

将所有員工薪水修改為5000元。

update employee set salary=5000;

将姓名為’bbb’的員工薪水修改為3000元。

update employee set salary=3000 where username='bbb';

将姓名為’bbb的員工薪水修改為4000元,job改為ccc。

update employee set salary=4000,job='ccc' where username='bbb';

将bbb的薪水在原有基礎上增加1000元。

update employee set salary=salary+1000 where username='bbb';

更新要注意的問題

update employee set username='ccc',salary=9000,birthday='1980-09-09',.....................

update  where id=1;

删除表中名稱為’zs’的記錄。

delete from employee where username='bbb';

删除表中所有記錄。

delete from employee;

使用truncate删除表中記錄。

truncate table employee;

查詢表中所有學生的資訊。

select * from student;

查詢表中所有學生的姓名和對應的英語成績。

select name,english from student;

過濾表中重複的英語資料。

select distinct english from student;

在所有學生總分上加10分特長分。

select name,(chinese+english+math)+10 from student;

統計每個學生的總分。

select name,(chinese+english+math) from student;

使用别名表示學生分數。

select name as 姓名,(chinese+english+math)+10 as 總分 from student;

select name 姓名,(chinese+english+math)+10  總分 from student;

查詢姓名為wu的學生成績

select * from student where name='王五';

查詢英語成績大于90分的同學

select * from student where english>'90';

查詢總分大于200分的所有同學

select name from student where (chinese+english+math)>200;

查詢英語分數在 80-90之間的同學。

select name from student where english>80 and english<90;

select name from student where english between 80 and 90;  == select name from student where english>=80 and english<=90;

查詢數學分數為89,90,91的同學。

select * from student where math in(89,90,91);

查詢所有姓李的學生成績。

select * from student where name like '李%';

select * from student where name like '李_';

查詢數學分>80,國文分>80的同學。

select * from student where math>80 and chinese>80;

對數學成績排序後輸出。

select name,math from student order by math; 

對總分排序後輸出,然後再按從高到低的順序輸出

select name 姓名,(chinese+english+math) 總分 from student order by (chinese+english+math) desc;

select name 姓名,(chinese+english+math) 總分 from student order by 總分 desc;

對姓李的學生成績排序輸出

select * from student where name like '李%' order by (chinese+english+math) desc;

統計一個班級共有多少學生?

select count(name) from student;

select count(*) from student;

統計數學成績大于90的學生有多少個?

select count(*) from student where math>80;

統計總分大于250的人數有多少?

select count(*) from student where (chinese+english+math)>250;

關于 count的函數的細節 (count隻統有值的行)

統計一個班級數學總成績?

select sum(math) from student;

統計一個班級國文、英語、數學各科的總成績

select sum(chinese),sum(english),sum(math) from student;

統計一個班級國文、英語、數學的成績總和

select sum(chinese+english+math) from student;

統計一個班級國文成績平均分

select sum(chinese)/count(*) from student;

統計一個班級國文成績平均分

select avg(chinese) from student;

求一個班級總分平均分

select avg(chinese+math+english) from student;

求班級最高分和最低分

select max(chinese+math+english),min(chinese+math+english) from student;

對訂單表中商品歸類後,顯示每一類商品的總價

select product,sum(price) from orders group by product;

查詢購買了幾類商品,并且每類總價大于100的商品

select product from orders group by product having sum(price)>100;

定義主鍵限制(每一個表必須有一個主鍵列)

create table student

(

id int  primary key,

name varchar(40)

);

定義主鍵自動增長

create table student

(

id int  primary key auto_increment,

name varchar(40)

);

定義唯一限制

drop table student;

create table student

(

id int primary key auto_increment,

name varchar(40) unique

);

定義非空限制

drop table student;

create table student

(

id int primary key auto_increment,

name varchar(40) unique not null

);

定義外鍵限制

create table husband

(

id int primary key,

name varchar(40)

);

create table wife

(

id int primary key,

name varchar(40),

husband_id int,

constraint husband_id_FK foreign key(husband_id) references husband(id)

);

一對多或多對一的對象存到資料庫時,表的設計方案

部門和員工

create table department

(

id int primary key,

name varchar(40)

);

create table employee

(

id int primary key,

name varchar(40),

salary decimal(8,2),

department_id int,

constraint department_id_FK foreign key(department_id) references department(id)

);

多對多對象的表的設計(老師和學生)

create table teacher

(

id int primary key,

name varchar(40),

salary decimal(8,2)

);

create table student

(

id int primary key,

name varchar(40)

);

create table teacher_student

(

teacher_id int,

student_id int,

primary key(teacher_id,student_id),

constraint teacher_id_FK foreign key(teacher_id) references teacher(id),

constraint student_id_FK foreign key(student_id) references student(id)

);

一對一的對象的資料庫設計

create table person

(

id int primary key,

name varchar(40)

);

create table idcard

(

id int primary key,

city varchar(40),

constraint id_FK foreign key(id) references person(id)

);

自連接配接的表

create table person

(

id int primary key,

name varchar(40),

parent_id int,

constraint parent_id_FK foreign key(parent_id) references person(id)

);