一、MySQL数据库的安装与启动
1、从Windows命令行启动和关闭MySQL服务器
C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqld --console
C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqldadmin -u root -p shutdown
2、以Windows服务方式管理MySQL服务器
C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqld --install 服务名 --安装MySQL服务,默认服务名为MYSQL
NET START MYSQL --启动MySQL服务
NET STOP MYSQL --停止MySQL服务
C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqld --remove --卸载MySQL服务
3、测试MySQL安装
C:/> C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqlshow -u root -p mysql
C:/> C:/Program Files/MySQL/MySQL Server 5.1/bin/mysqladmin -u root -p version status proc
C:/> C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql -u root -p test
二、MySQL数据库的基本使用
C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql -uroot
mysql>show databases;
显示命令
1、显示数据库列表:
show databases;
初始时MySQL有两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,修改密码和新增用户,实际上就是操作mysql库。
2、显示库中的数据表:
use mysql; --打开库
show tables;
3、显示数据表的结构:
desc[ribe] 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;
9、显示当前数据库
select database();
三、MySQL命令行的基本使用
1、第一条命令
mysql> select version(),current_date();
+----------------+-----------------+
| version() | current_date() |
+----------------+-----------------+
| 3.23.25a-debug | 2001-05-17 |
+----------------+-----------------+
1 row in set (0.01 sec)
mysql>
此语句显示mysql服务器的版本号和当前日期。mysql语句不区分大小写。
2、多行语句
一条命令可以分成多行输入,直到出现分号“;”为止:
mysql> select
-> USER()
-> ,
-> now()
->;
+--------------------+---------------------+
| USER() | now() |
+--------------------+---------------------+
| ODBC@localhost | 2001-05-17 22:59:15 |
+--------------------+---------------------+
1 row in set (0.06 sec)
mysql>
注意中间的逗号和最后的分号的使用方法。
3、一行多命令
输入如下命令:
mysql> SELECT USER(); SELECT NOW();
+------------------+
| USER() |
+------------------+
| ODBC@localhost |
+------------------+
1 row in set (0.00 sec)
+---------------------+
| NOW() |
+---------------------+
| 2001-05-17 23:06:15 |
+---------------------+
1 row in set (0.00 sec)
mysql>
注意中间的分号,命令之间用分号隔开。
4、取消命令
如果不想执行正在输入过程中的一个命令,输入/c取消它:
mysql> SELECT
-> USER()
-> /c
mysql>
四、创建并使用数据库
drop database if exists school; --如果存在SCHOOL则删除
create database school; --建立库SCHOOL
use school; --打开库SCHOOL
create table teacher --建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
);
--数据类型
1. 数值类型:
tinyint //1个字节
samllint //2个字节
int,integer //4个字节
bigint //8个字节
float //4个字节
decimal(M,D),numeric(M,D) //存储精确数值,M为精度,D为小数位数
bit(M) //存储位字段,M范围为1到64
2. 字符类型:
char(M)
varchar(M)
binary(M)
varbinary(M)
blob,text
3. 日期类型:
datetime 'YYYY-MM-DD HH:MM:SS'
date 'YYYY-MM-DD'
timestamp
time 'HH:MM:SS'
year YYYY
--插入语句
insert into teacher (name,address,year) values('glchengang','深圳一中','1976-10-10');
insert into teacher (name,address,year) values('jack','深圳一中','1975-12-23');
--使用模式匹配筛选数据
使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。
mysql> SELECT * FROM teacher WHERE name LIKE 'g%' OR name LIKE '_ack';
--使用正则表达式匹配数据
使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)进行正则表达式匹配
mysql> SELECT * FROM teacher WHERE name RLIKE '^g'; --匹配字段name以g开头的所有数据
--使用事务
mysql> CREATE TABLE CUSTOMER (A INT, B CHAR (20), INDEX (A))
-> ENGINE=InnoDB;
mysql> BEGIN;
mysql> INSERT INTO CUSTOMER VALUES (10, 'Heikki');
mysql> COMMIT;
mysql> SET AUTOCOMMIT=0;
mysql> INSERT INTO CUSTOMER VALUES (15, 'John');
mysql> ROLLBACK;
mysql> SELECT * FROM CUSTOMER;
+------+--------+
| A | B |
+------+--------+
| 10 | Heikki |
+------+--------+
1 row in set (0.00 sec)
mysql>
--建立外键:
CREATE TABLE parent(id INT NOT NULL,PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE child(id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE
) TYPE=INNODB;
五、执行sql脚本和导入数据
1、执行sql脚本
方式1:
C:/> C:/Program Files/MySQL/MySQL Server 5.1/bin/mysql -u root -p < sql脚本文件
方式2:
mysql> source sql脚本文件
mysql> /. sql脚本文件
2、将文本数据导入数据库中
a、文本数据应符合的格式:
数据之间用tab键隔开,null值用n来代替。例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
b、数据传入命令:
mysql> load data local infile '文件名' into table 表名;
注意:你最好将文件复制到mysqlbin目录下,并且要先用use命令打表所在的库。
六、备份数据库:(命令在DOS的mysqlbin目录下执行)
mysqldump --opt school>school.sql --将数据库school备份到school.sql文件,school.sql是一个文本文件,文件名可任取。
七、MySQL安全
1、增加新用户
方法一:使用create user语句添加新用户,使用grant语句授权
create user user1 idetified by 'pwd1';
grant all privileges on *.* to 'user1'@'localhost' identified by 'pwd1' with grant option; --超级用户,具有完全权限,只
能从本机连接
grant all privileges on *.* to 'user1' identified by 'pwd1' with grant option; --超级用户,具有完全权限,可以从其它主机
连接
grant reload,process on *.* to 'admin'@'localhost'; --没有密码,只能从本机连接
方法二:直接操作MySQL授权表
mysql>insert into mysql.user (host,user,password) values('localhost','user1','');
mysql>insert into mysql.user (host,user,password) values('localhost','user1',PASSWORD('')); --加密密码
mysql>flush privileges; --重新授权表
2、删除用户
drop user user1;
3、重新设置密码
方法一:
mysqladmin -u user_name -h host_name password 'newpwd'
方法二:
mysql>set password for user_name = PASSWORD('newpwd');
mysql>set password = password('newpwd'); --修改自己的密码
八、创建存储过程
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
===============
九、字符编码
my.ini
[mysql]
default-character-set = utf8
[mysqld]
port=3306
character-set_server=utf8