sql语言

DQL、DML、DDL、DCL的概念与区别

血红的双手。 提交于 2020-02-06 19:53:35
一、SQL语言 SQL(Structure Query Language)语言是数据库的核心语言。 SQL的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出,当时称SEQUEL。 1976年-----IBM公司的Sanjase研究所在研制RDBMS SYSTEM R 时改为SQL。 1979年-----ORACLE公司发表第一个基于SQL的商业化RDBMS产品。 1982年-----IBM公司出版第一个RDBMS语言SQL/DS。 1985年-----IBM公司出版第一个RDBMS语言DB2。 1986年-----美国国家标准化组织ANSI宣布SQL作为数据库工业标准。 SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言。 它功能强,效率高,简单易学易维护(迄今为止,我还没见过比它还好 学的语言)。然而SQL语言由于以上优点,同时也出现了这样一个问题: 它是非过程性语言,即大多数语句都是独立执行的,与上下文无关,而 绝大部分应用都是一个完整的过程,显然用SQL完全实现这些功能是很困 难的。所以大多数数据库公司为了解决此问题,作了如下两方面的工作: (1)扩充SQL,在SQL中引入过程性结构;(2)把SQL嵌入到高级语言中, 以便一起完成一个完整的应用。 二. SQL语言的分类 SQL语言共分为四大类:数据查询语言DQL

编程:何时选择SQL和何时选择NoSQL?

限于喜欢 提交于 2020-02-06 18:07:29
作为开发人员,我们可能倾向于快速切换。例如,当使用图形时,我们很想使用Neo4j,它实现了很棒的Cypher查询语言。使用JSON时,我们很乐意使用诸如Couchbase之类的东西,该东西实现了有趣的N1QL查询语言。这两种查询语言都受到SQL的极大启发,我认为这是明智的供应商选择(与MongoDB基于JSON的怪异查询语言相对),因为最终,SQL语言仍然是当时功能最强大,最受欢迎的4GL。曾经创造。 但是作为开发人员,我们不应该轻易做出这个决定。是的,起初,这些专用数据库似乎更合适。但是,运营团队维护,监视,修补,调整生产系统的额外成本一定不能被低估。在RDBMS生态系统中甚至如此。最近一个著名的例子是Uber从PostgreSQL切换(返回!)到MySQL: 请注意,他们之前只是反悔,只是为了后悔。事实是,有很多原因使您的运营团队倾向于始终使用相同的数据库,即使这在许可方面非常昂贵。但是,在许多情况下,以下操作的成本甚至更高: 与新的数据库供应商签订额外的许可和/或支持合同 为新技术找到熟练的DBA(利基数据库可能很难做到) 维护两个数据孤岛,并可能维持保持它们同步的成本 最终,有一个阈值: 通常,有一个阈值。在达到该阈值之前,请坚持使用RDBMS。在某些时候,请同时考虑或完全迁移。 就在数据库中使用JSON而言,这很简单: 偶尔的JSON存储:坚持使用RDBMS。

大型网站系统与 Java 中间件实践

孤者浪人 提交于 2020-02-06 14:13:47
http://wanglizhi.github.io/2016/07/27/JavaWeb-And-MiddleWare/ 第一章 分布式系统介绍 分布式系统的定义:组件分布在网络计算机上,组件间仅仅通过消息传递来通信并协调行动。 分布式系统的意义: 升级单机处理能力的性价比越来越低 单机处理能力存在瓶颈 处于稳定性和可用性的考虑 摩尔定律:当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍,性能也将提升一倍。 线程与进程的执行模式 冯诺依曼结构:输入设备、输入设备、运算器、控制器、存储器。 基于共享容器协同的多线程模式:经典如生产者消费者问题,对于存储数据的容器或对象,有线程安全和不安全之分,对于不安全的容器或对象,一般可以通过加锁或者通过Copy On Write的方式控制并发。 通过事件协同的多线程模式:避免死锁 多进程模式: 线程是属于进程的,一个进程内的多个线程共享了进程的内存空间;而多个进程间的内存空间是独立的,因此多个进程间通过内存共享、交换数据的方式与多个线程间就有所不同 此外,进程间通信、协调,以及通过一些事件通知或者等待一些互斥锁的释放方面也不一样 多进程相对于单进程多线程来说,资源控制会更容易实现;多进程中单个进程出现问题,不会造成整体的不可用 多进程之间可以共享数据,但其代价较大,会涉及序列化和反序列化的开销 网络通信基础知识

