MySQL命令使用

来源:互联网 发布:萧山区政府网络问政 编辑:程序博客网 时间:2024/05/16 06:43

    用了一段时间的Mysql,因为工作所需,一直在吃透Mysql的路上走着,貌似有往DBA发展的趋势。说句心里话,数据库这东西,要吃透真的不是件容易的事,想做个优秀的DBA很难。但是数据库这东西也挺有意思的,做好了真的蛮有前途的,所以,虽然有点无奈,有点不情愿(觉得作为开发人员会SQL就行了,却偏偏要去深入到系统级的数据库系统里,觉得不爽),但是还是不烦挑战一下,希望有所成就。之后会陆续总结这一路上的收获和经验,也欢迎大家不吝指教。

一、MySQL命令的几点注意:

  a.一个命令通常由SQL语句组成,随后跟着一个分号。(有一些例外,如quit和exit)

  b.mysql用表格(行和列)方式显示查询输出。第一行包含列的标签,随后的行是查询结果。通常,列标签是你取自数据库表的列名。如果你正在检索一个表达式而非表列的值,则用表达式本身标记列。

  c.显示结果的最后会显示返回了多少行或受影响的行数,以及花了多长时间,它给你提供服务器性能的一个大致概念。因为他们表示时钟时间(不是CPU或机器时间),并且因为他们受到诸如服务器负载和网络延时的影响,因此这些值是不精确的。

  d.mysql的函数和命令的关键字不区分大小写,大小写均可。

  e.可以在一行上输入多条语句,只需要以一个分号间隔开各语句,如:[mysql>select version();select now();]当然,此时显示的结果也会分成多个表格进行显示。

  f.同样,一条命令可以跨多个行,在命令比较长或者为了比较好阅读的时候,可以将一条命令在多个行上进行输入,因为mysql是通过寻找终止分号来决定命令的结束的。

  g.如果已经输入了一条不完整的命令,正在等待分号结束,而此时又不想再执行这条命令,则可以用\c终止操作。

  如: mysql>select

           ->user(),

           ->\c

       mysql>   

  h.各个命令提示符所表示的状态:

提示符

含义

mysql>

准备好接受新命令。

->

等待多行命令的下一行。

'>

