字体大小: - -
hdyjcs 发表于 11-05-13 10:00 阅读(218) 分类:
Linux8. 查询表项
这一节,我们将学习如何查询到数据库表中的内容。这里,我们将学习一个新的命令
Select(选择)。
a. 全部查询
select * from tablename;
选择 任意 从 表名
上面这个语句,描述起来就是:从指定表中选择任意项进行查询。下面,我们来看看
它的效果怎样。
mysql> select * from stuff;
+---------+--------+
| name | age |
+---------+--------+
| joe | 30 |
| david | 28 |
+---------+---------+
2 rows in set (0.00 sec)
从上表中,我们可以看出,我们设置了两个字段:name和age,下面有两个项joe 30
和david 28,这是我们表中所有的内容。
那么,如果我们只想查询到名字相关的字段,或者年龄相关的字段,我们又该怎么做呢?
b. 查询指定字段(列查询)
select field1|field2 from tablename;
选择 字段1|字段2 从 表名
这里,我们给它指定一个条件field1或field2来查询。field1和field2是您的表中的实
际字段,这里是name和age。多个字段使用“,”隔开。
mysql> select name from stuff;
+---------+
| name |
+---------+
| joe |
| david |
+---------+
2 rows in set (0.00 sec)
mysql> select age from stuff;
+--------+
| age |
+--------+
| 30 |
| 28 |
+---------+
2 rows in set (0.00 sec)
c. 查询指定值(行查询)
在这里,我们需要引入一个条件语句:where field=value,命令如下:
select * from tablename where field=value;
选择 任意 从 表名 哪里 字段为值 //如果值为字符串,需要加引号
mysql> select * from stuff where name=”joe”;
+---------+--------+
| name | age |
+---------+--------+
| joe | 30 |
+---------+---------+
1 row in set (0.00 sec)
与上面相同的结果的一个查询为:
mysql> select * from stuff where age=30;
+---------+--------+
| name | age |
+---------+--------+
| joe | 30 |
+---------+---------+
1 row in set (0.02 sec)
d. 查询指定字段中的指定值(交叉查询)
这一节中,我们将使上面两种查询结合起来,查找出指定的值。
select field1|field2 from tablename where field=value;
选择 字段1|字段2 从 表名 哪里 字段为值
该句命令的含义为:从tablename表中选择field1或field2中field值为value的项。结
果如下:
mysql> select name from stuff where age=30;
+---------+
| name |
+---------+
| joe |
+---------+
1 row in set (0.00 sec)
当然,如果这里的匹配条件不对的话,那么查询结果就不会有任何匹配,就会出现Empty
set的回应了。这里,查询主字段为name,匹配条件为age为30。也就是说,选择出age为30的name,其结果就是显示对应的名字。如果将主字段设置为age,那么显示结果就是年龄了。
除了使用“=”作为条件外,我们还可以使用“>”或“<”。比如,我们要查询stuff表中年龄小于30岁的字段,可以写成下面这样:
select * from stuff where age<30;
e. 其它select查询
l Limit查询:
select * from tablename limit m,n;
选择 任意 从 表名 限制 m行起的n行
这里,m是查询的起始行,n是自m行开始的行数
l 统计行数:
select count(*) from tablename;
选择 计数(任意) 从 表名
l 排序:
select * from tablename order by field desc;
选择 任意 从 表名 顺序 为 字段 降序
这里,后面的的desc为降序,如果不写desc则为升序。
l 模式匹配:
select * from tablename where field like ‘mode’;
选择 任意 从 表名 哪里 字段 如 模式
这里模式使用通配符%和_,%为任意个任意字符,_为单个任意字符。如:
M%:匹配M开头的值
%s:匹配s结尾的值
%a%:匹配任意含有a的值
-:匹配一个字符
-----:匹配5个字符
l 分组统计数:
select * from tablename group by field;
选择 任意 从 表名 组 为 字段
这将以指定的字段来统计其重复数。
9. 修改表项
修改表是用于更改目前表的结构。我们可以添加或者删除列,更改目前列的类型以及对表或者列重新命名。同时我们也可以修改表的注释和表的类型。 其语法为:
alter table tablename arguments(arguments);
改变 表 表名 参数(参数)
这里的参数就是指定的alter可用的命令,具体参数如下:
Alter 参数
说明
Rename对表的名称重新命名
Add添加新列,键,索引
Add First使用First定位符添加列
Add After使用After定位符添加列
Drop删除列,索引,键
Change更改列的名称
Change Type更改列的类型
Modify修改列的类型
从上表中我们可以看出,我们可以使用alter命令来对数据表进行重命名、添加、删除以及对表中的列作出各种修改。
a. 修改表名
mysql> alter table stuff rename class;
这样,我们把表名修改为class了。现在,把它改回来吧。
b. 添加字段
mysql> alter table stuff add column sex enum(‘m’,’f’);
这样,我们又为stuff表新增了一个栏目sex,值的类型为enum。如果您使用描述表
命令查询的话,您会发现添加进去栏目在最后。那么,如果我们要在最前面添加该栏目,该怎么办呢?其实也很简单,只需在前面的命令最后加一个first参数。那么,您的命令可能会看起来像这样:
mysql> alter table stuff add column sex enum(‘m’,’f’) first;
那么,如果我想添加指定字段到指定位置,行不行呢?答案是行的。您只需要在结尾处使用after参数,就能添加到after指定的字段后面。比如,我要将sex字段添加到name后面,可以将命令写成:
mysql> alter table stuff add column sex enum(‘m’,’f’) after name;
c. 删除字段、索引或键
刚才,我们添加了一个不需要的字段,现在要把它删除掉,那么可以使用以下命令进行删除:
mysql> alter table stuff drop column sex;
d. 更改字段
现在,我们发现name字段定义得不够具体,需要重新定义成stuff_name,命令如下:
mysql> alter table stuff change name stuff_name varchar(20);
这里我们需要注意的是,在改变字段时,需要指定新字段的值的类型。当然,如果您只需要更改相应字段的类型属性,那么字段名只需写成原字段名即可。
e. 更改字段类型
除了上面的方法外,另外一种更直接的修改字段类型的方法是使用modify参数,见下面的命令:
mysql> alter table stuff modify stuff_name char(20);
10. 更改表中数值
有时候,我们发现我们为数据表添加了错误的数值,这时候就需要进行修改。MySQL
为我们提供这样的命令,以便我们在出错时能及时进行修改。修改数值的命令是:
update tablename set field=nvalue where field=mvalue;
更新 表名 设置 字段为值 哪里 字段为值
该句的意思是:更新指定表tablename中field为mvalue的值对应的项中指定字段设置为nvalue值。比如,我们要将stuff表中的david的年龄修改29,我们可以这样做:
mysql> update stuff set age=30 where name=’david’;
这里,where子句只是用于检索出对应的项。至于where子句要检索哪个字段是无关紧要的。
11. 删除表中数值
现在,我们基本已经完成了我们的实验。最后,我们要做的,是将我们所有的操作清
除。首先,让我们来把表中的项逐一删除。
delete from tablename [where condition];
删除 从 表名 哪里 检索条件
该句是说:从表tablename中删除哪里符合检索条件的项。当然,这里的where子句不是必须的,但没有where子句的命令,会造成很严重的后果,具体将在下面说明。下面,让我们来删除表中关于david的项,请看操作:
mysql> delete from stuff where name=’david’;
上面的命令,将name为david的stuff表中的项删除了。如果您不确定,您可以通过查询表中内容来确认。当然,如果表中有很多项,而这些所有的项又都不要了,这样逐一去删除很浪费时间。那么我们可以通过以下命令,直接删除表中所有内容:
mysql> delete from stuff;
这样,您就将表中所有项都完全删除了。因为该命令会造成毁灭性的后果,因此,在操作前请确认您的这些数据已经不需要了。
12. 删除表
好了,我们已经将表中数据删除完毕,现在,让我们将表也删除吧。这次,我们不能
使用delete命令了。命令如下:
drop table tablename;
丢弃 表 表名
该命令很好理解,就是丢弃名为tablename的表。下面,让我们将stuff表丢弃吧:
mysql> drop table stuff;
13. 删除数据库
下面将进行最后一步,将没用的数据库也删除掉。删除数据库的命令与删除表的命令
类似,只是替换不同的参数:
drop database dbname;
丢弃 数据库 数据库名
明白了吧?下面,让我们一起来完成最后一步吧。
mysql> drop database testdb;
到这里,我们的实例操作手册也结束了。本手册只是帮助您学习、掌握一些基本的操作技能,如果您觉得还不够,那么请找一些这方面专业书籍进行深入学习吧!最后,
祝您学习愉快!