实现有价值的IT服务
全部博文(709)
分类: Mysql/postgreSQL
2006-06-29 14:26:34
mysql常用经典操作 |
连接服务器 mysql -u cnscn -h 192.168.0.1 [-D dbname] [-P 3306] [--protocol=name] The protocol of connection (tcp,socket,pipe,memory) [-S, --socket=name] 连接所用的套接字文件 [--character-sets-dir=name] 字符集所位于的目录 [--default-character-set=name] 默认的字符集 [-E, --vertical] 垂直地打列出查询输出 .创建数据库 Mysql>create database dbname; .显示数据库列表 mysql>show databases; .显示数据表列表 mysql>show tables; .查看mysql设置参数 $mysqladmin -u root -p variables; .开启服务器 $/etc/rc.d/init.d/mysqld start 或 $mysqld_safe --user=mysql & $/etc/rc.d/init.d/mysqld stop 或 $mysqladmin shutdown -u root -p .优化表 mysql>optimize table tblA,tblB; 或 [进行优化并检查修复任务] $mysqlcheck -o dbname tblA tblB tblC -u root -p .对表进行分析 mysql>analyze table tblA; 或 $mysqlcheck -a dbname [tblA tblB tblC ] -u root -p .对表进行检查 mysql>check table tblA,tblB,tblC; . .赋权 mysql>grant all on dbname.* to username@ identified by 'localhostpassword' 刷新权限表 mysql>flush privileges; .从txt文本文件向数据库导入文件 1)用select into做备份 select * from table where ... order... group by ... into outfile '/tmp/data.dat' [fields [terminated by '\t'] [[optionally] enclosed by ''] [escaped by '\\'] ] [lines terminated by '\n'] [ignore number lines] [(col_name,...)] mysql>select * from tblName where id<10 int outfile 'a.dat' fields terminated by '|' lines terminated by '\n'; 2)用load data恢复 load data [low_priority | concurrent] [local] infile 'a.dat' [fields [terminated by '\t'] [[optionally] enclosed by ''] [escaped by '\\'] ] [lines terminated by '\n'] [ignore number lines] [(col_name,...)] mysql>load data infile 'a.dat' into table tblName fields terminated by '|' lines terminated by '\n'; 3)mysqlimport---load data的等价命令 mysqlimport dbname -u root -h localhost -password [--fields-terminated-by=...] [--fields-enclosed-by=...] [--fields-optionally-enclosed-by=...] [--fields-escaped-by=...] [--lines-terminated-by=...] [--port=3306] [--socket=/path/to/socket] [--character-sets-dir=name] [-d,--delete] 输入文件前,清空表 ]-l,--lock-tables] 锁定准备写入的表 %mysqlimport dbname -u root -password a.dat .导出成.sql语句 1)用mysqldump备份 --add-locks 加上锁表语句,建议使用,将加快速度,以加快insert时的速度 --add-drop-table 添加drop table -A, --all-databases 导出所有的数据库 --allow-keywords 为避免不允许列名与关键字名不同,而在列名前加表名 -c,--complete-insert 使用完整的插入语句 -C,--compress 压缩数据 -B,--databases 存储指定的几个库 -e,--extended-insert 利用多行insert方式使结果更紧凑,速度更快,因为索引缓存器只在每个insert命令后刷新 --fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --lines-terminated-by=... -h, --host=... 主机 -l,--lock-tables 锁表 -K,--disable-keys 在insert前使索引无效,之后有效,使插入有效 --opt等效于--quick --add-drop-table --add-locks --extened-insert --lock-tables的组合 这是最快的恢复 --password 提示输入密码 -P portnumber,--port=portnumber 指明TCP/IP端口号 -q,--quick 不对表进行暂存,但直接存储在stdout.用mysql_use_result()去做,对于大的表,必须这样做 -Q,--quote-names 把表和列的名放入单引号里 -r,--result-file=... 输出到指定文件.这在DOS中有用,因为它可以阻止UNIX的新行\n符被转换成\n\r -S /tmp/socket, 指定socket文件 --socket=/tmp/socket -T,--tab=path-to-some-directory 为每一个表创建两个文件tblname.sql, tblname.txt -u username, 连接的用户名 --user=username -w,--where='where-condition' 导出的条件 -X,--xml 以符合方法的XML形式存储数据库 -O net_buffer_length=n 当创建多行插入语句时,该数创建行数的大小最多为n(-e或-opt参数,n必须小于16MB) %mysqldump --where='id>5' #只备份id大于5的记录 dbname [tblname] >/tmp/a.sql 2)导出到mysql_db.xml %mysqldump mysql -X > mysql_db.xml 3)最快导出方式 %mysqldump mysql --opt >msyql.sql 4)恢复用mysqldump备份的数据库 %mysql dbname < /tmp/a.sql 或 mysql>source /tmp/a.sql .查询参数 1) \g 在语句尾,同; 2) \G 在语句尾,使查询结果以竖形输出 3) \c 在语句尾,使当前语句不执行 |