小Q同学受SQL启发,设计了更为简单更易上手的QAQL,该语言拥有如下语法:
1.创建表:
CREATE 表名称 (列名称1, 列名称2, 列名称3, ...)
该语句创建了一个表。保证语句中至少有一个列名称,至多有十个列名称,且表中的列名称互不相同。
例如:
CREATE person (name, age, gender)
该语句创建了一个如下所示的数据表:
person表
请注意,QAQL中所有数据均为字符串类型,判断数据相等时要求全字符匹配。
2.删除表:
DROP 表名称
该语句删除了一个表。
例如:
DROP person
该语句删除了表名称为person的表。
3.插入数据:
INSERT 表名称 ("值1", "值2", "值3", ...)
该语句向表尾插入一行数据,并且每个INSERT语句只插入一行数据,数据值要由引号引起。保证语句中至少有一个值,至多有十个值,如果表存在,保证值的数量等于表中列的数量。
例如:
INSERT person ("quailty", "20", "male")
该语句向person表尾中插入一行name="quailty",age="20",gender="male"的数据,
4.删除数据:
DELETE 表名称 WHERE 列名称1 = "值1", 列名称2 = "值2", ...
该语句删除表中满足条件的数据行,其中WHERE语句表示对表中所有满足条件的数据行进行操作,如省略,则对表中所有数据行进行操作。
例如:
DELETE person WHERE name = "quailty"
该语句删除person表中所有满足name="quailty"的数据行。
5.修改数据:
UPDATE 表名称 SET 列名称1 = "新值1", 列名称2 = "新值2", ... WHERE 列名称1 = "值1", 列名称2 = "值2", ...
该语句修改表中满足条件的数据行的指定列的值。保证进行修改的列不少于一个,不多于十个,且这些列的列名称互不相同。
例如:
UPDATE person SET name = "fzirsqh" WHERE age = "20", gender = "male"
该语句将person表中所有满足age="20"且gender="male"的数据行的"name"列改为"fzirsqh"。
6.查询数据:
SELECT 表名称 WHERE 列名称1 = "值1", 列名称2 = "值2", ...
该语句查询表中所有满足条件的数据行。
例如:
SELECT person WHERE age = "20"
该语句查询person表中所有满足age="20"的数据行。
对于所有语句,如果使用WHERE子句增加限制条件,保证条件不少于一个,不多于十个,且这些条件的列名称互不相同。
现在你需要解析QAQL语句,并响应QAQL的操作,SELECT语句的查询结果按照给定格式输出,其他语句执行后无需任何输出。
保证语句严格符合上述语法,所有语句中的表名称、列名称、数据值均为长度不超过10的只包含英文字母、数字和下划线的非空字符串。但不保证逻辑合法,如果操作不合法,即创建的数据表已经存在,或者删除的数据表不存在,或者插入、删除、修改、查询的数据表名称或列名称不存在(无论表是否为空),则输出"error"(不含引号),并忽略该条语句,但如果查询结果为空(即没有满足条件的数据),则只需按照给定格式输出表中的列名称。
查询结果的输出格式如下:
第一行为查询的数据表的列名称,用一个空格隔开,
接下来若干行,按照数据表中的顺序,输出所有满足条件的数据行,用空格隔开每一列的值,一个数据行输出一行。