什么是数据库
数据库(database)
保存有组织的数据的容器(通常是一个文件或一组文件)
MySQL是一种DBMS,即它是一种数据库软件。
成本————MySQL是开放源代码的,一般可以免费使用
性能————MySQL执行很快。
可信赖————某些非常重要和声望很高的公司、站点使用MySQL,这些公司和站点都用MySQL来处理自己的重要数据。
简单————MySQL很容易安装和使用
表(table)某种特定类型数据的结构化清单
表名 表名的唯一性取决于多个因素,如数据库和表名等的结合。这表示,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名。
列(column)表中的一个字段。所有表都是由一个或多个列组成的。
行(row)表中的一个记录。
主键(primary key)一列(或一组列),其值能够唯一区分表中每个行。
选择数据库
关键词(key word)作为MySQL语言组成部分的一个保留字。决不要用关键字命名一个表和列。
一些简单的操作命令。
输入
SHOW DATABASES;
输出
SHOW DATABASES; 返回可用数据库的一个列表。包含在这个列表中的可能是MySQL内部使用的数据库(如例子中的mysql和information_schema)。当然,你自己的数据库列表可能看上去与这里的不一样。
为了获得一个数据库内的表的列表,使用SHOW TABLES;
输入
USE dd;
SHOW TABLES;
输出
SHOW TABLES; 返回当前选择的数据库内可用表的列表,SHOW也可以用来显示表列
输入
SHOW COLUMNS FROM internship;
输出
SHOW COLUMNS 要求给出一个表名(这个例子中的FROM internship)它对每个字段返回一行,行中包含字段名、数据类型、是否允许NULL、键信息、默认值以及其他信息(company, price)
检索数据
SELECT语句
为了使用SELECT检索表数据,必须至少给出两条信息——想选择什 么,以及从什么地方选择。
检索单个列
输入
SELECT name FROM internship;
上述语句利用SELECT语句从internship表中检索一个名为 name的列。所需的列名在SELECT关键字之后给出,FROM 关键字指出从其中检索数据的表名。此语句的输出如下所示
输出
未排序数据 如果读者自己试验这个查询,可能会发现显示输 出的数据顺序与这里的不同。出现这种情况很正常。如果没有 明确排序查询结果(下一章介绍),则返回的数据的顺序没有 特殊意义。返回数据的顺序可能是数据被添加到表中的顺序, 也可能不是。只要返回相同数目的行,就是正常的。
结束SQL语句 多条SQL语句必须以分号(;)分隔。MySQL 如同多数DBMS一样,不需要在单条SQL语句后加分号。但特 定的DBMS可能必须在单条SQL语句后加上分号。当然,如果 愿意可以总是加上分号。事实上,即使不一定需要,但加上 分号肯定没有坏处。如果你使用的是mysql命令行,必须加上 分号来结束SQL语句。
SQL语句和大小写 请注意,SQL语句不区分大小写,因此 SELECT与select是相同的。同样,写成Select也没有关系。 许多SQL开发人员喜欢对所有SQL关键字使用大写,而对所有 列和表名使用小写,这样做使代码更易于阅读和调试。不过,一定要认识到虽然SQL是不区分大小写的,但有些标识 符(如数据库名、表名、列名)可能不同:在MySQL 4.1及之 前的版本中,这些标识符默认是区分大小写的;在MySQL 4.1.1 版本中,这些标识符默认是不区分大小写的。 最佳方式是按照大小写的惯例,且使用时保持一致。
使用空格 在处理SQL语句时,其中所有空格都被忽略。SQL 语句可以在一行上给出,也可以分成许多行。多数SQL开发人 员认为将SQL语句分成多行更容易阅读和调试。
检索多个列
要想从一个表中检索多个列,使用相同的SELECT语句。唯一的不同 是必须在SELECT关键字后给出多个列名,列名之间必须以逗号分隔。
当心逗号 在选择多个列时,一定要在列名之间加上逗号,但 最后一个列名后不加。如果在最后一个列名后加了逗号,将出现错误
下面的SELECT语句从internship表中选择3列。
输入
SELECT company,name,price FROM internship;
与前一个例子一样,这条语句使用SELECT语句从表internship中选择数据。在这个例子中,指定了3个列名,列名之间用逗 号分隔。此语句的输出如下
输出
数据表示 从上述输出可以看到,SQL语句一般返回原始的、 无格式的数据。数据的格式化是一个表示问题,而不是一个 检索问题。因此,表示(对齐和显示上面的价格值,用货币 符号和逗号表示其金额)一般在显示该数据的应用程序中规 定。一般很少使用实际检索出的原始数据(没有应用程序提 供的格式)
检索所有列
除了指定所需的列外(如上所述,一个或多个列),SELECT语句还可 以检索所有的列而不必逐个列出它们。这可以通过在实际列名的位置使 用星号(*)通配符来达到,如下所示
输入
SELECT * FROM internship;
输出
检索未知列 使用通配符有一个大优点。由于不明确指定列 名(因为星号检索每个列),所以能检索出名字未知的列。
了解如何使用SQL的SELECT语句来检索单个表列、多个表列 以及所有表列。