精华内容
下载资源
问答
  • 1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图。 .

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。

    视图是存储在数据字典里的一条select语句。通过创建视图可以提取数据的逻辑上的集合或组合。

    视图的优点:

    1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。

    2.用户通过简单的查询可以从复杂查询中得到结果。

    3.维护数据的独立性,试图可从多个表检索数据。

    4.对于相同的数据可产生不同的视图。

    视图分为简单视图和复杂视图:

    1、简单视图只从单表里获取数据,复杂视图从多表;

    2、简单视图不包含函数和数据组,复杂视图包含;

    3、简单视图可以实现DML操作,复杂视图不可以。

    创建视图语法结构:

    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
        [(alias[, alias]...)]
    
    AS subquery
         [WITH CHECK OPTION [CONSTRAINT constraint]]
         [WITH READ ONLY]

    语法解析:

    OR REPLACE    :若所创建的试图已经存在,则替换旧视图;

    FORCE:不管基表是否存在ORACLE都会自动创建该视图(即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用);

    NOFORCE  :如果基表不存在,无法创建视图,该项是默认选项(只有基表都存在ORACLE才会创建该视图)。

    alias:为视图产生的列定义的别名;

    subquery  :一条完整的SELECT语句,可以在该语句中定义别名;

    WITH CHECK OPTION  :插入或修改的数据行必须满足视图定义的约束;

    WITH READ ONLY       :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

    例如:

    CREATE 
    	OR REPLACE VIEW test_view ( PROJECT_ID, CONTRACT_ID,DEPT_NAME ) 
    	AS SELECT p.PROJECT_ID,p.CONTRACT_ID,t.DEPT_NAME
    FROM
    	PINFO_CONTRACTS p
    	LEFT JOIN T_SALE_CONTRACT_LIST_ALL t ON p.CONTRACT_ID = t.SALE_CONTRACT_ID
    	WHERE t.DEPT_NAME = '卫生健康事业部'
        

    实际:生成了对应的视图,数据也查询出来了。如下图:

    总结:

    1.视图一般用于封装复杂的查询数据如来源多个表的关联数据,单个表一般用处不是很大。

    2.视图数据属于临时数据一般是不能直接修改的,对于单个表创建的视图可以添加with read only 防止真实数据被修改。

    3.视图如果是多表关联创建,如果想改视图数据可以使用替代触发器实现。


    参考:https://www.cnblogs.com/zl520/p/10245633.html


    ❤如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ 

    ❤如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(๑′ᴗ‵๑)づ╭❤~

    ❤对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】

    ❤鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)

    展开全文
  • 数据库查询

    2018-07-16 15:07:05
    此时,更重要的是找到一些关于如何发出查询语句,而不是在创建表、将数据加载到它们中、以及从它们中检索数据。本节描述了输入查询的基本原则,使用几个查询,您可以尝试熟悉MySQL的工作原理。接下来的查询为:查询...

    查询

    首先请确保您已连接到服务器,如前一节所述。接下来的操作并没有选择要使用的数据库,但是没关系。此时,更重要的是找到一些关于如何发出查询语句,而不是在创建表、将数据加载到它们中、以及从它们中检索数据。本节描述了输入查询的基本原则,使用几个查询,您可以尝试熟悉MySQL的工作原理。
    接下来的查询为:查询当前mysql服务器的版本以及当前日期
    mysql> select version(),current_date;
    +------------+--------------+
    | version()  | current_date |
    +------------+--------------+
    | 5.7.21-log | 2018-03-30   |
    +------------+--------------+
    1 row in set (0.00 sec)
    
    mysql>
    
    该查询概述了MySQL的一些事:
    查询通常由以";"结尾的SQL语句组成(有些情况下;也可以省略,如前面的quit,后续还会学到其他的)
    在发出查询语句时,MySQL将其发送到服务器执行,并显示结果,然后打印另一个mysql提示符,表示它已准备好进行另一个查询。
    MySQL以表格的形式显示查询输出(行和列)。第一行包含列的标签。下面的行是查询结果。通常,列标签是从数据库表中提取的列的名称。如果检索表达式的值而不是表列(如刚才所示的示例),MySQL将使用表达式本身标记列。
    MySQL显示了返回的行数以及查询执行的时间,这使您对服务器性能有了大致的了解。这些值是不精确的,因为它们表示挂钟时间(不是CPU或机器时间),因为它们受服务器负载和网络延迟等因素的影响。(为了简洁起见,在本章的其余示例中有时不显示“集行”行)。
    关键字的输入不区分大小写,下面这几种情况是等效的
    mysql> SELECT VERSION(), CURRENT_DATE;
    mysql> select version(), current_date;
    mysql> SeLeCt vErSiOn(), current_DATE;
    
    MySQL服务器还可以作为一个简单的计算器
    mysql> SELECT SIN(PI()/4), (4+1)*5;
    +------------------+---------+
    | SIN(PI()/4)      | (4+1)*5 |
    +------------------+---------+
    | 0.70710678118655 |      25 |
    +------------------+---------+
    1 row in set (0.02 sec)
    
    你甚至可以在一行中输入多个语句。用分号结束每一个:
    mysql> SELECT VERSION(); SELECT NOW();
    +------------------+
    | VERSION()        |
    +------------------+
    | 5.7.21-log       |
    +------------------+
    1 row in set (0.00 sec)
    
    +---------------------+
    | NOW()               |
    +---------------------+
    | 2018-03-30 14:52:55 |
    +---------------------+
    1 row in set (0.00 sec)
    
    查询不需要在一行中给出所有语句,所以需要几行的冗长查询根本不是问题。MySQL通过查找终止分号来确定语句的结束位置,而不是查找输入行的结尾。换句话说,MySQL接受自由格式的输入:它收集输入行,但在看到分号之前不执行它们。
    mysql> SELECT
        -> USER()
        -> ,
        -> CURRENT_DATE;
    +----------------+--------------+
    | USER()         | CURRENT_DATE |
    +----------------+--------------+
    | root@localhost | 2018-3-30    |
    +----------------+--------------+
    
    在这个示例中,请注意在输入多行查询的第一行之后,提示符如何从MySQL>变为>。这就是MySQL如何表示它还没有看到完整的语句并等待其他语句。提示是你的朋友,因为它提供有价值的反馈。如果您使用该反馈,您就可以随时知道MySQL在等待什么。
    如果您决定不执行正在进入的查询,请通过输入 \c 取消它:
    mysql> SELECT
        -> USER()
        -> \c
    mysql>
    
    在这里,也请注意提示符。在输入 \c 之后,它会切换回mysql>提供反馈,表明MySQL已经准备好进行新的查询。
    下表显示了您可以看到的每个提示,并总结了它们对MySQL处于的状态的含义。
    提示符
    意义
    mysql>
    准备接受新的查询
    ->
    等待多行查询的下一行
    '>
    等待下一行,等待以一个引号开始的字符串完成。
    ">
    等待下一行,等待以双引号开始的字符串的完成(")
    `>
    等待下一行,等待以双引号开始的字符串的完成(`)
    /*>
    等待下一行,等待以*开始的注释完成
    字符串集合中出现">  和'>提示(另一种说法是MySQL正在等待字符串的完成)。在MySQL中,您可以编写由'或"字符包围的字符串(例如'hello'或"goodbye"),MySQL允许您输入跨越多行的字符串。当您看到'或">提示符时,这意味着输入了一行,该行包含一个以'或"引号字符开头的字符串,但尚未输入终止字符串的匹配引号。这常常表明你无意中漏掉了一个引号字符。例如
    mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
        '>
    
    如果输入此SELECT语句,然后按Enter并等待结果,则不会发生任何事情。不要想知道为什么这个查询需要这么长时间,请注意“提示符”提供的线索。它告诉你的MySQL预计的未结束的字符串的其余部分。(你看到声明中的错误了吗?,字符串 'Smith 缺少第二个单引号)
    此时,你该怎么做?最简单的事情就是取消查询。然而,在这种情况下,您不能只输入\C,因为MySQL将它解释为它正在收集的字符串的一部分。相反,输入结束引号字符(这样MySQL就知道你已经完成了字符串),然后输入\c
    mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30;
        '> '\c
    mysql>
    
    提示符更改为MySQL >,表明MySQL已准备好进行新的查询。
    展开全文
  • 数据库索引的选择

    千次阅读 2014-12-05 17:53:11
    为数据表创建索引是提升数据库查询性能的一个有效方式,如何创建索引,我们应该在哪些列上创建索引呢?在这之前我们有一个必须要理解的概念:索引的选择性。 索引的选择性是指索引列中不同值的数目与表中记录总数...

    为数据表创建索引是提升数据库查询性能的一个有效方式,如何去创建索引,我们应该在哪些列上创建索引呢?在这之前我们有一个必须要理解的概念:索引的选择性。

    索引的选择性是指索引列中不同值的数目与表中记录总数的比值。举个例子:假设一个表中有100条数据,该列的值中有80个不同的值,那么该列索引的选择性就是0.8,对于索引的选择性,值越高那么该列索引的效率也就越高。

            如何判断索引的选择性呢?这里 我介绍一种方法:

    select count(distinct 第一列||'%'||第二列)/count(*) from; 

            如:

            select count(distinct sex)/count(*) from customer;

            select count(distinct sex ||'%'||age)/count(*) from customer; 

        这种方法的优点是在创建索引前我们就能评估索引的选择性。


    展开全文
  • 如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录...
    一、什么是索引?
      索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

    假设我们创建了一个名为people的表:

    CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );

    然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分:

    可以看到,在数据文件中name列没有任何明确的次序。如果我们创建了name列的索引,MySQL将在索引中排序name列:

    对于索引中的每一项,mysql在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此,如果我们要查找name等于“Mike”记录的 peopleid(SQL命令为“SELECT peopleid FROM people WHERE name=’Mike’;”),MySQL能够在name的索引中查找“Mike”值,然后直接转到数据文件中相应的行,准确地返回该行的 peopleid(999)。在这个过程中,MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引,MySQL要扫描数据文件中的所有记录,即1000个记录!显然,需要MySQL处理的记录数量越少,则它完成任务的速度就越快。

    二、索引的类型
    MySQL提供多种索引类型供选择:

    普通索引
    这是最基本的索引类型,而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建:
    创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
    修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );

    唯一性索引
    这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。唯一性索引可以用以下几种方式创建:
    创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
    修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
    创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );

    主键
    主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列,你可能已经熟悉主键之类的概念了。主键一般在创建表的时候指定,例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。


    三、选择索引列
    在性能优化过程中,选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列:在WHERE子句中出现的列,在join子句中出现的列。请看下面这个查询:

    SELECT age ## 不使用索引
    FROM people WHERE firstname=’Mike’ ## 考虑使用索引
    AND lastname=’Sullivan’ ## 考虑使用索引

    这个查询与前面的查询略有不同,但仍属于简单查询。由于age是在SELECT部分被引用,MySQL不会用它来限制列选择操作。因此,对于这个查询来说,创建age列的索引没有什么必要。下面是一个更复杂的例子:

    SELECT people.age, ##不使用索引
    town.name ##不使用索引
    FROM people LEFT JOIN town ON
    people.townid=town.townid ##考虑使用索引
    WHERE firstname=’Mike’ ##考虑使用索引
    AND lastname=’Sullivan’ ##考虑使用索引

    与前面的例子一样,由于firstname和lastname出现在WHERE子句中,因此这两个列仍旧有创建索引的必要。除此之外,由于town表的townid列出现在join子句中,因此我们需要考虑创建该列的索引。

    那么,我们是否可以简单地认为应该索引WHERE子句和join子句中出现的每一个列呢?差不多如此,但并不完全。我们还必须考虑到对列进行比较的操作符类型。MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符(%或者_)开头的情形。例如,“SELECT peopleid FROM people WHERE firstname LIKE ‘Mich%’;”这个查询将使用索引,但“SELECT peopleid FROM people WHERE firstname LIKE ‘%ike’;”这个查询不会使用索引。


    展开全文
  • 如何建立关联 关联需要在创建表结束之后关联, 右击需要关联的表,选择“设计”,出现设计界面(下方右图) 点击添加,然后点击表和列规范,出现“...”选项,点开进行选择 打开界面如下图,设置主键表为bumen...
  • 如何优化数据库

    2019-03-25 11:23:35
    在索引的选择上,可以使用覆盖索引来减少回表,索引建的过多,会占用空间,所以可以使用联合索引,减少索引的创建,在对一些字符串字段建立索引时,为了节约空间以及减少分页,可以创建前缀索引。导致查询慢,还可能...
  • 当你发现随着系统升级,版本迭代,用户不断...为了保证你创建的索引能够提升性能而不是降低性能,作为开发人员,该选择什么样的列和数据类型来建立索引呢? 根据相关官方资料显示,有以下注意事项可以参考: 一...
  • 当我们创建好表格后 ... 选择到properties ...新建一个ys的数据库,然后按新建查询,把我们刚刚复制下来的粘贴上去,选择到ys的数据库 然后点击执行 就完成了,然后ys数据库就会多了我们在pd模型创建的表 ...
  • 子选择的理念很简单:一个选择查询安置在另一个查询内部,创建一个在单一声明搜索中不可用的资源。子选择允许查询的合并,结果组比较的责任落到了数据库中而不是应用软件代码中。 使用这个功能的一个途径是对两个...
  • MySQL中如何定义数据库

    千次阅读 2017-04-05 08:33:38
    前面我们已经安装好了MySQL,之后我们就可以通过MySQL客户端工具连接登录到MySQL服务器,然后就可以开始创建和使用数据库了,这里面会涉及一些数据库创建选择、查看、修改、和删除等。作为一个有追求的数据分析...
  • 数据库前言数据库存储数据库创建内置存储数据库外置存储数据库编写DAO插入操作更新操作删除操作查询操作Cursor API查询方法查询样例事务(Transaction)SQL注入案列防止SQL注入 前言 众所周知,数据存储在每个应用...
  • 存在关系t(a1,a2,a3),在t中存放了2万个元组,在t表上要频繁执行下述查询 s:查找a1的值在某一指定范围的元组个数,若DBMS支持B+树和HASH两... 所创建的索引应该是什么类型,创建该索引后DBMS如何执行该查询
  • 可以使用 SQL 查询查看数据库GUI 界面或直接在 Unix、linux 或 PC 内核上。 ##这个程序是如何运作的?## 该程序提取、解析并生成加载 int 的最终数据数据库。 使用预先定义的标准处理和验证数据之前传输到数据库...
  • sql基础操作数据库

    2020-09-16 08:21:24
    使用终端操作数据库 1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName; 3.如何查看该数据库中有哪些表?...7.如何创建一个数据库?创建一个pet表 create TABLE pet( name VA
  • 数据库(Mysql)----使用终端操作数据库

    万次阅读 2019-12-15 21:45:14
    使用终端操作数据库 1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName;...3.如何查看该数据库中有哪些表?...4.如何查询表中的数据?...6.如何数据库服务器中创建自己的数据库? cr...
  • 数据库资料

    2018-04-01 22:00:33
    SQL编程,实现功能强大的查询掌握创建索引、视图,快速访问数据库 掌握创建存储过程,实现复杂的业务规则理解触发器的原理,实现高级的约束目标了解设计数据库的步骤掌握如何绘制数据库的E-R图理解数据库的规范化-...
  • 数据库优化

    2020-02-18 00:43:16
    如何定位慢查询? 以慢查询的方式启动数据库,设置慢查询时间,超过这个时间的sql语句就会被记录下来,explain 查看sql为什么慢。 数据库的优化: 1.适当违反三范式(设置冗余字段)。 2.选择合适的索引。MYISAM:不...
  • mysql数据库基础1

    2021-01-23 08:29:58
    使用终端操作数据库 1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName;...3.如何查看该数据库中有哪些表?...4.如何查询表中的数据?...如何创建一个数据表? 创建一个...
  • 使用终端操作数据库

    2021-03-04 23:50:24
    1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName; 3.如何查看该数据库中有哪些表?...4.如何查询表中的数据?...5.如何退出数据库服务器?...如何创建一个数据表? 创建一个pet表 create T
  • oracle如何创建视图

    万次阅读 2018-06-11 11:17:30
    数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2.用户通过简单的查询可以从复杂查询中得到结果。 3.维护数据的独立性,试图可从多个表检索数据。 4.对于相同的数据可产生不同的视图。 ...
  • ## 如何利用JAVA实现SQLserver数据库的数据备份与数据还原? (以stu学生类为例) -需要四个包 List item ui:主窗体 dao:删除、添加、模糊查询功能 util:DBHelper类连接数据库 entity:stu学生实体类 (注:实体类也...
  • windows终端操作数据库

    2020-07-19 20:43:25
    7.如何创建一个数据表? 创建一个pet表8.如何查看数据表的架构?9.如何插入数据10.mysql 常用数据类型11.如何删除数据12.mysql建表中的约束1.主键约束:2.复合主键:3.自增约束:4.唯一约束:5.非空约束:6.默认约束7.外键...
  • --右键"数据库" --所有任务 --附加数据库 --选择你的.mdf文件名 --确定 --如果提示没有.ldf文件,是否创建,选择"是"查询分析器中的方法: --有数据文件及日志文件的情况 sp_attach_db 数据库名...
  • 数据库索引

    2019-09-30 16:59:47
    数据库索引 01.在创建索引的时候都会考虑哪些因素呢...02.做联合索引多个字段之间顺序你们是如何选择的呢? :识别度最高的字段放到最前面。在创建多列索引时,我们根据业务需求,where子句中使用最频繁...
  • 如何万网上传sqlserver数据库

    千次阅读 2007-06-29 16:06:00
    第一步:通过SQL脚本生成表结构,可以保证本地数据库中视图、存储过程、以及表的默认值、标识、主键等属性的完整性,避免由于DTS传输引起丢失属性的问题,同时使用查询分析器执行SQL脚本,在服务器端创建表结构;...
  • 来自developerWorks档案库 肯特·米利根(Kent Milligan) 存档日期:2019年5月14... 但是,如果数据库使用包含选择/省略条件的键控逻辑文件,则可能会妨碍SQE的使用。 本文介绍了如何使用IGNORE_DERIVED_INDEX...
  • 该项目演示了如何使用各种类型SQL查询来查找指定的数据子集。 数据库查询:MongoDB 该作业包括与包含的数据集(companies.json)一起使用的MongoDB查询的示例 数据集分析:Neo4j 该项目将遗传相关疾病的数据集...
  • 数据库基础

    2012-09-22 16:27:04
    §10.2.10 如何为用户创建公共同义词 229 第二部分 Oracle PL/SQL基础 231 第十一章 PL/SQL 程序设计简介 231 §11.1 概述 231 §11.2 SQL与PL/SQL 231 §11.2.1 什么是PL/SQL? 231 §11.2.1 PL/SQL的好处 232 §...
  • 1、选择数据库->新建查询,输入以下代码 if exists(select * from sys.databases where name='test1') drop database test1 --查询数据库名为test的数据库,如果有则exists返回true GO create database test1 --...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 918
精华内容 367
关键字:

数据库如何创建选择查询