安迪_963

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

以下内容是根据官方文档翻译的,执行截图是博主自己实测结果。

3.1 Connecting to and Disconnecting from the Server

连接,断开数据库

要连接到mysql 服务器,你需要用户名,user;密码,password

如果你在别的电脑上远程登陆,那么你还需要主机名。你应该这样登陆:

shell> mysql -h host -u user -p
Enter password: ********

host表示主机的地址,user是你的账号名。
shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.5.50-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

最后面的这个 mysql> 表示mysql已经准备就绪。

如果你在自己的电脑上安装了mysql,你只需要输入下面的命令:
shell> mysql -u user -p

如果你遇到:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'说明你的mysql服务没有运行,你得先启动它。

有些mysql 安装版本允许匿名登陆,输入下面的命令即可
shell> mysql

登陆成功后你随时都可以输入:QUIT或者(q)退出,本人实测中exit也可以。

3.2 Entering Queries

进入查询:

本节内容的前提是你已经连接上mysql服务器

下面是一个简单的查询实例:

mysql> SELECT VERSION(), CURRENT_DATE;

这条查询语句说明了mysql的几个特点:

  1.每条语句后面都加上分号“;”,有少数例外,如退出时输入QUIT

  2.当你输入一条查询语句时,mysql将其发送给服务器,执行并返回结果

  3.mysql总是以表格的形式返回结果,第一行是这些列的标签,如果你只是想得到值,mysql也会将其贴上标签,如上面的例子那样。

关键词大小写不敏感:下面三种情况都是可行的。

mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

下面是另一条语句 ,它说明你可以把mysql当作一处简单的计算器来使用
mysql> SELECT SIN(PI()/4), (4+1)*5;



下面这样会单输出,只要你喜欢,你可以输入多条语句
mysql> SELECT VERSION(); SELECT NOW();


查询语句如果需要多行,mysql是根据你结束的分号来识别的,而不是换行。换句话说就是:mysql的输入格式自由,它接收这些语句,但并不马上执行,而是直到看到分号为止。

下面是一个简单的例子:

mysql> SELECT
    -> USER()
    -> ,
    -> CURRENT_DATE;

在这条语句中注意Mysql的提示,由mysql>变成了-->这是在告诉你,我还没有看到结束的分号,我是不会执行的。它在等待你输入剩下的语句,好好利用这些提示吧。

如果你不想执行你输入的语句,那就用"\c"来取消
mysql> SELECT
    -> USER()
    -> \c
mysql>

同样的注意看提示,-->变成了mysql>说明,你可以重新输入查询语句了。

下面这张表是可能的mysql的提示:

PromptMeaning
mysql> 准备就绪
-> 等待输入多条语句的一下一句
'> 等待输入由单引号开头语句的结束
"> 双引号,同上
`> 反撇号,同上
/*> 同上
多行输入经常发生在 由于你输入单条语句而忘记加上分号的情况下
mysql> SELECT USER()
    ->

如果发生了这种情况,你输入了语句,但mysql在等待你的输入。而你却没有意识到发生了什么,你可能停在这里等待,其实你只需要输入分号,mysql就会执行你的语句。
mysql> SELECT USER()
    -> ;


'>">说明你的语句中输入了引号的开头,却没输入结尾,这经常发生在你不小心输入了半边引号导致

(博主推荐成对输入,即(),'',""等成对输入,这能有效防止忘记关闭,同样适用于编程)

mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '>

如果你输入了这条语句,按下Enter键,结果什么也没发生,你可能会奇怪怎么这条查询语句要执行那么久,那么你应该看下'>这条线索。

(它说明mysql在等待你的输入,你没注意到它在说,你伢的,怎么不给我加个反引号啊)

如果发生了这种情况,要怎么办呢,这还不简单,输入\c,取消不就行了。

事实上这样做还真不行,因为mysql会把\c解释成''中的一部分,所以最好的办法就是:先加上反引号,再加\c
mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
    '> '\c
mysql>

此时,提示又回到了mysql>,说明你可以接着输入了。

`>重音符的提示和单双引号的类似,说明你虎头蛇尾,只记得开始,却不结束。

这三种情况非常重要 ,因为如果发生了这种情况,后面不管你输入多少都会被mysql忽略掉(不执行),即使你输入了QUIT也一样,这肯定让人火大。

特别是在你在想为什么不能取消这条语句,又傻傻不知道要输入结束的引号的情况下。

3.3 Creating and Using a Database

创建并使用数据库

现在你知道怎么输入sql语句了,那你就可以创建数据库了。

