======================
MySQL: 用法小结
机器IP:192.168.11.71
用户名:root
密码:root
======================
Mysql的安装:运行"mysql-5.5.19-win32.msi"
mysql注释方法: #注释语句
1、启动/停止Mysql服务命令
net [start|stop] mysql
2、cmd下登录mysql服务器
cmd>mysql -h host -u user -p
[其中:host代表实际mysql服务器IP(本地可用localhost表示,也可省略),user代表实际mysql中用效用户]
(一些Mysql安装时允许匿名用户连接到本地主机上运行的数据库服务器,那么登录时就可在CMD下直接运行mysql命令;cmd>mysql)
====================================
[其中:mysql表示数据库名,若要在连接的时候就输入密码,可这样写连接数据库语句:
mysql>mysql -h 192.168.11.71 -u root -proot
(-proot:表示root用户的密码为root,中间不能有空格)]
3、退出mysql服务器
mysql>quit
4、显示mysql数据库的版本号
mysql>select version(),current_date;
或:
mysql> select version();
5、显示当前mysql连接用户和机器名或当前数据库名
mysql>select user();
mysql>select database();
6、显示当前mysql服务器上的存在的数据库
mysql>show databases;
7、显示当前用户和当前库下的所有表
mysql>show tables;
8、访问test数据库
mysql>use test;
9、设置mydatabase数据库只有test用户能访问(待测试)
mysql>grant all on mydatabase.* to test@192.168.11.71;
10、创建数据库
mysql>create database zl;
11、创建表
mysql>create table pet(name varchar(20),address varchar(50));
12、查看表结构
mysql>describe pet;
或
mysql> show columns from zl;
显示表的建表语句:
mysql> show create table z\G; 或:show create table z;
13、将数据装入pet表中(以txt文件的形式,空的字段值可用\N代替)
a.在C盘根目录下创建一个文本文件,内容为向表中插入的记录值,字段值顺序和新建表结构时一致,空值可用\N代替,如本机C盘中的pet.txt文件.
b.运行如下命令
mysql>load data local infile 'c:/pet.txt' into table pet;
14、用insert语句向表中插入数据
mysql> insert into pet(name,address) values('测试','本机');
15、update语句的应用
mysql> update pet set name='张三' where name='三';
16、显示当前日期中的年份
mysql> select year(curdate());
17、模式匹配
mysql> select * from pet where name like '%三%';
18、批处理模式下运行mysql
a.在C盘根目录下创建一个文本文件create.txt,内容为新建zl表的sql语句。
b.在cmd下运行如下命令,等同于在查询分析器中执行建表的sql语句:
C:>mysql -h 192.168.11.71 -u root -p mysql <c:\create.txt
====================================================
此方法也可等同于在mysql命令提示符下执行如下命令:
mysql>\. c:\create.txt
或
mysql>source c:\create.txt
19、用mysql实例管理器启动mysql服务器
用mysql实例管理器关闭所有实例:/etc/init.d/mysql stop
20、启动|停止一个实例
mysql>start instance mysqld4;
mysql>stop instance mysqld4;
mysql>show instance;(显示所有载入的实例名)
21、修改数据库中用户密码:
方法一:
A、进入mysql数据库:mysql>mysql -h 192.168.11.71 -u root -proot mysql
B、mysql>update mysql.user set password=PASSWORD('newpwd') where User='root';
C、mysql>flush privileges;
方法二:
mysql>set password for 'root'@'localhost'=password('root'); --设置只能在本地登录的密码
mysql>set password for 'root'@'%'=password('root'); --设置能在本地和客户端上登录的密码
22、显示mysql数据库用户加密后的密码对应密文
mysql>select password('root'); --其中root代表密码
23、创建用户和密码(可用于从其它主机连接,并为超级用户账户,用户名为fxdict,密码为zizofxbb2010):
mysql> grant all privileges on *.* to 'fxdict'@'%' identified by 'zizofxbb2010'
with grant option;
24、创建用户和密码(用于从本地连接,并为超级用户账户,用户名为fxbbdb,密码为zizofxbb2010):
mysql> grant all privileges on *.* to 'fxbbdb'@'localhost' identified by 'zizofxbb2010'
with grant option;
删除用户:drop user 用户名;
重命名用户名:
rename user old_username to new_username;
25、创建用于本地连接的超级用户,未设置密码
方法一:
mysql>grant reload,process on *.* to 'admin'@'localhost';(有reload和process权限的本地admin账户)
方法二:
mysql>insert into user(host,user,password) vlues('localhost','dummy','');
mysql>flush privileges;
26、清空所有表和块的写入语句(将当前库中的所有表或索引设为只读状态,不允许向里面写内容):
mysql> flush tables with read lock;(设为只读为重新登录数据库服务器后实现解锁)
27、连续插入多条记录
mysql>insert zl
select 2 union
select 3 union
select 4;
或者:
mysql>insert into zl values(5),(6),(7);
================
ALTER TABLE用法:
================
28、删除表中多余的列(同时删除zl表中的test和test1字段)
mysql>alter table zl drop column test,drop column test1;
29、同时更改字段名及字段类型(将zl表国列名为a的字段名变为b,类型变为integer)
mysql>alter table zl change a b integer;
30、只更新字段类型(将zl表中的id字段类型变为int,并且字段值可为空)
mysql>alter table zl modify id int null;
31、重命名表名
mysql> alter table zz rename zzz;
或:
mysql> rename table zzz to z;
32、向已存在的表中增加列
mysql> alter table zl add num char(10);
33、drop语句用法
mysql>drop database zl;
mysql>drop table test;
34、union语句用法(将两个表的查询结构联合显示)
mysql> select * from zl union select * from z;
35、any、in、some语句用法
(any关键词后面必须接一个比较操作符,意思是“对于在子查询返回的列中的任一数值”)
mysql> select * from zl where id>=any(select id from z);
词语IN是=ANY的别名,因此,这两个语句是一样的:
select s1 from t1 where s1=any(select s1 from t2);
select s1 from t1 where s1 in (select s1 from t2);
不过,not in不是<>any的别我,但却是<>all的别名。
词语SOME是=ANY的别名,因此,这两个语句是一样的:
select s1 from t1 where s1<>any(select s1 from t2);
select s1 from t1 where s1<>some(select s1 from t2);
36、all语句用法
(any关键词后面必须接一个比较操作符,意思是“对于在子查询返回的列中的所有数值”)
not in是<>all的别名。因此,以下两个语句是相同的:
select s1 from t1 where s1 <> all(select s1 from t2);
select s1 from t1 where s1 not in(select s1 from t2);
37、清空表中所有记录(清除z表中的所有记录)
mysql>truncate z;
38、备份与恢复数据库(backup00.sql文件可事先存在,也可事先不存在)
MySQL本身提供一个很好的备份工具mysqldump,效率很高。下面以备份恢复一个数据库为例说明。
备份:
#mysqldump -f -u user -p pwd --single-transaction -d dbname > dumpfile_onlyschema.sql (只备份结构)
#mysqldump -f -u user -p pwd --master-data --single-transaction --triggers=false -t dbname > dumpfile_data.sql(只备份数据)
#mysqldump -f -u user -p pwd -Rtdn --triggers=false dbname > dumpfile_sp.sql(叧备份存储过程)
#mysqldump -u user -p pwd--opt dbname tablename > dumpfile.sql
不用那么复杂,见下面例子,会完成完整备份multi_screen 数据库到文件multi_scree.sql 中
mysqldump -u root -p<你的密码> multi_screen > multi_screen.sql
sql文件中包含了创建数据库及表的脚本,及插入数据的脚本
恢复
$ mysql -u root -p<你的密码> -D multi_screen < multi_screen.sql
另一种简单的办法:停止数据库,拷贝数据文件(*.MYD)。