一、启停MySQL数据库服务
假如安装的时候取的服务名是mysql,那么起停数据库服务的命令是:
D:>net stop mysql
The MySQL service is stopping.
The MySQL service was stopped successfully.
D:>net start mysql
The MySQL service is starting.
The MySQL service was started successfully.
也可以到windows的服务管理里手工起停了。
当直接敲入mysql的时候遇到如下错误,说明数据库服务还未启动:
D:>mysql
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
二、连接和退出MySQL
格式: mysql -h主机地址 -u用户名 -p用户密码
1、连接到本机上的MYSQL。
打开DOS窗口,
进入目录Crogram FilesMySQLMySQL Server 5.0..(安装时,如果已设置该目录到环境变量PATH,就不用进入该目录了),
再键入命令mysql -uroot -p,
回车后提示你输密码,
输入密码直接回车即可进入到MYSQL中,
MYSQL的提示符是:
mysql>
2、连接到远程主机上的MYSQL。
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。
则键入以下命令:
D:>mysql -h110.110.110.110 -uroot -pabcd123
注:u与root可以不用加空格,其它也一样。
3、退出MYSQL命令:
D:>exit(回车)
或
D:>quit(回车)
你也可以用control-D退出。
三、修改用户密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
D:>mysqladmin -uroot -piamwangnc password newpwd
也可以直接修改user表的root用户口令:
mysql> use mysql; --用名字叫mysql的库当作当前库
Database changed
mysql> update user set password=password('21century') where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.14 sec)
注:flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令。
四、增加新用户
注:MySQL环境中的命令后面都带一个分号作为命令结束符。
但是use、exit、quit几个命令不用分号结尾也可以的。
例1、增加一个用户admin密码为oss,可以从任何地方连接服务器的一个完全的超级用户。
首先用以root用户连入MySQL,然后键入以下命令:
mysql> grant all privileges on *.* to [email=admin@%22%%22]admin@"%"[/email] identified by 'oss' with grant option;
Query OK, 0 rows affected (0.00 sec)
但例1增加的用户是十分危险的,你想如某个人知道admin的密码,那么他就可以在internet上的任何一台电脑上登录你的MySQL数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mysql进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MySQL主机上的web页来访问。
mysql> grant select,insert,update,delete on mysql.* to test2@localhost identified by "abc";
Query OK, 0 rows affected (0.00 sec)
如果你不想test2有密码,可以再打一个命令将密码消掉。
mysql> grant select,insert,update,delete on mysql.* to test2@localhost identified by "";
Query OK, 0 rows affected (0.00 sec)
五、基本操作命令
注:如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。
也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就完成。
可以使用光标上下键调出以前的命令。
mysql命令的大小写结果是一致的。
1、显示数据库列表:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql库很重要,它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
17 rows in set (0.00 sec)
3、显示数据表的结构:
mysql> desc func;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| name | char(64) | NO | PRI | | |
| ret | tinyint(1) | NO | | 0 | |
| dl | char(12 | NO | | | |
| type | enum('function','aggregate') | NO | | NULL | |
+-------+------------------------------+------+-----+---------+-------+
4 rows in set (0.08 sec)
4、建库:
mysql> create database testdb;
Query OK, 1 row affected (0.01 sec)
5、建表:
mysql> use testdb;
Database changed
mysql> create table t_test (c1 date);
Query OK, 0 rows affected (0.29 sec)
6、显示表中的记录:
mysql> select * from t_test;
Empty set (0.00 sec)
7、将表中记录清空:
mysql> delete from t_test;
Query OK, 0 rows affected (0.00 sec)
8、删库和删表:
mysql> drop table t_test;
Query OK, 0 rows affected (0.11 sec)
mysql> drop database testdb;
Query OK, 0 rows affected (0.01 sec)
七、一个建库、建表、改表以及插入数据的实例
mysql> drop database if exists school;
Query OK, 0 rows affected, 1 warning (0.00 sec) //如果存在SCHOOL则删除
mysql> create database school; //建立库SCHOOL
Query OK, 1 row affected (0.01 sec)
mysql> use school; //打开库SCHOOL
Database changed
mysql> create table teacher //建立表TEACHER
-> (
-> id int(3) auto_increment not null primary key,
-> name char(10) not null,
-> address varchar(50) default '深圳',
-> year date
-> ); //建表结束
Query OK, 0 rows affected (0.15 sec)
注:
(1)将ID设为长度为3的数字字段int(3),并让它每个记录自动加一auto_increment,并不能为空not null,而且让它成为主键primary key
(2)将NAME设为长度为10的字符字段
(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。
(4)将YEAR设为日期字段。
mysql> insert into teacher values(1,'glchengang','深圳一中','1976-10-10'); //以下为插入字段
Query OK, 1 row affected (0.06 sec)
mysql> insert into teacher values(2,'jack','深圳一中','1975-12-23');
Query OK, 1 row affected (0.04 sec)
mysql> select * from teacher;
+----+------------+----------+------------+
| id | name | address | year |
+----+------------+----------+------------+
| 1 | glchengang | 深圳一中 | 1976-10-10 |
| 2 | jack | 深圳一中 | 1975-12-23 |
+----+------------+----------+------------+
2 rows in set (0.00 sec)
mysql> rename table teacher to t_teacher; //给表改名
Query OK, 0 rows affected (0.09 sec)
mysql> alter table t_teacher change id newid varchar(5) not null; //修改字段属性
Query OK, 2 rows affected (0.24 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> alter table t_teacher add leave_time datetime not null after address; //在表中的address后增加一字段
Query OK, 2 rows affected (0.24 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> desc t_teacher;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| newid | varchar(5) | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
| address | varchar(50) | YES | | 深圳 | |
| leave_time | datetime | NO | | NULL | |
| year | date | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
如果你在MySQL提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:下,然后键入以下命令:
D:> mysql -uroot -p密码 < c:school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。
八、基本select操作
mysql> select version(),current_date();
+----------------------+----------------+
| version() | current_date() |
+----------------------+----------------+
| 5.0.51a-community-nt | 2008-03-26 |
+----------------------+----------------+
1 row in set (0.00 sec)
mysql> Select (20+5)*4;
+----------+
| (20+5)*4 |
+----------+
| 100 |
+----------+
1 row in set (0.00 sec)
mysql> Select (20+5)*4 AS Result,sin(pi()/3);
+--------+------------------+
| Result | sin(pi()/3) |
+--------+------------------+
| 100 | 0.86602540378444 |
+--------+------------------+
1 row in set (0.00 sec)
mysql> select user(),now();
+----------------+---------------------+
| user() | now() |
+----------------+---------------------+
| [email=root@localhost]root@localhost[/email] | 2008-03-26 11:58:54 |
+----------------+---------------------+
1 row in set (0.00 sec)
mysql> select user();select now();
+----------------+
| user() |
+----------------+
| [email=root@localhost]root@localhost[/email] |
+----------------+
1 row in set (0.00 sec)
+---------------------+
| now() |
+---------------------+
| 2008-03-26 11:59:08 |
+---------------------+
1 row in set (0.00 sec)
mysql> select * from user limit 3; #返回前3行
mysql> select * from user limit 0,3; #返回前3行
mysql> select * from user limit 3,5; #返回从第4行开始的前5行,即4-8行
第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。
九、将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用
来代替。
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile "文件名" into table 表名。
注意:你最好将文件复制到Crogram FilesMySQLMySQL Server 5.0in目录下,并且要先用use命令打表所在的库。
十、备份数据库
导出meeting数据库:
D:>mysqldump -uroot -p21century school > school.sql
导人dbname数据库:
D:>mysqldump -uroot -p21century dbname < xxx.sql
导入数据库还可用类似于oracle中@my_script.sql的方式一次执行大量sql语句,这在使用mysqldump不起作用时非常有用。
例:
D:>mysql -uroot -p < db_meeting_2003.sql
(注:create database、use databasename、create table和insert into语句都可写在上面的脚步文件中)
十一、优化命令
mysql >show status;
该命令将显示出一长列状态变量及其对应的值,其中包括:被中止访问的用户数量,被中止的连接数量,尝试连接的次数,并发连接数量最大值,以及其他许多有用的信息。这些信息对于确定系统问题和效率低下的原因是十分有用的。SHOW命令除了能够显示出MySQL服务器整体状态信息之外,它还能够显示出有关日志文件、指定数据库、表、索引、进程和许可权限表的宝贵信息。
mysql> explain select * from user;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | user | ALL | NULL | NULL | NULL | NULL | 7 | |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.11 sec)
EXPLAIN能够分析SELECT命令的处理过程。这不仅对于决定是否要为表加上索引很有用,而且对于了解MySQL处理复杂连接的过程也很有用。