现在假设你有一些宠物,而且你希望能保存一些它们的信息,那么,你就可以大材小用的建立一张表来保存数据,下面来是步骤:

  a.创建数据库

  b.创建数据表

  c.通过不同的方式从表中取回数据

  d.使用多重表格

 

这个动物园的数据库很简单,但现在却不难想到它在现实中的应用。

通过show命令查看有哪些数据库(注意database加了s)

其中的mysql数据库保存了用户的权限信息,test数据库一般默认自动创建,为用户做一些测试用的。

这条命令不会显示那些你没有权限查看的数据库

如果你的机器上也有test数据库,通过下面的命令使用它
mysql> USE test
USE和QUIT一样,不需要分号,当然,如果你有强迫症,为了你的性命着想就加上分号吧,反正加上也没有害处。

USE特殊的另一点是,它不能跨行

如果你能使用test数据库,那就用吧,但是test数据库上的数据可能被任何其他有权限使用test数据的人删除掉,所以最好建立自己的数据库。

假设你需要使用你的数据库(上面建立的动物园),管理员需要执行下面的命令:
mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';
your_mysql_name 就是你的账户名,your_client_host是你用来登陆服务器的机器地址

3.3.1 Creating and Selecting a Database

创建并选择数据库

如果管理员已经为你建好了数据库,那你只需要用就行了,如果没有,那你得自己动手创建
mysql> CREATE DATABASE menagerie;

注意:在unix上,它是大小写敏感的,在创建数据表时也一样,也就是说,你创建时用的大写,使用时也必须用大写,

在win上,不存在这个问题,但是最好还是保持一致,不要忽大忽小。

如果你遇到了这种错误提示:

ERROR 1044 (42000): Access denied for user 'micah'@'localhost' to database 'menagerie'

说明你信任的那个管理员阴了你一把,没有给你足够的权限,带上砖头找他去吧。

创建数据库并不是说就选择了它,要使用它,你还得选择它

mysql> USE menagerie


你的数据库只需要创建一次,但是每次使用前你都得选择它才能用。

当然你也可以在登陆时直接选择它:
shell> mysql -h host -u user -p menagerie
Enter password: ********

注意,menagerie不是你的密码,如果你非要在第一行输入密码,那么你就不要用空格。

不要写:mysql -h host -u user -p mima 而应该:mysql -h host -u user -pmima 但是,这种写在同一行的做法是不推荐使用的。

任何时候,你都可以通过下面这条命令来查看当前被选择的数据库:
SELECT DATABASE();

3.3.2 Creating a Table 

建表

建表是很容易的,但它是空的,可以通过这条命令查看到:

mysql> SHOW TABLES;

难的是,要怎么组织数据库的结构,建哪些表格,列。

你想保存你宠物的数据库,那可以建个名叫pet的表,最少也要包含名字,还包含一些其他信息,比如,如果你家人也养宠物,那你可能想保存主人的信息。

要不要保存年龄呢,事实上建议你保存生日更合适,因为,年龄会随着时光的飞逝而增加,但生日永远无法改变,
而年龄可以通过生日计算出来,blablablabla

我们这里保存的信息包括:name, owner, species, sex, birth, and death.

通过Create Table命令创建这张表的样式
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
    -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);



VARCHAR这种数据类型对name,owner,species是不错的选择,因你它们的长度是变化不定的。

你可以任意指定从1~65535的值,如果你事先指定的短了,mysql有ALTER TABL
E 命令
表示性别的方式有好几种,比如 f,m 或者 female ,male,最简洁的方式是 f ,m .

birth ,death 用DATE格式
当你创建数据表后,show tables就能有结果了 :

 

为了确认你的数据表是你想创建的样子,用DESCRIBE命令查看:

只要你愿意,DESCEIBE命令可随时调用。

3.3.3 Loading Data into a Table

加载数据

为了填充数据表,Load 或者Insert 都可以

因为刚建表,你可以将数据写入一个txt文件中,每一条数据之间用tab隔开,然后执行下面的语句导入数据:

 

mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;

我的这个文件在我桌面上:



结果:



如果你的编辑器中用的是\r\n来换行,那你应该用下面这条命令:
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
    -> LINES TERMINATED BY '\r\n';

在苹果上,你应该换成:TERMINATED BY '\r'

如果命令失败了,应该是你mysql安装时没有选择默认本地文件处理功能。

当你想一条一条输入时,Insert 命令就有用武之地了。
mysql> INSERT INTO pet
    -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

字符串,日期,要用引号,空白用NULL




posted on 2016-04-11 15:30  Andy_963  阅读(410)  评论(0编辑  收藏  举报