postgresql非空的简单介绍-成都快上网建站

postgresql非空的简单介绍

org.postgresql.util.PSQLException: ERROR: relation "public.users" does not exist

不一定,参数错误也会报这样的错,我遇到一个非空的列,设置null属性,也报这样的错

宜宾网站建设公司创新互联公司,宜宾网站设计制作,有大型网站制作公司丰富经验。已为宜宾上1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的宜宾做网站的公司定做!

postgresql和mysql的区别

特性 MySQL PostgreSQL

实例 通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。

通过执行 Postmaster 进程(pg_ctl)启动实例。一个实例可以管理一个或多个数据库,这些数据库组成一个集群。集群是磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中。使用 initdb 创建第一个数据库。一台机器上可以启动多个实例。

数据库 数据库是命名的对象集合,是与实例中的其他数据库分离的实体。一个 MySQL 实例中的所有数据库共享同一个系统编目。 数据库是命名的对象集合,每个数据库是与其他数据库分离的实体。每个数据库有自己的系统编目,但是所有数据库共享 pg_databases。

数据缓冲区 通过 innodb_buffer_pool_size 配置参数设置数据缓冲区。这个参数是内存缓冲区的字节数,InnoDB 使用这个缓冲区来缓存表的数据和索引。在专用的数据库服务器上,这个参数最高可以设置为机器物理内存量的 80%。 Shared_buffers 缓存。在默认情况下分配 64 个缓冲区。默认的块大小是 8K。可以通过设置 postgresql.conf 文件中的 shared_buffers 参数来更新缓冲区缓存。

数据库连接 客户机使用 CONNECT 或 USE 语句连接数据库,这时要指定数据库名,还可以指定用户 id 和密码。使用角色管理数据库中的用户和用户组。 客户机使用 connect 语句连接数据库,这时要指定数据库名,还可以指定用户 id 和密码。使用角色管理数据库中的用户和用户组。

身份验证 MySQL 在数据库级管理身份验证。 基本只支持密码认证。 PostgreSQL 支持丰富的认证方法:信任认证、口令认证、Kerberos 认证、基于 Ident 的认证、LDAP 认证、PAM 认证

加密 可以在表级指定密码来对数据进行加密。还可以使用 AES_ENCRYPT 和 AES_DECRYPT 函数对列数据进行加密和解密。可以通过 SSL 连接实现网络加密。 可以使用 pgcrypto 库中的函数对列进行加密/解密。可以通过 SSL 连接实现网络加密。

审计 可以对 querylog 执行 grep。 可以在表上使用 PL/pgSQL 触发器来进行审计。

查询解释 使用 EXPLAIN 命令查看查询的解释计划。 使用 EXPLAIN 命令查看查询的解释计划。

备份、恢复和日志 InnoDB 使用写前(write-ahead)日志记录。支持在线和离线完全备份以及崩溃和事务恢复。需要第三方软件才能支持热备份。 在数据目录的一个子目录中维护写前日志。支持在线和离线完全备份以及崩溃、时间点和事务恢复。 可以支持热备份。

JDBC 驱动程序 可以从 参考资料 下载 JDBC 驱动程序。 可以从 参考资料 下载 JDBC 驱动程序。

表类型 取决于存储引擎。例如,NDB 存储引擎支持分区表,内存引擎支持内存表。 支持临时表、常规表以及范围和列表类型的分区表。不支持哈希分区表。 由于PostgreSQL的表分区是通过表继承和规则系统完成了,所以可以实现更复杂的分区方式。

索引类型 取决于存储引擎。MyISAM:BTREE,InnoDB:BTREE。 支持 B-树、哈希、R-树和 Gist 索引。

约束 支持主键、外键、惟一和非空约束。对检查约束进行解析,但是不强制实施。 支持主键、外键、惟一、非空和检查约束。

存储过程和用户定义函数 支持 CREATE PROCEDURE 和 CREATE FUNCTION 语句。存储过程可以用 SQL 和 C++ 编写。用户定义函数可以用 SQL、C 和 C++ 编写。 没有单独的存储过程,都是通过函数实现的。用户定义函数可以用 PL/pgSQL(专用的过程语言)、PL/Tcl、PL/Perl、PL/Python 、SQL 和 C 编写。

触发器 支持行前触发器、行后触发器和语句触发器,触发器语句用过程语言复合语句编写。 支持行前触发器、行后触发器和语句触发器,触发器过程用 C 编写。

系统配置文件 my.conf Postgresql.conf

数据库配置 my.conf Postgresql.conf

客户机连接文件 my.conf pg_hba.conf

XML 支持 有限的 XML 支持。 有限的 XML 支持。

数据访问和管理服务器 OPTIMIZE TABLE —— 回收未使用的空间并消除数据文件的碎片

