标识符和关键词

受限标识符或被引号修饰的标识符。它是由双引号(")包围的一个任意字符序列。一个受限标识符总是一个标识符而不会是一个关键字。因此"select"可以用于引用一个名为“select”的列或者表,而一个没有引号修饰的select则会被当作一个关键词,从而在本应使用表或列名的地方引起解析错误。在上例中使用受限标识符的例子如下:UPDATE "my_table" SET "a" = 5;

在PostgreSQL关系型数据库中存在关键字的使用的问题,例如user 做表名,create table user (id int, name,varchar(20));创建的时候需要给表名user加上双引号"user";

[postgres@node1 bin]$ ./psql
psql (9.5.1)
Type "help" for help.

postgres=# create table user(id int,name varchar(20));
ERROR: syntax error at or near "user" at character 14
STATEMENT: create table user(id int,name varchar(20));
ERROR: syntax error at or near "user"
LINE 1: create table user(id int,name varchar(20));

postgres=# create table "user"(id int,name varchar(20));
CREATE TABLE

postgres=# insert into user values (1,'PostgreSQL');
ERROR: syntax error at or near "user" at character 13
STATEMENT: insert into user values (1,'PostgreSQL');
ERROR: syntax error at or near "user"
LINE 1: insert into user values (1,'PostgreSQL');

postgres=# insert into "user" values (1,'PostgreSQL');
INSERT 0 1

postgres=# insert into "user" values (1,'PostgreSQL');
INSERT 0 1
postgres=# select * from user;
current_user
--------------
postgres
(1 row)

postgres=# select * from "user";
id | name
----+------------
1 | PostgreSQL
(1 row)

postgres=# create table user_info(order int,name varchar(20));
ERROR: syntax error at or near "order" at character 24
STATEMENT: create table user_info(order int,name varchar(20));
ERROR: syntax error at or near "order"
LINE 1: create table user_info(order int,name varchar(20));

postgres=# create table user_info("order" int,name varchar(20));
CREATE TABLE

postgres=# insert into user_info values (1,'PostgreSQL');
INSERT 0 1

表中字段大小写问题

hotel_db_p7=# \d hotel_db_p.gt10_business_area;
Table "hotel_db_p.gt10_business_area"
Column | Type | Modifiers
----------+-----------------------+-----------
Code | character varying(20) | not null
CityCode | character varying(10) |
Name | character varying(50) |
hot_flag | character(1) |
Indexes:
"gt10_business_area_pkey" PRIMARY KEY, btree ("Code")

hotel_db_p7=# select CityCode from hotel_db_p.gt10_business_area;
ERROR: column "citycode" does not exist
LINE 1: select CityCode from hotel_db_p.gt10_business_area;
^
HINT: Perhaps you meant to reference the column "gt10_business_area.CityCode".

hotel_db_p7=# select "CityCode" from hotel_db_p.gt10_business_area;
CityCode
----------
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101
1101

PostgreSQL中关于关键字(保留字)在表名和字段名中的应用文件解决的更多相关文章

  1. Navicat查询哪些表有指定字段名

    通常需要查询某个字段来自于哪张表,在navicat中没有直接查哪些表有指定字段名的功能,只能用sql来查. 1.(按字段名查表)查询哪些表有指定字段名(比如查字段名article_id)的SQL: S ...

  2. MySQL 表名和字段名不要使用保留字命名

    今天测试代码,新建了一张 Order 表,使用的 MySQL 数据库. 插入数据的时候报语法错误,我检查了好几遍,也没看出 SQL 语句哪里有问题,于是从 MyBatis 的日志里拷贝出 SQL 语句 ...

  3. SQL语句表名或者字段名和保留字冲突解决方法

    最近开发遇到一个很奇葩的问题,简单做一下笔记 select * from Add ... 以上SQL语句会报错. 原因Add是表名,SQL语句保留字中又有Add 解决方法: select * from ...

  4. Oracle中使用游标获取指定数据表的所有字段名对应的字符串

    操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...

  5. C# 如何获取SQL Server 中指定数据表的所有字段名和字段类型

    如何获取指定数据表的所有字段名和字段类型.SqlConnection.GetSchema方法有2个重载形式,获取指定数据表的所有字段名和字段类型的秘密就在GetSchema (String, Stri ...

  6. Oracle中如何查询一个表的所有字段名和数据类型

    Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_ ...

  7. oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息

    来源于网上整理 总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表select * fro ...

  8. Java查询MySQL数据库指定数据库中所有表名、字段名、字段类型、字段长度、字段描述

    1,查询方法 public static List<Map<String, String>> getColumnInfoByTableName(String databaseN ...

  9. Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、

    查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...

随机推荐

  1. laravel 部分路由取消csrf

    // app/Http/Middleware/VerifyCsrfToken protected $except = [ 'webhook/*' ];

  2. Object-relational mapping

    https://en.wikipedia.org/wiki/Object-relational_mapping Object-relational mapping (ORM, O/RM, and O/ ...

  3. communicate with other processes, regardless of where they are running

    Advanced Programming in the UNIX Environment Third Edition   In the previous chapter, we looked at p ...

  4. cascading rollback 级联回滚

    Computer Science An Overview _J. Glenn Brookshear _11th Edition To emphasize the delicate nature of ...

  5. Machine Learning in Action -- 回归

    机器学习问题分为分类和回归问题 回归问题,就是预测连续型数值,而不像分类问题,是预测离散的类别 至于这类问题为何称为回归regression,应该就是约定俗成,你也解释不通 比如为何logistic ...

  6. (转)Linux下MatlabCompilerRuntime的安装和使用

    1MCR简介 MCR之前是 Matlab Component Runtime的缩写,后更名为Matlab Compiler Runtime.MCR实际上是一组独立的共享库,也即是常说的动态连接库,所起 ...

  7. extjs4 树列表 添加子节点 刷新所有父节点数据

    itemclick:function(view, record, item,index){console.log(record.parentNode) for(pNode = record.paren ...

  8. mysql 存储过程 php版本

    <?php /** * PHP操作Mysql存储过程示例 * * @author flyer0126 * @date 2011-12-23 * */ //配置数据库连接信息 $hostname ...

  9. 【转】NGUI创建UIRoot后报NullReferenceException的解决办法

    本文参考自 http://forum.china.unity3d.com/thread-1099-1-1.html 使用NGUI版本3.7.5. 在创建了一个UIRoot后,有时会报NullRefer ...

  10. 【Java 基础篇】【第六课】接口interface

    Java提供的这个interface的语法,目的就是将接口从类中剥离出来,构成独立的主体. 首先加入我们定义了这个杯子接口: interface Cup { void addWater(int w); ...