当前位置: 首页 > news >正文

h5网站建设 北京三门峡网站网站建设

h5网站建设 北京,三门峡网站网站建设,企业网站的切片怎么做,重庆网站开发小顶网PostgreSQL使用 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS)#xff0c;在灵活的BSD许可证下发行。PostgreSQL 9.0 #xff1a;支持64位windows系统#xff0c;异步流数据复制、Hot Standby#xff1b;生产环境主流的版本是PostgreSQL 12 BSD协议 与 GPL协议 …PostgreSQL使用 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS)在灵活的BSD许可证下发行。PostgreSQL 9.0 支持64位windows系统异步流数据复制、Hot Standby生产环境主流的版本是PostgreSQL 12 BSD协议 与 GPL协议 BSD协议可以自由的使用修改源代码也可以将修改后的代码作为开源或者专有软件再发布。 GPL协议某软件使用了GPL软件那么该软件也需要开源如果不开源就不能使用GPL软件。MySQL被Oracle所控制MySQL使用了GPL PostgreSQL与MySQL的比较 PG的索引类型比MySQL种类多PG的主备复制属于物理复制相对于MySQL基于binlog的逻辑复制PostgreSQL完全免费而且是BSD协议, MySQL是GPL协议被Oracle控制PG主表采用堆表存放MySQL采用索引组织表能够支持比MySQL更大的数据量。 总结来说 PostgreSQL适合严格的企业场景 MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景比如google、facebook、alibaba Windows下的PostgreSQL的下载 下载地址PostgreSQL下载 点击exe文件弹出 可以修改安装路径 选择安装组件不懂的选就是全部勾上 设置数据库的数据路径‘ 设置超级用户的密码 6.设置端口号可以直接用默认就行 6. 直接点 Next,直到以下图,取消勾选; 打开 pgAdmin 4 点击左侧的 Servers Postgre SQL 10 输入密码点击 OK 即可 9. 打开 SQL Shell(psql) ![在这里插入图片描述](https://img-blog.csdnimg.cn/32f8f25a7f8547c7ad463abc4a24db5b.png PostgreSQL远程访问 打开postgresql安装目录的data子目录 修改pg_hba.conf文件在IPV4部分添加新的一行:host all all 0.0.0.0/0 md5 控制面板–系统与安全–Windows防火墙,关闭防火墙重启服务 业务开发中大部分还是通过客户端连接工具操作PostgreSQL通过命令行操作的方式还是很少 我用的是navicat。远程访问连接问题可能会有多种大部分百度都可以解决 PostgreSQL的基本使用 登录 业务中我们用navicat连接居多很少会用命令行连接 psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432数据库操作 #创建数据库 CREATE DATABASE mydb;#查看所有数据库 \l#切换当前数据库 \c mydb#删除数据库 drop database dbname数据库表操作 表字段类型 整数型 smallint :2 字节, 小范围整数,范围-32768 到 32767integer4 字节常用的整数范围 -2147483648 到 2147483647bigint8 字节 大范围整数范围-9223372036854775808 到 9223372036854775807decimal 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位numeric 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位double8 字节 可变精度不精确 15 位十进制数字精度 业务中一般不用double, 最好用decimal避免出现精度误差问题 字符型 char(size)character(size)固定长度字符串size 规定了需存储的字符数由右边的空格补齐varchar(size)character varying(size)可变长度字符串size 规定了需存储的字符数text可变长度字符串。 时间型 timestamp日期和时间date日期无时间time时间 主要就是这几种还有几何布尔类型等常见是以上三种 表操作 业务中创建表的操作应该是通过可视化客户端工具创建 #创建表 CREATE TABLE test(id int,body varchar(100));#在表中插入数据 insert into test(id,body) values(1,hello,postgresql);#查看当前数据库下所有表 \d#查看表结构相当于desc \d test主键相关PostgreSQL 使用序列来标识字段的自增长数据类型有 smallserial、serial 和 bigserial 。这些属性类似于 MySQL 数据库支持的 AUTO_INCREMENT 属性。 SMALLSERIAL 2字节范围1到 32767SERIAL 4字节范围1 到 2,147,483,647BIGSERIAL 8字节范围1 到 922,337,2036,854,775,807 #创建表 CREATE TABLE COMPANY(ID SERIAL PRIMARY KEY,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL );#插入数据 INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES ( Paul, 32, California, 20000.00 );INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) VALUES (Allen, 25, Texas, 15000.00 ); #查询SQL SELECT * FROM COMPANY where id 1; # 更新SQL UPDATE COMPANY SET age 33 where id 1;PostgreSQL的语法基本和MySQL差不多 业务开发中一般都是写curd, 而建表等操作通过可视化工具执行效率更高效 Schema PostgreSQL 模式SCHEMA可以看着是一个表的集合。 一个模式可以包含视图、索引、数据类型、函数和操作符等。 相同的对象名称可以被用于不同的模式中而不会出现冲突例如 schema1 和 myschema 都可以包含名为 mytable 的表。 使用模式的优势 ● 允许多个用户使用一个数据库并且不会互相干扰。 ● 将数据库对象组织成逻辑组以便更容易管理。 ● 第三方应用的对象可以放在独立的模式中这样它们就不会与其他对象的名称发生冲突。 模式类似于操作系统层的目录但是模式不能嵌套。 #创建schema create schema myschema;create table myschema.company(ID INT NOT NULL,NAME VARCHAR (20) NOT NULL,AGE INT NOT NULL,ADDRESS CHAR (25),SALARY DECIMAL (18, 2),PRIMARY KEY (ID) );#删除schema drop schema myschema#删除一个模式以及其中包含的所有对象 DROP SCHEMA myschema CASCADE;结构如上创建了schema之后可以在两个schema中创建同名的表 类似库中库的感觉 数据表的索引 唯一索引 与 普通索引 CREATE UNIQUE INDEX idx_dev_id_user_id ON myschema.device USING btree (deviceid,userid )psql普通索引 CREATE INDEX id_dev_id ON myschema.device USING btree (deviceid )索引底层使用的是Btree结构 是排好序的结构通过树的遍历快速找到目标结果大大减少IO次数 若不使用索引则进行全表扫描 树结构如图所示 哈希索引 通过哈希表结构存储数据 存储数据时 对查询条件进行hash得到哈希码后再从哈希表中拿到目标值缺点是只能支持 , in查询 不支持范围查询 CREATE INDEX idx_name ON myschema.person USING hash (name )业务开发中基本不会使用到这个索引业务中很多场景都需要进行模糊搜索范围搜索而哈希索引是支持不了的 倒排索引 Generalized Inverted Index, 简称gin;它处理的数据类型的值不是原子的而是由元素组成的。GIN索引由元素的B树组成TID的B树或平面列表链接到该B树的叶行。使用于全文搜索场景解决全文搜索性能低问题可解决like “%xxx%” 索引失效问题 增加pg_trgm拓展 CREATE EXTENSION pg_trgm;给字段建立索引 CREATE INDEX idx_addres ON myschema.person USING gin (address )正排索引 整个key是索引 value是整行记录 例如 搜索name为zhangsan, value为“zhangsan”整条记录 正排索引的key是 “zhangsan”, value保存整条记录 对应ID主键索引普通索引唯一索引是正排索引 倒排索引 倒排表以字或词为关键字进行索引表中关键字所对应的记录表项记录了出现这个字或词的所有文档一个表项就是一个字表段它记录该文档的ID和字符在该文档中出现的位置情况。 由于每个字或词对应的文档数量在动态变化所以倒排表的建立和维护都较为复杂但是在查询的时候由于可以一次得到查询关键字所对应的所有文档所以效率高于正排表。 在全文检索中检索的快速响应是一个最为关键的性能而索引建立由于在后台进行尽管效率相对低一些但不会影响整个搜索引擎的效率。 倒排表的结构图如下图 GIN(Generalized Inverted Index, 通用倒排索引)是一个存储对(key, posting list)集合的索引结构其中key是一个键值而posting list 是一组出现过key的位置。如(‘hello’, ’14:2 23:4’)中表示hello在14:2和23:4这两个位置出现过在PG中这些位置实际上就是元组的tid。 在表中的每一个属性在建立索引时都可能会被解析为多个键值所以同一个元组的tid可能会出现在多个key的posting list中。 通过这种索引结构可以快速的查找到包含指定关键字的元组因此GIN索引特别适用于支持全文搜索而PG的GIN索引模块也就是为了支持全文搜索而开发的。 psql gist索引 Gist(Generalized Search Tree)即通用搜索树。和btree一样也是平衡的搜索树Btree用于等值、范围搜索生活部分场景中需要存储多维数据例如地理位置、空间位置、图像数据等经常要判断是否在 某个位置 某个点的数据我即判断地理位置的包含那么我们就可以使用gist索引了 使用场景 几何类型支持位置搜索按距离排序。范围类型支持位置搜索。空间类型PostGIS支持位置搜索按距离排序。 其场景暂时没想到 简单使用 1.创建一张测试表 create table company(id int, location point); 2. 给location设置索引 CREATE INDEX idx_location ON myschema.company USING gist (location )添加随机插入10万条数据 insert into company select generate_series(1,100000), point(round((random()*1000)::numeric, 2), round((random()*1000)::numeric, 2)); 查询 select * from company where circle ((100,100) 50) location; 把坐标(100,100) 上下50范围内的数据全找出来 结果如下 使用explain查看执行计划 explain (analyze,verbose,timing,costs,buffers) select * from company where circle ((100,100) 50) location;再查看分页的执行计划 explain (analyze,verbose,timing,costs,buffers) select * from company where circle ((100,100) 50) location ORDER BY id limit 10 OFFSET 11;出现了Bitmap index scan, Bitmap heap scan, sort三种 分页搜索场景 业务开发中搜索经常会涉及到分页操作而PostgreSQL和MySQL不太一致 不是使用limit xxx, xxx, 而是使用了limit xx offset xx; 例如一页10条数据 搜索第一页: select * from company where circle ((100,100) 50) location ORDER BY id limit 10 OFFSET 1;第二页则是 第11条值20条 select * from company where circle ((100,100) 50) location ORDER BY id limit 10 OFFSET 11;用户操作 #创建用户并设置密码 CREATE USER username WITH PASSWORD password; CREATE USER test WITH PASSWORD test;#修改用户密码 $ ALTER USER username WITH PASSWORD password;#数据库授权,赋予指定账户指定数据库所有权限 $ GRANT ALL PRIVILEGES ON DATABASE dbname TO username; #将数据库 mydb 权限授权于 test GRANT ALL PRIVILEGES ON DATABASE mydb TO test; #但此时用户还是没有读写权限需要继续授权表 GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xxx; #注意该sql语句必须在所要操作的数据库里执行#移除指定账户指定数据库所有权限 REVOKE ALL PRIVILEGES ON DATABASE mydb from test#删除用户 drop user test# 查看用户 \du pg_hba.conf配置中的第一项设置的意思是本地用户通过unix socket登陆时使用peer方式认证。 # local is for Unix domain socket connections only local all all peerpeer是用PostgreSQL所在的操作系统上的用户登陆。 peer方式中client必须和PostgreSQL在同一台机器上。只要当前系统用户和要登陆到PostgreSQL的用户名相同就可以登陆。 在刚部署PostgreSQL之后切换到系统的postgres用户后直接执行psql就能进入PostgreSQL就是这个原因当前系统用户为名postgrePostgreSQL中的用户名也是postgre)。 PostgreSQL 角色管理 在PostgreSQL 里没有区分用户和角色的概念“CREATE USER” 为 “CREATE ROLE” 的别名这两个命令几乎是完全相同的唯一的区别是CREATE USER 命令创建的用户默认带有LOGIN属性而CREATE ROLE 命令创建的用户默认不带LOGIN属性 postgres# CREATE ROLE david;  //默认不带LOGIN属性 CREATE ROLE postgres# CREATE USER sandy;  //默认具有LOGIN属性 CREATE ROLE postgres# \duList of rolesRole name | Attributes | Member of ----------------------------------------------------------------------david | Cannot login | {}postgres | Superuser, Create role, Create DB, Replication | {}sandy | | {}postgres# postgres# SELECT rolname from pg_roles ;rolname ----------postgresdavidsandy (3 rows)postgres# SELECT usename from pg_user; //角色david 创建时没有分配login权限所以没有创建用户usename ----------postgressandy (2 rows)postgres#更新权限 postgres# ALTER ROLE bella WITH LOGIN; ALTER ROLE postgres# \duList of rolesRole name | Attributes | Member of ----------------------------------------------------------------------bella | Create DB | {}david | | {}postgres | Superuser, Create role, Create DB, Replication | {}renee | Create DB | {}sandy | | {}postgres#角色属性 login:只有具有 LOGIN 属性的角色可以用做数据库连接的初始角色名。superuser: 数据库超级用户createdb: 创建数据库权限createrole: 允许其创建或删除其他普通的用户角色(超级用户除外)password: 在登录时要求指定密码时才会起作用比如md5或者password模式跟客户端的连接认证方式有关replication: 做流复制的时候用到的一个用户属性一般单独设定。 命令行模式下的常用命令 \password命令设置密码 \q命令退出 \h查看SQL命令的解释比如\h select。 \?查看psql命令列表。 \l列出所有数据库。 \c [database_name]连接其他数据库。 \d列出当前数据库的所有表格。 \d [table_name]列出某一张表格的结构。 \du列出所有用户。总结 PostgreSQL 功能比MySQL强大一些 语法上接近 crud学起来很快同样拥有唯一索引普通索引哈希索引 另外多了GINGIST索引的新特性 业务场景更加广泛了oracle是要钱的 PostgreSQL是免费的 未来严格的企业场景中Oracle占比会越来越少逐渐被PostgreSQL替代Mysql PostgreSQL 以后是潮流开发者必须要懂这两块以后还有进阶内容需要不断学习
http://www.hkea.cn/news/14305869/