myisamchk -analyze —— 更新查询优化器所使用的统计数据(MyISAM 存储引擎)

mysql —— 命令行工具

MySQL Administrator —— 客户机 GUI 工具 Vacuum —— 回收未使用的空间

Analyze —— 更新查询优化器所使用的统计数据

psql —— 命令行工具

pgAdmin —— 客户机 GUI 工具

并发控制 支持表级和行级锁。InnoDB 存储引擎支持 READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ 和 SERIALIZABLE。使用 SET TRANSACTION ISOLATION LEVEL 语句在事务级设置隔离级别。 支持表级和行级锁。支持的 ANSI 隔离级别是 Read Committed(默认 —— 能看到查询启动时数据库的快照)和 Serialization(与 Repeatable Read 相似 —— 只能看到在事务启动之前提交的结果)。使用 SET TRANSACTION 语句在事务级设置隔离级别。使用 SET SESSION 在会话级进行设置。

MySQL相对于PostgreSQL的劣势:

MySQL

PostgreSQL

最重要的引擎InnoDB很早就由Oracle公司控制。目前整个MySQL数据库都由Oracle控制。

BSD协议,没有被大公司垄断。

对复杂查询的处理较弱,查询优化器不够成熟

很强大的查询优化器,支持很复杂的查询处理。

只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join)。

都支持

postgresql数据库 用sql语句 怎么在指定位置添加字段

1、在创建好的数据库book,选中数据库book新建表,鼠标右键新建表。

2、添加数据库表字段id、ano、aname、asex、aage,注意非空项。

3、关闭插入字段窗口,这时会提示是否保存提示,选择“是”保存。

4、点击”是“按钮,输入表名称t_author_info,点击保存,创建数据库表。

5、刷新表,鼠标右键点击”设计“,打开表设计窗口,插入字段。

6、打开查询SQL窗口,编辑插入字段SQL语句,找到SQL 语句语法。就完成了。

如何解决postgresql 错误:08p01:无效的信息格式

Appendix A. PostgreSQL错误代码

PostgreSQL服务器发出的所有消息都赋予 了五个字符的错误代码,这些代码遵循 SQL 的"SQLSTATE" 代码的习惯。需要知道发生了什么错误条件的应用通常应该测试错误代码, 而不是查看文本错误信息。这些错误代码轻易不会随着PostgreSQL 的版本更新而修改,并且一般也不会随着错误信息的本地化而发生修改。 请注意有些(但不是全部)PostgreSQL生成的错误代码是 由 SQL 标准定义的;有些标准没有定义的错误条件是发明的或者是从其它数据库借来的。

根据标准,错误代码的头两个字符表示错误类别, 而后三个字符表示在该类别内特定的条件。因此, 那些不能识别特定错误代码的应用仍然可以从错误类别中推断要做什么。

Table A-1里面列出了PostgreSQL 8.2.3 定义的所有错误代码(有些实际上目前并没有使用, 但是 SQL 标准定义了)。错误类别也列出在此。对于每个错误类别都有个 "标准"的错误代码,它的最后三个字符是000。 这个代码只用于那些落在该类别内,但是没有赋予任何更准确的代码的错误条件。

PL/pgSQL用于每个错误代码的条件名和表中显示的措辞相同, 只是用下划线代替了空白。比如,代码22012, DIVISION BY ZERO 的条件名是DIVISION_BY_ZERO。 条件名大小写无关。(请注意PL/pgSQL并不识别警告,这一点和错误、条件名正相反;那些是 00, 01, 02 类别。)

Table A-1. PostgreSQL 错误代码

错误代码

含义

常量名

Class 00 — 成功完成

00000 成功完成 successful_completion

Class 01 — 警告

01000 警告 warning

0100C 返回了动态结果 dynamic_result_sets_returned

01008 警告,隐含补齐了零比特位 implicit_zero_bit_padding

01003 在集合函数里消除null null_value_eliminated_in_set_function

01007 没有赋予权限 privilege_not_granted

01006 没有撤销权限 privilege_not_revoked

01004 字符串数据在右端截断 string_data_right_truncation

01P01 废弃的特性 deprecated_feature

Class 02 — 没有数据(按照 SQL 标准的要求,这也是警告类)

02000 没有数据 no_data

02001 返回了没有附加动态结果集 no_additional_dynamic_result_sets_returned

Class 03 — SQL语句尚未结束

03000 SQL语句尚未结束 sql_statement_not_yet_complete

Class 08 — 连接异常

08000 连接异常 connection_exception

08003 连接不存在 connection_does_not_exist

08006 连接失败 connection_failure

08001 SQL 客户端不能建立 SQL 连接 sqlclient_unable_to_establish_sqlconnection

08004 SQL 服务器拒绝建立 SQL 连接 sqlserver_rejected_establishment_of_sqlconnection

08007 未知的事务解析 transaction_resolution_unknown

