PostgreSQL中关于关键字(保留字)在表名和字段名中的应用文件解决
标识符和关键词
受限标识符或被引号修饰的标识符。它是由双引号(")包围的一个任意字符序列。一个受限标识符总是一个标识符而不会是一个关键字。因此"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中关于关键字(保留字)在表名和字段名中的应用文件解决的更多相关文章
- Navicat查询哪些表有指定字段名
通常需要查询某个字段来自于哪张表,在navicat中没有直接查哪些表有指定字段名的功能,只能用sql来查. 1.(按字段名查表)查询哪些表有指定字段名(比如查字段名article_id)的SQL: S ...
- MySQL 表名和字段名不要使用保留字命名
今天测试代码,新建了一张 Order 表,使用的 MySQL 数据库. 插入数据的时候报语法错误,我检查了好几遍,也没看出 SQL 语句哪里有问题,于是从 MyBatis 的日志里拷贝出 SQL 语句 ...
- SQL语句表名或者字段名和保留字冲突解决方法
最近开发遇到一个很奇葩的问题,简单做一下笔记 select * from Add ... 以上SQL语句会报错. 原因Add是表名,SQL语句保留字中又有Add 解决方法: select * from ...
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR( ...
- C# 如何获取SQL Server 中指定数据表的所有字段名和字段类型
如何获取指定数据表的所有字段名和字段类型.SqlConnection.GetSchema方法有2个重载形式,获取指定数据表的所有字段名和字段类型的秘密就在GetSchema (String, Stri ...
- Oracle中如何查询一个表的所有字段名和数据类型
Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_ ...
- oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息
来源于网上整理 总结了一下oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下,希望对大家有所帮助: 1.查询出所有的用户表select * fro ...
- Java查询MySQL数据库指定数据库中所有表名、字段名、字段类型、字段长度、字段描述
1,查询方法 public static List<Map<String, String>> getColumnInfoByTableName(String databaseN ...
- Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、
查询所有表名:select t.table_name from user_tables t;查询所有字段名:select t.column_name from user_col_comments t; ...
随机推荐
- lvs nginx HAProxy优缺点
LVS的优点:1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;2、工作稳定,自身有完 ...
- Linux - full name of command
pwd: print working directory cd: change directory ls: list ps: process status su: switch user mv: mo ...
- 迷宫bfs POJ3984
#include<stdio.h> int map[5][5]={0,1,0,0,0, 0,1,0,1,0, 0,0,0,0,0, 0,1,1,1,0, ...
- Bluetooth Low Energy介绍
目录 1. 介绍 2. 协议栈 3. 实现方案 3.1 硬件实现方案 3.2 软件实现方案 1. 介绍 Bluetooth low energy,也称BLE(低功耗蓝牙),在4.0规范中提出 BLE分 ...
- jenkins password reset,and git integration
0. SSH to server 1. Edit /opt/bitnami/apps/jenkins/jenkins_home/config.xml 2. set userSecurity to ...
- Magento - Rewrite机制一窥
看一个url例子 http://localhost/magento/index.php/customer/account/login 这里假定http://localhost/magento/ 是ma ...
- JS-002-修改元素属性(以按钮示例)
此文以修改 button 元素属性(例如:添加属性.修改属性.修改颜色样式.边框样式等)为简单示例,演示 js 修改 HTML 元素属性的基本方法,敬请参阅.若有不足之处敬请指正,不胜感激! 多不闲述 ...
- thinkphp 最简单的引入百度编辑器的方法
后台肯定是框架了...编辑器放在框架里面... 后台首页比如是这样的... <html> <frameset cols="10%,90%"> <fra ...
- cdev简单解析
1. cdev是linux用来管理字符设备的结构体,其在内核中采用数组结构设计,这样系统中有多少个主设备号就约定了数组大小,此设备号采用链表管理,同一主设备号下可以有多个子设备.设备即文件,上层应用要 ...
- 用仿ActionScript的语法来编写html5——第七篇,自定义按钮
第七篇,自定义按钮这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ ...