MySQL命令学习笔记
文章目录
1 使用数据库
1.1 连接数据库
安装教程参考此博客Windows下Mysql和Navicat的安装及使用。为连接到mysql,需要以下信息:
- 主机名(计算机名)——若连接到本地mysql服务器,为localhost;
- 端口(若使用默认端口3306之外的端口);
- 用户名和密码
在Windows下,利用cmd登录mysql,命令如下:
net start mysql #启动mysql服务
mysql -u root -p #登录mysql
当配置文件更改后,需要重启mysql服务,命令如下:
net stop mysql #停止mysql服务
net start mysql #启动mysql服务
mysql -u root -p #登录mysql
结果如下图:
使用SHOW命令来查看数据库的信息
SHOW DATABASES;
结果如下:
使用SHOW TABLES命令来获取一个数据库内的表的列表,命令如下:
SHOW TABLES;
结果如下:
这里输入上述命令的时候,出现ERROR 1046:No database selected
,因为没有选择数据库,所以先使用USE命令选择数据库的名称,再使用SHOW TABLES命令,查看test数据库下的表格,如图所示:
USE test;
SHOW TABLES;
SHOW COLUMNS FROM table1;
SHOW COLUMNS
要求给出一个表名,其对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息
**自动增量:**在每个行添加到表中时,mysql可以自动地为每个行分配下一个可用的编号,不用在添加一行时手动分配唯一值。
所支持的其他SHOW
语句还有:
SHOW STATUS
——用于显示广泛的服务器信息;SHOW CREATE DATABASE
和SHOW CREATE TABLE
——分别用来显示创建特定数据库或表的mysql语句;SHOW GRANTS
——用来显示授予用户(所有用户或特定用户)的安全权限;SHOW ERRORS
和SHOW WARNINGS
,用来显示服务器错误或警告信息。
2 检索数据
2.1 SELECT语句
检索单个列,命令格式如下:
SELECT 列名称 FROM 表名称;
SELECT id FROM table1; #在表table1中检索id列
所需的列名在SELECT
关键字之后给出,FROM
关键字指出从其中检索数据的表名
注:
**结束sql语句:**多条SQL语句必须以分号(;)分隔
**sql语句和大小写:**SQL语句不区分大小写
**使用空格:**在处理SQL语句时,其中所有空格都被忽略
2.2 检索多个列
在SELECT
关键字后给出多个列名,列名之间必须以逗号分隔,即可检索一个表中的多个列。命令格式如下:
SELECT id,name,home FROM table1;
2.3 检索所有列
用星号(*
)通配符来检索所有的列,如下所示:
SELECT * FROM table1;
2.4 检索不同的行
当检索的列中有相同的行时,可使用DISTINCT
关键字来指示mysql只返回不同的值,如下所示:
SELECT DISTINCT id FROM table1;
SELECT DISTINCT id
告诉mysql只返回不同(唯一)的id行,DISTINCT
关键字必须放在列名的前面。
2.5 限制结果
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为
了返回第一行或前几行,可使用LIMIT
子句,命令如下:
SELECT name FROM table1 LIMIT 3;
LIMIT 3
返回从首行开始的三行。
下面返回第n行开始的m行,命令如下:
SELECT name FROM table1 LIMIT 3,2;
LIMIT 3, 2指示MySQL返回从行3开始的5行。第一个数为开始
位置,第二个数为要检索的行数。
注:
行0 检索出来的第一行为行0而不是行1。因此LIMIT 1,1
将检索出第二行而不是第一行。
mysql 5支持LIMIT
的另一种替代语法:LIMIT 4 OFFSET 3
意为从行3开始取4行,就像LIMIT 3, 4
一样。
2.6 使用完全限定的表名
若table1确实在test数据库中,则可使用以下命令:
SELECT table1.name FROM test.table1;
3 排序检索数据
3.1 排序数据
为了明确地排序用SELECT
语句检索出的数据,可使用ORDER BY
子句。
ORDER BY
子句取一个或多个列的名字,据此对输出进行排序:
SELECT id FROM table1 ORDER BY home;
此命令指示mysql对id列以home中的元素的字母顺序排序输出,即对home按照字母进行排序,然后id按照此排序输出。
3.2 按多个列排序
SELECT phone,name FROM table1 ORDER BY home,id;
此命令指示mysql对phone列先按home中的元素的字母顺序排序,再按照id排序输出。
3.3 指定排序方向
数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可
以使用ORDER BY
子句以降序(从Z到A)顺序排序。为了进行降序排序,
必须指定DESC
关键字,命令如下:
SELECT phone FROM table1 ORDER BY home DESC;
**注:**DESC关键字只应用到直接位于其前面的列名。
结合上述例子,可使用ORDER BY
和LIMIT
的合,找出一个列中最高或最低的值,命令如下:
SELECT phone FROM table1 ORDER BY home DESC LIMIT 1;