08P01 违反协议 protocol_violation

Class 09 — Triggered Action Exception触发器动作异常

09000 触发器动作异常 triggered_action_exception

Class 0A — 不支持特性

0A000 不支持此特性 feature_not_supported

Class 0B — 非法事务初始化

0B000 非法事务初始化 invalid_transaction_initiation

Class 0F — 定位器异常

0F000 定位器异常 locator_exception

0F001 非法的定位器声明 invalid_locator_specification

Class 0L — 非法赋权者

0L000 非法赋权者 invalid_grantor

0LP01 非法赋权操作 invalid_grant_operation

Class 0P — 非法角色声明

0P000 非法角色声明 invalid_role_specification

Class 20 — 未发现情况

20000 未发现情况 case_not_found

Class 21 — 势违例

21000 势违例 cardinality_violation

Class 22 — 数据异常

22000 数据异常 data_exception

2202E 数组下标错误 array_subscript_error

22021 字符不在规定范围内 character_not_in_repertoire

22008 日期时间字段溢出 datetime_field_overflow

22012 被零除 division_by_zero

22005 赋值中出错 error_in_assignment

2200B 逃逸字符冲突 escape_character_conflict

22022 INDICATOR OVERFLOW指示器溢出 indicator_overflow

22015 内部字段溢出 interval_field_overflow

2201E 对数运算的非法参数 invalid_argument_for_logarithm

22014 NTILE函数的无效参数 invalid_argument_for_ntile_function

22016 N倍函数的无效参数 invalid_argument_for_nth_value_function

2201F 指数函数的无效参数 invalid_argument_for_power_function

2201G BUCKET函数的非法参数 invalid_argument_for_width_bucket_function

22018 类型转换时非法的字符值 invalid_character_value_for_cast

22007 非法日期时间格式 invalid_datetime_format

22019 非法的逃逸字符 invalid_escape_character

2200D 非法的逃逸字节 invalid_escape_octet

22025 非法逃逸序列 invalid_escape_sequence

22P06 非标准使用逃逸字符 nonstandard_use_of_escape_character

22010 非法指示器参数值 invalid_indicator_parameter_value

22023 非法参数值 invalid_parameter_value

2201B 非法正则表达式 invalid_regular_expression

2201W 无效的行数限制 invalid_row_count_in_limit_clause

2201X 在结果抵消子句中无效的行数 invalid_row_count_in_result_offset_clause

22009 非法时区显示值 invalid_time_zone_displacement_value

2200C 逃逸字符的非法使用 invalid_use_of_escape_character

2200G 最相关类型不匹配 most_specific_type_mismatch

22004 不允许 NULL 值 null_value_not_allowed

22002 NULL 值不能做指示器参数 null_value_no_indicator_parameter

22003 数字值超出范围 numeric_value_out_of_range

22026 字符串数据长度不匹配 string_data_length_mismatch

22001 字符串数据右边被截断 string_data_right_truncation

22011 抽取子字符串错误 substring_error

22027 截断错误 trim_error

22024 未结束的 C 字符串 unterminated_c_string

2200F 零长度的字符串 zero_length_character_string

22P01 浮点异常 floating_point_exception

22P02 非法文本表现形式 invalid_text_representation

22P03 非法二进制表现形式 invalid_binary_representation

22P04 错误的COPY文件格式 bad_copy_file_format

22P05 不可翻译字符 untranslatable_character

2200L 不是一个XML文档 not_an_xml_document

2200M 无效的XML文档 invalid_xml_document

2200N 无效的XML内容 invalid_xml_content

2200S 无效的XML评论 invalid_xml_comment

2200T 无效的XML处理指令 invalid_xml_processing_instruction

Class 23 — 违反完整性约束

23000 违反完整性约束 integrity_constraint_violation

23001 约束限制 restrict_violation

23502 NOT NULL VIOLATION违反非空 not_null_violation

23503 违反外键约束 foreign_key_violation

23505 违反唯一约束 unique_violation

23514 违反检查 check_violation

23P01 违反排除 exclusion_violation

Class 24 — 非法游标状态

24000 非法游标状态 invalid_cursor_state

Class 25 — 非法事务状态

25000 非法事务状态 invalid_transaction_state

25001 活跃的SQL状态 active_sql_transaction

25002 分支事务已经激活 branch_transaction_already_active

25008 持有的指针要求同样的隔离级别 held_cursor_requires_same_isolation_level

25003 对分支事务的不恰当的访问方式 inappropriate_access_mode_for_branch_transaction

25004 对分支事务的不恰当的隔离级别 inappropriate_isolation_level_for_branch_transaction

25005 分支事务没有活跃的SQL事务 no_active_sql_transaction_for_branch_transaction

25006 只读的SQL事务 read_only_sql_transaction