相关文章:

  • 深圳找个人做网站宁波谷歌seo推广公司
  • 寿县住房与城乡建设局网站网站基础开发成本
  • 企业建站报价广告设计培训哪家好
  • 厦门云端企业网站建设php5+mysql网站开发实例精讲
  • 企业网站建设定制网站建设公司网络开发
  • 求个网站你懂我的意思吗山东广播电视台
  • 做动态h5的网站市场调研的四个步骤
  • 成都建好的网站出租青州网页定制
  • 设计师新手接单网站管理网站模板下载免费下载
  • 平面设计创意网站建设施工企业招标领导小组组长的职责
  • 做家装的网站有哪些seo首页优化
  • 网站推广找新昌品牌网站建设
  • dede 手机网站体育建设网站首页
  • 建筑网站新闻写那些好代做毕设要注册答疑网站
  • 响应式学校网站模板下载科技苑
  • 源码哥网站的模板mysql的网站开发
  • 电影网站盗链怎么做app快速开发框架
  • 淄博网站制作定制技术网站风格设计
  • 在线制作网站公章成都网站建设优秀公司
  • 网站微信建设运维经验分享图网站模板怎么改
  • 晋江网站有什么职业做wordpress文章html页面
  • 品牌网站建设坚持大蝌蚪变装的他wordpress
  • 广东seo网站设计营销工具网站建设需要什么硬件和软件有哪些
  • ie的常用网站wordpress赞赏功能
  • 广西网站运营wordpress调用自定义字段
  • 福建建设工程设计备案网站智慧团建注册志愿者入口
  • 叫别人建个网站多少钱如何在虚拟主机上面搭建wordpress
  • 如何做推广麦当劳的网站wordpress ssl部署
  • 电梯网站建设app开发公司选择指南及误区
  • 做网站需要花多少钱wordpress宠物主题