select fieldname from tablename where pkfield = pkvalue
sql语句可以直接翻译:
选择 fieldname 从tablename 哪里的 pkfield = pkvalue
上面的翻译整理下就是:
从tablename中选择那些pkfield字段的值为pkvlaue的行中的字段fieldname的值。
例如,表t_test有如下结构和数据,其中pkfield为
主键:
pkfield fieldname elsefield
1 f1 e1
2 f2 e2
3 f3 e3
4 f4 e4
sql: select fieldname from t_test where pkfield = 2
含义:从t_test中选择那些pkfield字段的值为2的行中的字段fieldname的值。
那么返回结果就是:
fieldname
f2
如果sql为:sql: select fieldname from t_test where pkfield > 2,则返回结果为:
fieldname
f3
f4
从你给的这条sql语句来看,这不是具体的表,而是一个概括性的sql文。因为主键的英文是
primary key,从pkfield这个来看,应该是主键域(主键字段),而pkvalue则为主键值。这条sql需要将其中的关键字部分(如tablename、fieldname、pkvalue等)替换后才能应用于其他表。由于主键字段的取值唯一性,这样的sql语句是最多只能得到一条数据。
字段名和列名其实没有区别,甚至可以说是同一种东西,就像表格的
表头。比如说如下表结构:
表名:西游记
id 姓名 性别
1
孙悟空 男
2
猪八戒 男
3
唐三藏 女
在上面的表结构中,id、姓名、性别这三个都是字段名,也可以说是列名。自然这是纵向看的,纵向看表,会看到相似的东西,比如id,如果定义的表id为int型,则id列的值都必须是int型数据。那么横向来看,1 孙悟空 男,这组数据成为行,行之间也是有关系的,一行通常对应一个对象,行也称作
元组。每个元组的每一个元素,都是该元素所在列的一个取值而已。字段名通常确定后不会变,而值不同,它是数据库表的作用所在,一定会伴随数据值的增删改等操作,所以字段或者说是列,在表中的数目是有限的,是固定的,数据值或者是行,是不确定的,是随时可以增删改的。
至于fieldname和pkvalue,只是一种假设性的代名词,比如上面的表结构有如下sql:
select 姓名 from 西游记 where id = 2
就是将你所提供的sql:
select fieldname from tablename where pkfield = pkvalue
中的某些关键字替换后的结果,其中:
fieldname(字段域)被姓名代替,即这条sql文选择的是姓名这一列的值;
tablename(表名)被西游记代替,即数据来源是表西游记;
pkfield(主键域)被id代替,即选择条件是id;
pkvalue(主键值)被2代替,即选择条件的值为2的数据;
另外,pkfield可以不是主键,可以是任何列名,条件和条件的值之间也不必是=,可以是<>(不等于),<小于,>大于等等
运算符。