安裝環境:
Windows XP
Mysql 4.0.17 從 sql.com">http://www.mysql.com下載
EMS Mysql Query 1.6.0.1
本機IP:172.5.1.183
2、安裝Mysql,采用默認安裝即可
目錄選擇在c:\mysql,不要修改默認目錄
3、啟動Mysql
安裝為服務:c:\mysql\bin\mysqld --install
啟動Mysql: net start mysql
停止Mysql: net stop mysql
4、系統創建的數據庫有mysql,test
mysql保存系統數據
test數據庫用來測試
5、默認登陸方式
在本機
c:\mysql\bin\mysql -uroot
c:\mysql\bin\mysql
遠程
mysql -h 172.5.1.183 -uroot
這些是在mysql.user表中,系統默認存在4條數據
use mysql
select host,user,password from user;
+-----------+------+----------+
host user password
+-----------+------+----------+
localhost root
% root
localhost
%
+-----------+------+----------+
這些數據代表的意義:
用戶名為root,密碼為空的用戶可以從本機和任何遠程主機登陸
任何用戶名,密碼為空的用戶可以從本機登陸
用戶名為空,密碼為空的用戶不可以從遠程登陸 (user中后面的字段為N,所以無法登陸)
修改root密碼
mysql -uroot
use mysql
update user set password=PASSWORD("root") where user='root' and host='localhost'
下次就需要用mysql -uroot -proot才可以登陸
在遠程或本機可以使用 mysql -h 172.5.1.183 -uroot 登陸,這個根據第二行的策略確定
權限修改生效:
1)net stop mysql
net start mysql
2)c:\mysql\bin\mysqladmin flush-privileges
3)登陸mysql后,用flush privileges語句
6、創建數據庫staffer
create database staffer;
7、下面的語句在mysql環境在執行
顯示用戶擁有權限的數據庫 show databases;
切換到staffer數據庫 use staffer;
顯示當前數據庫中有權限的表 show tables;
顯示表staffer的結構 desc staffer;
8、創建測試環境
1)創建數據庫staffer
mysql> create database staffer
2)創建表staffer,department,position,depart_pos
create table s_position
(
id int not null auto_increment,
name varchar(20) not null default '經理', #設定默認值
description varchar(100),
primary key PK_positon (id) #設定主鍵
);
create table department
(
id int not null auto_increment,
name varchar(20) not null default '系統部', #設定默認值
description varchar(100),
primary key PK_department (id) #設定主鍵
);
create table depart_pos
(
department_id int not null,
position_id int not null,
primary key PK_depart_pos (department_id,position_id) #設定復和主鍵
);
create table staffer
(
id int not null auto_increment primary key, #設定主鍵
name varchar(20) not null default '無名氏', #設定默認值
department_id int not null,
position_id int not null,
unique (department_id,position_id) #設定唯一值
);
3)刪除
mysql>
drop table depart_pos;
drop table department;
drop table s_position;
drop table staffer;
drop database staffer;
9、修改結構
mysql>
#表position增加列test
alter table position add(test char(10));
#表position修改列test
alter table position modify test char(20) not null;
#表position修改列test默認值
alter table position alter test set default 'system';
#表position去掉test默認值
alter table position alter test drop default;
#表position去掉列test
alter table position drop column test;
#表depart_pos刪除主鍵
alter table depart_pos drop primary key;
#表depart_pos增加主鍵
alter table depart_pos add primary key PK_depart_pos (department_id,position_id);
10、操作數據
#插入表department
insert into department(name,description) values('系統部','系統部');
insert into department(name,description) values('公關部','公關部');
insert into department(name,description) values('客服部','客服部');
insert into department(name,description) values('財務部','財務部');
insert into department(name,description) values('測試部','測試部');
#插入表s_position
insert into s_position(name,description) values('總監','總監');
insert into s_position(name,description) values('經理','經理');
insert into s_position(name,description) values('普通員工','普通員工');
#插入表depart_pos
insert into depart_pos(department_id,position_id)
select a.id department_id,b.id postion_id
from department a,s_position b;
#插入表staffer
insert into staffer(name,department_id,position_id) values('陳達治',1,1);
insert into staffer(name,department_id,position_id) values('李文賓',1,2);
insert into staffer(name,department_id,position_id) values('馬佳',1,3);
insert into staffer(name,department_id,position_id) values('亢志強',5,1);
insert into staffer(name,department_id,position_id) values('楊玉茹',4,1);
11、查詢及刪除操作
#顯示系統部的人員和職位
select a.name,b.name department_name,c.name position_name
from staffer a,department b,s_position c
where a.department_id=b.id and a.position_id=c.id and b.name='系統部';
#顯示系統部的人數
select count(*) from staffer a,department b
where a.department_id=b.id and b.name='系統部'
#顯示各部門的人數
select count(*) cou,b.name
from staffer a,department b
where a.department_id=b.id
group by b.name;
#刪除客服部
delete from department where name='客服部';
#將財務部修改為財務一部
update department set name='財務一部' where name='財務部';
12、備份和恢復
備份數據庫staffer
c:\mysql\bin\mysqldump -uroot -proot staffer>e:\staffer.sql
得到的staffer.sql是一個sql腳本,不包括建庫的語句,所以你需要手工
創建數據庫才可以導入
恢復數據庫staffer,需要創建一個空庫staffer
c:\mysql\bin\mysql -uroot -proot staffer<staffer.sql
如果不希望后來手工創建staffer,可以
c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sql
mysql -uroot -proot >e:\staffer.sql
但這樣的話系統種就不能存在staffer庫,且無法導入其他名字的數據庫,
當然你可以手工修改staffer.sql文件
13、從文本向數據庫導入數據
1)使用工具c:\mysql\bin\mysqlimport
這個工具的作用是將文件導入到和去掉文件擴展名名字相同的表里,如
staffer.txt,staffer都是導入到staffer表中
常用選項及功能如下
-d or --delete 新數據導入數據表中之前刪除數據數據表中的所有信息
-f or --force 不管是否遇到錯誤,mysqlimport將強制繼續插入數據
-i or --ignore mysqlimport跳過或者忽略那些有相同唯一
關鍵字的行, 導入文件中的數據將被忽略。
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了,
你在更新數據庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代
表中有相同唯一關鍵字的記錄。
--fields-enclosed- by= char
指定文本文件中數據的記錄時以什么括起的, 很多情況下
數據以雙引號括起。 默認的情況下數據是沒有被字符括起的。
--fields-terminated- by=char
指定各個數據的值之間的分隔符,在句號分隔的文件中,
分隔符是句號。您可以用此選項指定數據之間的分隔符。
默認的分隔符是跳格符(Tab)
--lines-terminated- by=str
此選項指定文本文件中行與行之間數據的分隔字符串
或者字符。 默認的情況下mysqlimport以newline為行分隔符。
您可以選擇用一個字符串來替代一個單個的字符:
一個新行或者一個回車。
mysqlimport命令常用的選項還有-v 顯示版本(version),
-p 提示輸入密碼(password)等。
這個工具有個問題,無法忽略某些列,這樣對我們的數據導入有很大的麻煩,雖然
可以手工設置這個字段,但會出現莫名其妙的結果,我們做一個簡單的示例
我們定義如下的depart_no.txt,保存在e盤,間隔為制表符\t
10 10
11 11
12 24
執行如下命令
c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt
在這里沒有使用列的包圍符號,分割采用默認的\t,因為采用別的符號會有問題,
不知道是不是windows的原因
2)Load Data INFILE file_name into table_name(column1_name,column2_name)
這個命令在mysql>提示符下使用,優點是可以指定列導入,示例如下
c:\mysql\bin\mysql -uroot -proot staffer
mysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);
這兩個工具在Windows下使用都有問題,不知道是Windows的原因還是中文的問題,
而且不指定的列它產生了空值,這顯然不是我們想要的,所以謹慎使用這些工具
Windows XP
Mysql 4.0.17 從 sql.com">http://www.mysql.com下載
EMS Mysql Query 1.6.0.1
本機IP:172.5.1.183
2、安裝Mysql,采用默認安裝即可
目錄選擇在c:\mysql,不要修改默認目錄
3、啟動Mysql
安裝為服務:c:\mysql\bin\mysqld --install
啟動Mysql: net start mysql
停止Mysql: net stop mysql
4、系統創建的數據庫有mysql,test
mysql保存系統數據
test數據庫用來測試
5、默認登陸方式
在本機
c:\mysql\bin\mysql -uroot
c:\mysql\bin\mysql
遠程
mysql -h 172.5.1.183 -uroot
這些是在mysql.user表中,系統默認存在4條數據
use mysql
select host,user,password from user;
+-----------+------+----------+
host user password
+-----------+------+----------+
localhost root
% root
localhost
%
+-----------+------+----------+
這些數據代表的意義:
用戶名為root,密碼為空的用戶可以從本機和任何遠程主機登陸
任何用戶名,密碼為空的用戶可以從本機登陸
用戶名為空,密碼為空的用戶不可以從遠程登陸 (user中后面的字段為N,所以無法登陸)
修改root密碼
mysql -uroot
use mysql
update user set password=PASSWORD("root") where user='root' and host='localhost'
下次就需要用mysql -uroot -proot才可以登陸
在遠程或本機可以使用 mysql -h 172.5.1.183 -uroot 登陸,這個根據第二行的策略確定
權限修改生效:
1)net stop mysql
net start mysql
2)c:\mysql\bin\mysqladmin flush-privileges
3)登陸mysql后,用flush privileges語句
6、創建數據庫staffer
create database staffer;
7、下面的語句在mysql環境在執行
顯示用戶擁有權限的數據庫 show databases;
切換到staffer數據庫 use staffer;
顯示當前數據庫中有權限的表 show tables;
顯示表staffer的結構 desc staffer;
8、創建測試環境
1)創建數據庫staffer
mysql> create database staffer
2)創建表staffer,department,position,depart_pos
create table s_position
(
id int not null auto_increment,
name varchar(20) not null default '經理', #設定默認值
description varchar(100),
primary key PK_positon (id) #設定主鍵
);
create table department
(
id int not null auto_increment,
name varchar(20) not null default '系統部', #設定默認值
description varchar(100),
primary key PK_department (id) #設定主鍵
);
create table depart_pos
(
department_id int not null,
position_id int not null,
primary key PK_depart_pos (department_id,position_id) #設定復和主鍵
);
create table staffer
(
id int not null auto_increment primary key, #設定主鍵
name varchar(20) not null default '無名氏', #設定默認值
department_id int not null,
position_id int not null,
unique (department_id,position_id) #設定唯一值
);
3)刪除
mysql>
drop table depart_pos;
drop table department;
drop table s_position;
drop table staffer;
drop database staffer;
9、修改結構
mysql>
#表position增加列test
alter table position add(test char(10));
#表position修改列test
alter table position modify test char(20) not null;
#表position修改列test默認值
alter table position alter test set default 'system';
#表position去掉test默認值
alter table position alter test drop default;
#表position去掉列test
alter table position drop column test;
#表depart_pos刪除主鍵
alter table depart_pos drop primary key;
#表depart_pos增加主鍵
alter table depart_pos add primary key PK_depart_pos (department_id,position_id);
10、操作數據
#插入表department
insert into department(name,description) values('系統部','系統部');
insert into department(name,description) values('公關部','公關部');
insert into department(name,description) values('客服部','客服部');
insert into department(name,description) values('財務部','財務部');
insert into department(name,description) values('測試部','測試部');
#插入表s_position
insert into s_position(name,description) values('總監','總監');
insert into s_position(name,description) values('經理','經理');
insert into s_position(name,description) values('普通員工','普通員工');
#插入表depart_pos
insert into depart_pos(department_id,position_id)
select a.id department_id,b.id postion_id
from department a,s_position b;
#插入表staffer
insert into staffer(name,department_id,position_id) values('陳達治',1,1);
insert into staffer(name,department_id,position_id) values('李文賓',1,2);
insert into staffer(name,department_id,position_id) values('馬佳',1,3);
insert into staffer(name,department_id,position_id) values('亢志強',5,1);
insert into staffer(name,department_id,position_id) values('楊玉茹',4,1);
11、查詢及刪除操作
#顯示系統部的人員和職位
select a.name,b.name department_name,c.name position_name
from staffer a,department b,s_position c
where a.department_id=b.id and a.position_id=c.id and b.name='系統部';
#顯示系統部的人數
select count(*) from staffer a,department b
where a.department_id=b.id and b.name='系統部'
#顯示各部門的人數
select count(*) cou,b.name
from staffer a,department b
where a.department_id=b.id
group by b.name;
#刪除客服部
delete from department where name='客服部';
#將財務部修改為財務一部
update department set name='財務一部' where name='財務部';
12、備份和恢復
備份數據庫staffer
c:\mysql\bin\mysqldump -uroot -proot staffer>e:\staffer.sql
得到的staffer.sql是一個sql腳本,不包括建庫的語句,所以你需要手工
創建數據庫才可以導入
恢復數據庫staffer,需要創建一個空庫staffer
c:\mysql\bin\mysql -uroot -proot staffer<staffer.sql
如果不希望后來手工創建staffer,可以
c:\mysql\bin\mysqldump -uroot -proot --databases staffer>e:\staffer.sql
mysql -uroot -proot >e:\staffer.sql
但這樣的話系統種就不能存在staffer庫,且無法導入其他名字的數據庫,
當然你可以手工修改staffer.sql文件
13、從文本向數據庫導入數據
1)使用工具c:\mysql\bin\mysqlimport
這個工具的作用是將文件導入到和去掉文件擴展名名字相同的表里,如
staffer.txt,staffer都是導入到staffer表中
常用選項及功能如下
-d or --delete 新數據導入數據表中之前刪除數據數據表中的所有信息
-f or --force 不管是否遇到錯誤,mysqlimport將強制繼續插入數據
-i or --ignore mysqlimport跳過或者忽略那些有相同唯一
關鍵字的行, 導入文件中的數據將被忽略。
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了,
你在更新數據庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代
表中有相同唯一關鍵字的記錄。
--fields-enclosed- by= char
指定文本文件中數據的記錄時以什么括起的, 很多情況下
數據以雙引號括起。 默認的情況下數據是沒有被字符括起的。
--fields-terminated- by=char
指定各個數據的值之間的分隔符,在句號分隔的文件中,
分隔符是句號。您可以用此選項指定數據之間的分隔符。
默認的分隔符是跳格符(Tab)
--lines-terminated- by=str
此選項指定文本文件中行與行之間數據的分隔字符串
或者字符。 默認的情況下mysqlimport以newline為行分隔符。
您可以選擇用一個字符串來替代一個單個的字符:
一個新行或者一個回車。
mysqlimport命令常用的選項還有-v 顯示版本(version),
-p 提示輸入密碼(password)等。
這個工具有個問題,無法忽略某些列,這樣對我們的數據導入有很大的麻煩,雖然
可以手工設置這個字段,但會出現莫名其妙的結果,我們做一個簡單的示例
我們定義如下的depart_no.txt,保存在e盤,間隔為制表符\t
10 10
11 11
12 24
執行如下命令
c:\mysql\bin\mysqlimport -uroot -proot staffer e:\depart_pos.txt
在這里沒有使用列的包圍符號,分割采用默認的\t,因為采用別的符號會有問題,
不知道是不是windows的原因
2)Load Data INFILE file_name into table_name(column1_name,column2_name)
這個命令在mysql>提示符下使用,優點是可以指定列導入,示例如下
c:\mysql\bin\mysql -uroot -proot staffer
mysql>load data infile "e:/depart_no.txt" into depart_no(department_id,position_id);
這兩個工具在Windows下使用都有問題,不知道是Windows的原因還是中文的問題,
而且不指定的列它產生了空值,這顯然不是我們想要的,所以謹慎使用這些工具