25007 不支持混和的模式和数据语句 schema_and_data_statement_mixing_not_supported

25P01 没有活跃的SQL事务 no_active_sql_transaction

25P02 在失败的SQL事务中 in_failed_sql_transaction

Class 26 — 非法SQL语句名

26000 非法SQL语句名 invalid_sql_statement_name

Class 27 — 触发数据更改违规

27000 触发数据更改违规 triggered_data_change_violation

Class 28 — 非法授权声明

28000 非法授权声明 invalid_authorization_specification

28P01 非法密码 invalid_password

Class 2B — 依然存在依赖的优先级描述符

2B000 依然存在依赖的优先级描述符 dependent_privilege_descriptors_still_exist

2BP01 依赖性对象仍然存在 dependent_objects_still_exist

Class 2D — 非法的事务终止

2D000 非法的事务终止 invalid_transaction_termination

Class 2F — SQL过程异常

2F000 SQL过程异常 sql_routine_exception

2F005 执行的函数没有返回语句 function_executed_no_return_statement

2F002 不允许修改SQL数据 modifying_sql_data_not_permitted

2F003 企图使用禁止的SQL语句 prohibited_sql_statement_attempted

2F004 不允许读取SQL数据 reading_sql_data_not_permitted

Class 34 — 非法指针名

34000 非法指针名 invalid_cursor_name

Class 38 — 外部过程异常

38000 外部过程异常 external_routine_exception

38001 不允许包含的SQL containing_sql_not_permitted

38002 不允许修改SQL数据 modifying_sql_data_not_permitted

38003 企图使用禁止的SQL语句 prohibited_sql_statement_attempted

38004 不允许读取SQL数据 reading_sql_data_not_permitted

Class 39 — 外部过程调用异常

39000 外部过程调用异常 external_routine_invocation_exception

39001 返回了非法的SQL状态 invalid_sqlstate_returned

39004 不允许使用NULL null_value_not_allowed

39P01 违反触发器协议 trigger_protocol_violated

39P02 违反 SRF 协议 srf_protocol_violated

Class 3B — 保存点异常

3B000 保存点异常 savepoint_exception

3B001 无效的保存点声明 invalid_savepoint_specification

Class 3D — 非法目录名

3D000 非法目录名 invalid_catalog_name

Class 3F — 非法模式名

3F000 非法模式名 invalid_schema_name

Class 40 — 事务回滚

40000 事务回滚 transaction_rollback

40002 违反事务完整性约束 transaction_integrity_constraint_violation

40001 串行化失败 serialization_failure

40003 不知道语句是否结束 statement_completion_unknown

40P01 侦测到死锁 deadlock_detected

Class 42 — 语法错误或者违反访问规则

42000 语法错误或者违反访问规则 syntax_error_or_access_rule_violation

42601 语法错误 syntax_error

42501 权限不够 insufficient_privilege

42846 无法进行类型转换 cannot_coerce

42803 分组错误 grouping_error

42P20 开窗口错误 windowing_error

42P19 非法递归 invalid_recursion

42830 非法的外键 invalid_foreign_key

42602 非法名称 invalid_name

42622 名称过长 name_too_long

42939 保留名称 reserved_name

42804 数据类型不匹配 datatype_mismatch

42P18 模糊数据类型 indeterminate_datatype

42809 错误的对象类型 wrong_object_type

42703 未定义的字段 undefined_column

42883 未定义的函数 undefined_function

42P01 未定义的表 undefined_table

42P02 未定义的参数 undefined_parameter

42704 未定义对象 undefined_object

42701 重复的字段 duplicate_column

42P03 重复的游标 duplicate_cursor

42P04 重复的数据库 duplicate_database

42723 重复的函数 duplicate_function

42P05 重复的预备语句 duplicate_prepared_statement

42P06 重复的模式 duplicate_schema

42P07 重复的表 duplicate_table

42712 重复的别名 duplicate_alias

42710 重复的对象 duplicate_object

42702 模糊的字段 ambiguous_column

42725 模糊的函数 ambiguous_function

42P08 模糊的参数 ambiguous_parameter

42P09 模糊的别名 ambiguous_alias

42P10 非法字段引用 invalid_column_reference

42611 非法字段定义 invalid_column_definition

42P11 非法游标定义 invalid_cursor_definition

42P12 非法数据库定义 invalid_database_definition

42P13 非法函数定义 invalid_function_definition

42P14 非法预备语句定义 invalid_prepared_statement_definition

42P15 非法模式定义 invalid_schema_definition

42P16 非法表定义 invalid_table_definition

42P17 非法对象定义 invalid_object_definition

Class 44 — 违反 WITH CHECK 选项

44000 违反 WITH CHECK 选项 with_check_option_violation


本文标题:postgresql非空的简单介绍
网页URL:http://kswjz.com/article/dscjicp.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流