Oracle XQuery查询、构建和转换XML 1

萝らか妹 提交于 2020-02-06 02:51:42
Oracle XQuery查询、构建和转换XML(1) 在 Oracle 数据库 10 g 第 2 版中, Oracle 引入了一个与该数据库集成的全功能自带 XQuery 引擎,该引擎可用于完成与开发支持 XML 的应用程序相关的各种任务。 XQuery 是一种用于处理 XML 数据模型的查询语言,它实际上可操作任何类型的可用 XML 表达的数据。尽管 Oracle XQuery 实施使您可以使用数据库数据和外部数据源,但在处理数据库中存储的结构化数据方面, Oracle XML DB 通常可以显著提高性能。 本文提供的示例不仅演示了在什么场合下以及如何使用 XQuery 查询、构建和转换 XML ,而且还演示了如何监控和分析 XQuery 表达式的性能执行,从而找到更高效的方法来处理同一工作负载。 基于关系数据构建 XML 在需要的情况下(例如,向 Web 服务发送结果),您可能要基于关系数据构建 XML 。要在 Oracle 数据库 10 g 第 2 版之前的版本中完成此任务,通常需要使用 SQL/XML 生成函数,如 XMLElement 、 XMLForest 和 XMLAgg() 。在 Oracle 数据库 10 g 第 2 版中, XQuery 将比这些函数更为高效。具体而言,在 XQuery 表达式内部使用 ora:view XQuery 函数

SQL逻辑查询解析(补充篇)

