MySQL使用指南
3.1连接和断开服务器
shell> mysql -h host -u user -p
Enter password: ********
其中host是主机名,user是数据库用户名。-h和主机名之间的空格可有可无,-u和-p类似。如:
因为是登录在本地,-h localhost可省略。成功登陆后显示mysql>提示符。
断开连接,就直接在mysql>下输入quit或者/q,
mysql> QUIT
Bye
3.2输入查询
在连接服务器的情况下,可以输入命令,如
输出服务器的版本号和当前的日期。
注意:命令不区分大小写,以分号;结尾。mysql以表格形式显示查询结果。mysql显示返回的行数和执行查询的用时。
可以将mysql用作简单的计算器,如
可以在同一行执行多个查询,如
也可以将一个查询写在多行上,如
如果要取消前面的输入,就以/c结束输入,如
除了mysql>外,还有下列提示符
提示符 含义
-> 等待多行命令的下一行
'> 等待完成以单引号(')起始的字符串
"> 等待完成以双引号(")起始的字符串
`> 等待完成以反引号(`)起始的标志符
/*> 等待完成以/*起始的注释
如
3.3 创建和使用数据库
显示当前存在于服务器的数据库,
要使用其中某个数据库,需要先执行
注意:use database_name命令和quit一样,可以不以;结束。use语句的另一个特殊之处在于它不能换行。
3.3.1 创建和选择数据库
创建数据库的语句如下
注意:在Unix下,数据库名称是区分大小写的,同样表名也是如此。但在Windows下没有这种限制。
在创建数据库后还需要用use语句显式地选择它。如果希望在连接服务器的时候就指定使用的数据库,可以这样:
用下列命令显示当前使用的数据库,
3.3.2 创建表格
显示当前数据库中的表格
目前无表格。
这里创建一个关于宠物的表格。它的属性包括宠物名,宠物主人,种类,性别,出生和死亡日期。
现在再显示数据库中的表格,
如果要检查确认刚才创建表格的各个属性,使用
3.3.3 给表格装载数据
可以通过倒入文本文件来装载数据。如有文件pet.txt
用下列命令可以将数据导入表格
查看表格内容
对于文本文件pet.txt要注意:各个字段之间用水平制表键分隔。空字段用/N表示。
如果希望一次插入一条记录,就使用insert语句,如
可以看到在表格最底层多了Puffball这条记录。
要删除表格中的所有数据,可以用下面命令
3.3.4 从表格检索信息
要修改某条记录有两种方法,一是在文本文件修改后重新载入;二是用update语句。如,
选择不同的行或列的几个例子:
找出所有的雄性猫和雌性狗,
选择所有的宠物主人,去掉重名
选择宠物名和出生日期两列,并根据出生日期降序排列
若要升序排列,去掉desc关键字即可。
先按种类排,再按出生日期由早到晚排列
获取宠物年龄,并按升序排列
NULL是一个缺失的未知值,与其他类型值不同。不能用算术比较操作符来测试NULL值。如
运算结果都为毫无意义的null。要测试NULL值,使用IS NULL和IS NOT NULL操作符,如
注意:在MySQL中,0或者NULL意味错误,其他的都表示正确。
模式匹配
SQL的模式匹配允许'_'匹配单个字符,'%'匹配任意数目的字符(包括没有,即0个字符)。在MySQL中,SQL的模式不区分大小写。在使用模式匹配时,使用LIKE或NOT LIKE比较操作符。
查找宠物名以'b'打头的记录
查找宠物名包含'w'的记录
查找宠物名五个字母的记录
MySQL提供的其他类型的模式匹配来源于正则表达式。对于这种类型的模式匹配使用REGEXP和NOT REGEXP操作符。
部分匹配特征:
上文查找宠物名以'b'打头的记录的另一种方法
如果要使匹配区分大小写,则加上BINARY关键字
上文查找宠物名五个字母的记录
行计数
统计宠物表的行数
统计宠物主人拥有宠物的数量
查找已知性别的每种宠物两种性别的数量
3.1连接和断开服务器
shell> mysql -h host -u user -p
Enter password: ********
其中host是主机名,user是数据库用户名。-h和主机名之间的空格可有可无,-u和-p类似。如:
因为是登录在本地,-h localhost可省略。成功登陆后显示mysql>提示符。
断开连接,就直接在mysql>下输入quit或者/q,
mysql> QUIT
Bye
3.2输入查询
在连接服务器的情况下,可以输入命令,如
输出服务器的版本号和当前的日期。
注意:命令不区分大小写,以分号;结尾。mysql以表格形式显示查询结果。mysql显示返回的行数和执行查询的用时。
可以将mysql用作简单的计算器,如
可以在同一行执行多个查询,如
也可以将一个查询写在多行上,如
如果要取消前面的输入,就以/c结束输入,如
除了mysql>外,还有下列提示符
提示符 含义
-> 等待多行命令的下一行
'> 等待完成以单引号(')起始的字符串
"> 等待完成以双引号(")起始的字符串
`> 等待完成以反引号(`)起始的标志符
/*> 等待完成以/*起始的注释
如
3.3 创建和使用数据库
显示当前存在于服务器的数据库,
要使用其中某个数据库,需要先执行
注意:use database_name命令和quit一样,可以不以;结束。use语句的另一个特殊之处在于它不能换行。
3.3.1 创建和选择数据库
创建数据库的语句如下
注意:在Unix下,数据库名称是区分大小写的,同样表名也是如此。但在Windows下没有这种限制。
在创建数据库后还需要用use语句显式地选择它。如果希望在连接服务器的时候就指定使用的数据库,可以这样:
用下列命令显示当前使用的数据库,
3.3.2 创建表格
显示当前数据库中的表格
目前无表格。
这里创建一个关于宠物的表格。它的属性包括宠物名,宠物主人,种类,性别,出生和死亡日期。
现在再显示数据库中的表格,
如果要检查确认刚才创建表格的各个属性,使用
3.3.3 给表格装载数据
可以通过倒入文本文件来装载数据。如有文件pet.txt
用下列命令可以将数据导入表格
查看表格内容
对于文本文件pet.txt要注意:各个字段之间用水平制表键分隔。空字段用/N表示。
如果希望一次插入一条记录,就使用insert语句,如
可以看到在表格最底层多了Puffball这条记录。
要删除表格中的所有数据,可以用下面命令
3.3.4 从表格检索信息
要修改某条记录有两种方法,一是在文本文件修改后重新载入;二是用update语句。如,
选择不同的行或列的几个例子:
找出所有的雄性猫和雌性狗,
选择所有的宠物主人,去掉重名
选择宠物名和出生日期两列,并根据出生日期降序排列
若要升序排列,去掉desc关键字即可。
先按种类排,再按出生日期由早到晚排列
获取宠物年龄,并按升序排列
NULL是一个缺失的未知值,与其他类型值不同。不能用算术比较操作符来测试NULL值。如
运算结果都为毫无意义的null。要测试NULL值,使用IS NULL和IS NOT NULL操作符,如
注意:在MySQL中,0或者NULL意味错误,其他的都表示正确。
模式匹配
SQL的模式匹配允许'_'匹配单个字符,'%'匹配任意数目的字符(包括没有,即0个字符)。在MySQL中,SQL的模式不区分大小写。在使用模式匹配时,使用LIKE或NOT LIKE比较操作符。
查找宠物名以'b'打头的记录
查找宠物名包含'w'的记录
查找宠物名五个字母的记录
MySQL提供的其他类型的模式匹配来源于正则表达式。对于这种类型的模式匹配使用REGEXP和NOT REGEXP操作符。
部分匹配特征:
- '.'匹配任意单个字符
- '[...]'匹配括号中的任意字符。如'[a-z]'匹配任意字母,'[0-9]'匹配任意数字
- '*'匹配它前面的0个或多个字符
- 只要在测试的对象中含有模式,REGEXP匹配就成功,这与LIKE模式匹配不同,它需要模式匹配整个对象才返回正确。如上文中查找宠物名包含'w'的记录只需要SELECT * FROM pet WHERE name REGEXP 'w';就可以了。
- 要使模式的首尾必须匹配,则在模式的开头放置'^',结尾放置'$'.
上文查找宠物名以'b'打头的记录的另一种方法
如果要使匹配区分大小写,则加上BINARY关键字
上文查找宠物名五个字母的记录
行计数
统计宠物表的行数
统计宠物主人拥有宠物的数量
查找已知性别的每种宠物两种性别的数量
3.5 用批处理模式操作MySQL
可以如上文那般交互式地输入查询,查看结果,MySQL也提供了批处理的操作模式。如在E:/下有这样一个文本文件query.txt
在命令行指定连接参数,执行如下
但是输出结果的可读性没有交互式模式下强,
当以批处理方式操作MySQL时,我们首先创建一个脚本文件,然后执行了它。如果脚本中的某条语句有错误,而我们希望继续执行,可以加上—force选项。
使用脚本的几个原因:
- 如果我们重复地执行查询(比如说,每天或每周),把查询写成一个脚本就避免了每次执行的键入。
- 通过拷贝并编辑脚本文件从类似的现有的查询生成一个新查询。
- 在开发某个查询时,批模式也是很有用的,特别对多行命令或多行语句序列。如果犯了一点错误,无须重新键入,只要编辑脚本来改正错误,然后告诉mysql再次执行它。
- 如果有一个产生很多输出的查询,就可以使用分页器(pager),而不是盯着它翻屏到你屏幕的顶端来运行输出:
shell> mysql < batch-file | more
- 捕捉输出到一个文件中进行近一步的处理:
shell> mysql < batch-file > mysql.out
- 可以散发脚本给另外的人,这样他们也能运行这些命令。
- 有一些情况不允许交互地使用MySQL,例如, 当从一个cron任务中运行查询时。在这种情况下,就必须使用批处理模式。