操作ACCESS数据库注意事项,检索数据

验证SQL保留字

SQL 是一门语言,而不是一个应用程序,也不是一个数据库。

以下问题都是容易忽略,但却不容易找出问题的所在,让我头疼不少,故在此列出,即是一个总结,同样也给其他人参与!

SQL保留字验证

  • 检索单列
  • 北京pk赛车官网下载,检索多列
  • 检索所有列
  • 返回不同的值
  • 代码注释

1.使用参数形式执行SQL命令时,参数数组需与在SQL语句中参数名出现的位置及名称必须完全相同,否则执行不成功,但不会报错;

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

关键字(keyword):SQL 里有保留字和非保留字之分。根据标准,
保留字是那些真正的关键字;决不能用它们做标识符。非保留字只是在特定的环境里有特殊的含义,
而在其它环境里是可以用做标识符的。大多数非保留字实际上都是 SQL
声明的内建表和函数的名字。
而非保留字的概念实质上只是用来表示在某些场合里,在一个字上附加了一些预先定义的含义。

sql=”insert table(a,b,c) values(@a,@b,@c)”

mysql> select prod_name
    -> FROM Products;
+---------------------+
| prod_name           |
+---------------------+
| 8 inch teddy bear   |
| 12 inch teddy bear  |
| 18 inch teddy bear  |
| Fish bean bag toy   |
| Bird bean bag toy   |
| Rabbit bean bag toy |
| Raggedy Ann         |
| King doll           |
| Queen doll          |
+---------------------+
9 rows in set (0.00 sec)

params={@a,@c,@b}
 —>这是错误的

  • SQL语句以分号(;)结束
  • 不区分大小写
  • 忽略空格

params={@a,@b,@c}
 —>这是正确的

以上语句等同于:

 

  select prod_name FROM Products;

2.使用参数形式执行SQL命令时,当字段类型为时间类型时,需要显形声明参数类型为Date,不能采用参数名+值的形式

检索多列,列名以逗号(,)隔开:

sql=”update table set editdate=@dt”

mysql> select prod_name,prod_name,prod_price FROM Products;
+---------------------+---------------------+------------+
| prod_name           | prod_name           | prod_price |
+---------------------+---------------------+------------+
| 8 inch teddy bear   | 8 inch teddy bear   |       5.99 |
| 12 inch teddy bear  | 12 inch teddy bear  |       8.99 |
| 18 inch teddy bear  | 18 inch teddy bear  |      11.99 |
| Fish bean bag toy   | Fish bean bag toy   |       3.49 |
| Bird bean bag toy   | Bird bean bag toy   |       3.49 |
| Rabbit bean bag toy | Rabbit bean bag toy |       3.49 |
| Raggedy Ann         | Raggedy Ann         |       4.99 |
| King doll           | King doll           |       9.49 |
| Queen doll          | Queen doll          |       9.49 |
+---------------------+---------------------+------------+
9 rows in set (0.00 sec)

param=new
oledbparameter(“@dt”,DateTime.Now)
 –>这是错误的,执行时会报错:标准表达式中数据类型不匹配

检索所有列:

param=new
oledbparameter(“@dt”,OleDbType.Date){Value=DateTime.Now}
–>这是正确的

mysql> select * FROM Products;
+---------+---------+---------------------+------------+-----------------------------------------------------------------------+
| prod_id | vend_id | prod_name           | prod_price | prod_desc                                                             |
+---------+---------+---------------------+------------+-----------------------------------------------------------------------+
| BR01    | BRS01   | 8 inch teddy bear   |       5.99 | 8 inch teddy bear, comes with cap and jacket                          |
| BR02    | BRS01   | 12 inch teddy bear  |       8.99 | 12 inch teddy bear, comes with cap and jacket                         |
| BR03    | BRS01   | 18 inch teddy bear  |      11.99 | 18 inch teddy bear, comes with cap and jacket                         |
| BNBG01  | DLL01   | Fish bean bag toy   |       3.49 | Fish bean bag toy, complete with bean bag worms with which to feed it |
| BNBG02  | DLL01   | Bird bean bag toy   |       3.49 | Bird bean bag toy, eggs are not included                              |
| BNBG03  | DLL01   | Rabbit bean bag toy |       3.49 | Rabbit bean bag toy, comes with bean bag carrots                      |
| RGAN01  | DLL01   | Raggedy Ann         |       4.99 | 18 inch Raggedy Ann doll                                              |
| RYL01   | FNG01   | King doll           |       9.49 | 12 inch king doll with royal garments and crown                       |
| RYL02   | FNG01   | Queen doll          |       9.49 | 12 inch queen doll with royal garments and crown                      |
+---------+---------+---------------------+------------+-----------------------------------------------------------------------+
9 rows in set (0.00 sec)

 

检索 不同的值,即重复的不显示:

3.注意ACCESS数据库保留字,尽量不要使用该类字作为字段名,若确实需要使用,则应该加上方括号,显示说明

mysql> select distinct vend_id from Products;
+---------+
| vend_id |
+---------+
| BRS01   |
| DLL01   |
| FNG01   |
+---------+
3 rows in set (0.00 sec)

mysql> select vend_id from Products;
+---------+
| vend_id |
+---------+
| BRS01   |
| BRS01   |
| BRS01   |
| DLL01   |
| DLL01   |
| DLL01   |
| DLL01   |
| FNG01   |
| FNG01   |
+---------+
9 rows in set (0.00 sec)

sql=”update user set name=’xxx'”
 –>这是错误的

distinct 作用与所有列,而不是紧跟其后的列。

sql=”update [user] set [name]=’xxx'”
 –>这是正确的,显示说明非系统保留字

限制结果(如选择前5列)

mysql> select  prod_name FROM Products limit 5;
+--------------------+
| prod_name          |
+--------------------+
| 8 inch teddy bear  |
| 12 inch teddy bear |
| 18 inch teddy bear |
| Fish bean bag toy  |
| Bird bean bag toy  |
+--------------------+
5 rows in set (0.00 sec)

各种数据库这一SQL并不一致,SQLServer ,Access,DB2,MySQL,Oracle等。

显示后面5行:

mysql> SELECT prod_name
    -> FROM Products
    -> limit 5 OFFSET 5;
+---------------------+
| prod_name           |
+---------------------+
| Rabbit bean bag toy |
| Raggedy Ann         |
| King doll           |
| Queen doll          |
+---------------------+
4 rows in set (0.00 sec)

SQL语句是由DBMS处理的指令。语句的注释一般有3中:

    -- ;  #  ; /* */;

mysql>  SELECT prod_name -- xuanzelie
    -> FROM Products # zaibiaozhong
    -> limit 5 OFFSET 5;/*xuanzehang*/
+---------------------+
| prod_name           |
+---------------------+
| Rabbit bean bag toy |
| Raggedy Ann         |
| King doll           |
| Queen doll          |
+---------------------+
4 rows in set (0.00 sec)

发表评论

电子邮件地址不会被公开。 必填项已用*标注