◇◆丶佛笑我妖孽 提交于 2020-02-05 08:51:37
本文目录 表操作符 JOIN APPLY PIVOT UNPIVOT OVER子句 集合操作符 在我的上一篇博客“ SQL逻辑查询解析 ”中,我们详细讲述了SQL逻辑查询处理的各个步骤以及SQL语言的一些重要知识。为了SQL逻辑查询处理的完整性,在本篇中,我们会了解到SQL逻辑查询处理的更多内容,以作为对前一篇博客的补充。包括表操作符(JOIN,APPLY,PIVOT和UNPIVOT),OVER子句以及集合操作符(UNION,EXCEPT和INTERSECT)。 表操作符 从SQL SERVER 2008开始,SQL查询中支持四种表操作符:JOIN,APPLY,PIVOT和UNPIVOT。其中,APPLY,PIVOT和UNPIVOT并非ANSI标准操作符,而是T-SQL中特有的扩展。 下面列出了这四个表操作符的使用格式: (J) <left_table_expression> {CROSS | INNER | OUTER} JOIN <right_table_expression> ON <on_predicate> (A) <left_table_expression> {CROSS | OUTER} APPLY <right_table_expression> (P) <left_table_expression> PIVOT (<aggregate_func(

简单明了的SQL join解释

纵然是瞬间 提交于 2020-02-05 08:48:21
1. 数据库表锁定原理 1.1 目前的C/S,B/S结构都是多用户访问数据库,每个时间点会有成千上万个user来访问DB,其中也会同时存取同一份数据,会造成数据的不一致性或者读脏数据. 1.2 事务的ACID原则 1.3 锁是关系数据库很重要的一部分, 数据库必须有锁的机制来确保数据的完整和一致性. 1.3.1 SQL Server中可以锁定的资源: 1.3.2 锁的粒度: 1.3.3 锁的升级: 锁的升级门限以及锁升级是由系统自动来确定的,不需要用户设置. 1.3.4 锁的类型: (1) 共享锁: 共享锁用于所有的只读数据操作. (2) 修改锁: 修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象 (3) 独占锁: 独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。 (4) 架构锁 结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定义语言操作时,SQL Server采用Sch-M锁,编译查询时,SQL Server采用Sch-S锁。 (5) 意向锁 意向锁说明SQL Server有在资源的低层获得共享锁或独占锁的意向。 (6) 批量修改锁 批量复制数据时使用批量修改锁 1.3.4 SQL Server锁类型 (1) HOLDLOCK: 在该表上保持共享锁,直到整个事务结束

sql join连接 及 聚合函数

两盒软妹~` 提交于 2020-02-03 18:03:28
1 sql语句基础 sql(结构化查询语言)分为两个部分:DML,DDL DML 数据操作语言(查询和更新指令) 指令 含义 select 获取数据 update 更新数据 delete 删除数据 insert 插入数据 DDL 数据定义语言(create / alter / drop) 创建/修改/删除 database/table 创建/删除 index 2 聚合函数 聚合函数 count 配合 group by / having mysql聚合函数如:count(), max(), min(), sum()等 group by 将数据库的数据用’by’后面接的规则进行分组 having是分组(group by)后的筛选条件; where则是在分组前筛选 select activity_name, count(*) as count from draw_relation_record GROUP BY activity_name HAVING count(activity_name) > 4 select 与 group by配合使用时 在有group by操作中,select后面接的结果集字段只有两种:要么就只有group by后出现的字段,要么就是group by后出现的字段+聚合函数的组合 常用的五种聚合函数:min()求列中最小数值,max()求列中最大数值,avg(

Python3如何界面操作数据库

只愿长相守 提交于 2020-02-03 04:47:54
写在开始 Python作为一个目前比较热门的新生语言,很值得小伙伴们一学。之前博主讲解了JDBC技术、Hibernate框架、Mybatis框架三种Java操作数据库的方法,但是Java需要找jar包下载,有些小伙伴可能会出现jar包问题导致程序出现报错的情况,因此,今天博主来讲下Python操作数据库的方法,同时制作一个简易界面,可视化地操作数据库! 代码实现 #导入包 #pymysql是python3连接数据库的包 #tkinter是python的GUI界面包 #tkinter.messagebox是消息提示框包 import pymysql import tkinter as tk import tkinter . messagebox #数据库添加操作 def db_add ( ) : #连接数据库 db = pymysql . connect ( host = "localhost" , port = 3306 , user = "root" , password = "123a123a" , db = "test" ) #创建光标 cursor = db . cursor ( ) #编写SQL语句 sql = "insert into book(title,author,price) values('%s','%s',%s)" % ( v1 . get ( ) , v2

python连接Greenplum数据库

邮差的信 提交于 2020-02-02 05:55:37
配置greenplum客户端认证 配置pg_hba.conf cd /home/gpadmin/gpdbdata/master/gpseg-1 vim pg_hba.conf 增加 host all gpadmin 10.1.201.55/32 trust [gpadmin@ gpseg-1]$ export PGDATA=/home/gpadmin/gpdbdata/master/gpseg-1 [gpadmin@ gpseg-1]$ pg_ctl reload -D $PGDATA server signaled 使用Psycopg2访问数据库 Psycopg2 是 Python 语言下最常用的连接PostgreSQL数据库连接库,Psycopg2 的底层是由 C 语言封装 PostgreSQL 的标准库 libpq 实现的, 运行速度非常快,Psycopg2支持大型多线程应用的大量并发Insert和Update操作,Psycopg2完全兼容 DB API 2.0  安装Psycopg2 pip install psycopg2 Psycopg2使用参考文档 http://initd.org/psycopg/docs/index.html Psycopg2 连接PostgreSQL数据库接口 Psycopg2提供的操作数据库的两个重要类是 Connection , Cursor

python操作SQL

筅森魡賤 提交于 2020-02-02 05:21:22
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同 一、下载 安装 pip3 install pymysql 二、操作使用 1、执行SQL 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import pymysql 4 5 # 创建连接 6 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') 7 # 创建游标 8 cursor = conn.cursor() 9 10 # 执行SQL,并返回收影响行数 11 effect_row = cursor.execute("update hosts set host = '1.1.1.2'") 12 13 # 执行SQL,并返回受影响行数 14 #effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,)) 15 16 # 执行SQL,并返回受影响行数 17 #effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s