1. 向表中加载数据
建立表以后,须要向其中填充数据,能够用LOAD DATA 和 INSERT 语句作这件事。
假设你的宠物记录以下表所示:mysql
由于开始是一张空表,一种简单的填充数据方式就是建立一个文本文件,每一个动物对应一行信息,而后用一条语句将文件内容加载到表中。
例如:能够建立一个pet.txt 文件,文件中每行包含一条记录信息,每条记录中各值以TAB键分隔,值的内容按照CREATE TABLE语句中建立列指定的顺序给出,对于缺失的值(例如未知的性别或者活着的动物的死亡日期)能够设置NULL值,在文本文件中用\N(反斜杠加大写N),例如:sql
Whistler Gwen bird \N 1997-12-09 \N
要将文本文件pet.txt中的内容加载到pet表中,使用以下语句:编辑器
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
若是文件是在Windows系统中建立,编辑器使用的是\r\n换行符,则应使用以下语句:ide
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet LINES TERMINATED BY '\r\n';
(在运行MacOS的苹果机器上,应该使用LINES TERMINATED BY '\r')
能够在LOAD DATA语句中明确指定列分隔符和行结束符,默认值是tab和换行符。
对于用语句正确读取pet.txt文件来讲,以上信息就足够了。
若是语句执行失败,多是你的MySQL安装程序并无默认启用本地文件功能。
若是须要每次添加一条新记录,这时能够用INSERT语句。简单的使用形式就是按照建立表时提供的列顺序为每列赋值,例如:3d
mysql> INSERT INTO pet VALUES ('Puffball', 'Diane', 'hamster', 'f', '1999-03-30', NULL);
字符值和日期用引号包含,用INSERT语句能够直接插入NULL表示缺失数据,不须要LOAD DATA 中使用的\N。code
2. 从表中检索数据
SELECT 语句用于从表中检索数据,该语句的通用格式以下:blog
SELECT what_to_select FROM which_table WHERE conditions_to_satisfy;
what_to_select 表示须要查什么信息,能够是多个列,或者用 * 表示全部列。
which_table 指定查询的表,WHERE 子句是可选的,用于指定各个行须要知足的条件。排序
2.1 选择所有数据
SELECT 语句的最简单形式就是从表中查询所有数据:教程
当查询数据后,若是发现有些数据错了,这时该怎么处理呢?有2种方法可供选择:
·编辑pet.txt文件,改正错误信息,清空pet表,从新加载数据:ci
mysql> DELETE FROM pet; mysql> LOAD DATA LOCAL INFILE 'pet.txt' INTO TABLE pet;
·使用UPDATE 语句修复错误记录
mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
2.2 选择特定行
前面讲过,若是不加WHERE子句查询将返回所有信息,可是通常来讲,咱们不须要查看全表信息,尤为是当表数据量很大的时候更是如此。下面看一些选择查询例子。
验证刚刚修改过的 Bowser 的生日:
字符串比较一般是不区分大小写的,所以指定名字为 ‘bowser’或者’BOWSER’ 结果是相同的。
查询时能够在任何列上指定条件,例如:
还能够使用组合条件:
以前的查询使用了AND逻辑操做符,还能够使用 OR 操做符:
AND 和 OR 也可混合使用,固然,混合使用时最好使用括号以明确指定条件分组状况:
2.3 选择特定列
查询信息时能够只查特定列,列名间以逗号分隔,例如仅查询动物名称和出生日期:
如只想查出动物主人:
上例中咱们发现有的主人因有多个宠物屡次出现,若是咱们想让每一个主人都不重复,则能够使用关键字 DISTINCT :
能够使用WHERE子句将行选择与列选择结合起来查询:
2.4 行排序
你们可能注意到了,以前例子中的查询结果并无以特定顺序排序,若是以某种有意义的方式对结果排序,更利于咱们检查结果,要对结果排序,能够使用ORDER BY子句:
能够对多个列进行排序,每一个列能够指定不一样的排序方式,例如,能够对动物种类进行升序排序,而后对同种类内的动物生日进行降序排序(幼小的动物排在前面),查询示例以下:
DESC 关键字仅影响它前面紧跟的列(birth),对species没有影响。