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 在语句尾,使当前语句不执行

你可能感兴趣的:(sql,xml,mysql,socket,C#)