等待下一行,等待以单引号(“'”)开始的字符串的结束。

">

等待下一行,等待以双引号(“"”)开始的字符串的结束。

`>

等待下一行,等待以反斜点(‘`’)开始的识别符的结束。

/*>

等待下一行,等待以/*开始的注释的结束。

  底下几个命令提示符的含义就是:已经输入了包含以‘'’‘"’等括号字符开始的字符串的一行,但是还没有输入终止字符串的匹配引号。表示粗心大意地省掉了一个引号字符。通常的挽救措施就是中断操作的进行,重新再来,但是不是简单的用\c了事,要在之前加上提示符,如'\c来中断因为漏了'的语句,这一点很重要。

 i.在Windows下,数据库和表名称是不区分大小写的,但是按惯例,最好在创建数据库的时候就给出一致的大小写约定,以便后续的查询更新等操作统一,本人习惯统一用小写。

 

二、MySQL命令行操作的常用命令:

1.查看由mysql提供的选择项目表:

 >mysql --help 

 如显示当前的版本号>mysql --version

2.连接和断开服务器:

 >mysql -h host -u user -p

 Enter password:******

 建议不在连接数据库服务器命令行上显式输出password。

 如果MySQL安装的时候允许用户以匿名用户连接到本地主机上运行的服务器,则可以直接用mysql连接服务器

 >mysql

 退出,断开与服务器的连接,一下两个命令都可以:

 mysql>exit

 mysql>quit

3.系统查询类命令:

 查询版本号,当前日期,当前登录用户:

 mysql>select version(),curdate(),user();

4.创建使用数据库:

  (1)查看服务器上当前有什么数据库:

  mysql>show databases;

  (2)创建数据库:

  mysql>create database mydb;

  (3)管理员为数据库用户授权:

  mysql>grant all on mydb.* to'your_mysql_name'@'your_client_host'; (your_mysql_name:分配给你的数据库用户名,your_mysql_host:连接到数据库服务器的主机名或IP,%代表所有IP都可以。)

 (4)使用数据库:

  mysql>use mydb;

  Database changed

  在对某个数据库进行操作之前必须先使用数据库,可以在连接数据库服务器之后用上面的命令指定数据库,也可以在连接数据库服务器的时候指定数据库名,如:

  >mysql -h host -u user -p mydb

  Enter password:******

5.创建表和填充表

 (1)查看当前数据库中存在的表:

  mysql>show tables;

  Empty set(0.00 sec)

 (2)创建表:

  当数据库建好后最重要的是决定要有怎样的数据库结构,包括表间关系和表内结构。

  表内字段的定义有一定的讲究,就拿用户表user_table来说吧,其中的年龄字段的定义好坏对整个业务的关系很大。如果直接将年龄存储为int型的字段存到数据库中,这样看上去是很省事,但是后面会带来一系列的麻烦。因为年龄会随着时间变化而变化,及你要定期不断更新你的记录。相反,如果我们存储一个固定值如生日,这样就不需要不断更新,要用年龄的时候,只需要将当前时间减去出生日期就可以。另外存储生日比年龄更细致,在一些应用中可以在生日到来时给出用户生日提示或者发生日贺卡之类的,即多样化了业务功能。

   mysql>create table user_table(id int,name varchar(20),sex char(1),birth date,register date,company varchar(50));

  (3)查看数据库的表结构:

  当创建好表以后,可以查看一下表结构,看是否按照自己的希望创建:

   mysql>describe user_table;

  结果就是一张类似数据字典的二维表。

  (4)填充表

  往数据表中写入数据有很多方式,这边先介绍由初始状态下生成数据的两种方式,后边再介绍由已有数据导入的方式。

  因为你从一个空表开始(当然,一开始表不为空也可以这么干),所以可以用批量的方式从一个装有数据的文本文件中装载到数据库。首先先将数据写入到文本文件中,一条记录一行,按照创建表时字段顺序排列,字段之间用tab符分开。对未知数据,比如性别,null值表示为\N,下面是装有数据的user.txt文件:

1    TOM     1    1990-01-01   2012-10-01   Google
2   WHITE   1   1991-01-02   2012-10-02   Apple
3   Jane       0   1990-10-01   2012-10-03   IBM
4   Gray       \N  1990-02-01   2012-10-04   Microsoft

mysql>load data local infile user.txt into table user_table;

如果愿意,可以明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符(tab)和换行符(windows下是\r\n)。这对读入文件“pet.txt”的语句已经足够。

    另一种方式是最寻常的一次插入一条记录的方式,采用insert命令

 mysql>insert into user_table values(5,'Smith','1','1990-01-03','2012-10-05',null);

6.检索表:

  mysql>select what_to_select from which_table where conditions_to_satisfy;

  几点说明:

  (1)若要获得结果唯一,可以在列名之前加上distinct,如mysql>select distinct name from user_table;

    (2)关于order by:

      a.对内容相同大小写不同的排序列,order by不对其进行排序,可以用order by binary col_name强制执行区分大小写排序。

      b.默认是升序,降序要加上desc,升序时null值在最前面。

      c.可以对多个列进行排序,并可以按不同的方向对不同的列进行排序,如order by name,birth desc。

 

三、数据库级的导入导出操作:

   1.将一个数据库(包括结构和数据)导出到sql文件:
   >mysqldump -h host -u user -p mydb>mydb.sql

  Enter password:******

   2.将数据库文件(包含结构和数据)导入到一个已建立的数据库中:

    >mysql -h host -u user -p newdb<mydb.sql

  Enter password:******

   3.只导出mysql数据库的结构:

   >mysqldump -h host -u user -p -d mydb>mydb.sql

   或者>mysqldump -h host -u user -p--no-datamydb>mydb.sql

  4.只导出数据不导出结构:

   mysql>mysqldump -u user -p -t mydb>mydb.sql

  5.导出特定数据表(包括表结构和数据):

  mysql>mysqldump -u user -p db_name table_name>xxx.sql

  6.只导出特定表的表结构:

  mysql>mysqldump -u user -p db_name -d table_name>xxx.sql

  7.只导出特定表的数据:

  mysql>mysqldump -u user -p db_name -t table_name>xxx.sql

                

 

原创粉丝点击