服务器 频道

mysql常用经典操作

  【IT168 服务器学院】.连接服务器
  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  在语句尾,使当前语句不执行
  

0
相关文章