精华内容
下载资源
问答
  • SQL语句实现关系代数中“除法”

    千次阅读 2016-12-04 20:39:30
    R与S的除运算可以得到一个新的关系P(X),P是R中满足下列条件的元组在X 属性列上的投影: 元组在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。2.求解步骤过程:第一步:找出关系R和关系S中相同的属性,即Y属性。在...

    1. 除法运算的定义:

    给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算可以得到一个新的关系P(X),P是R中满足下列条件的元组在X 属性列上的投影: 元组在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。


    2.求解步骤过程:

    第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);

    第二步:被除关系R中与S中不相同的属性列是X,关系R在属性X上做取消重复值的投影;

    第三步:求关系R中X属性对应的像集Y;

    第四步:判断包含关系,R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。


    3.SQL中除法运算的实现

    R(X,Y)÷S(Y,Z)的运算用结构化语言SQL 语句可表达为下列形式:

    select distinct R.X from R R1
    where not exists
    ( 
        select S.Y from S
        where not exists
        ( 
            select * from R R2
            where R2.X=R1.X and R2.Y=S.Y 
        ) 
    )
    展开全文
  • PsTools: 该命令行工具包提供列出本地/远程计算机进程、远程运行进程、重启、转储事件日志、及更多功能. PsExec: 在远程系统执行进程. PsFile: 查看本地被远程打开文件. PsGetSid: 显示计算机或用户 SID . ...
  • 9.4.3 聚集表上的非聚集索引 398 9.5 索引创建的基本方法 400 9.6 基本的索引使用模式 402 9.6.1 使用聚集索引 403 9.6.2 使用非聚集索引 405 9.6.3 使用唯一索引 416 9.7 高级的索引使用案例 416 9.7.1 ...
  • 9.4.3 聚集表上的非聚集索引 398 9.5 索引创建的基本方法 400 9.6 基本的索引使用模式 402 9.6.1 使用聚集索引 403 9.6.2 使用非聚集索引 405 9.6.3 使用唯一索引 416 9.7 高级的索引使用案例 416 9.7.1 ...
  • 今晚是圣诞节,大家收到礼物或送...至于关系模型,则是一种所谓建立在关系上的模型,其包含三个方面,分别为:数据结构:数据存储的形式,二维表(行和);操作指令集合:所有的 SQL 语句;完整性约束:表内数据约...

    今晚是圣诞节,大家收到礼物或送出吗?反正小编是没有的~!

    120115379_1_20171226083031969

    数据库

    1 定义

    数据库,可以简单的解释为:高效的存储和处理数据的介质(主要分为磁盘和内存两种)。

    120115379_2_2017122608303215

    关系型数据库

    1 定义

    关系型数据库,是一种建立在关系模型(数学模型)上的数据库。

    至于关系模型,则是一种所谓建立在关系上的模型,其包含三个方面,分别为:数据结构:数据存储的形式,二维表(行和列);

    操作指令集合:所有的 SQL 语句;

    完整性约束:表内数据约束(字段与字段)和表与表之间的约束(外键)。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!

    120115379_3_20171226083032109

    4 SQL

    SQL:Structured Query Language,结构化查询语言(数据以查询为主,99% 都是在进行查询操作)。

    SQL 主要分为三种:DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库、表),代表指令为create、drop和alter等。

    DML:Data Manipulation Language,数据操作语言,用来对数据进行操作(表中的内容)代表指令为insert、delete和update等,不过在 DML 内部又单独进行了一个分类,即 DQL(Data Query Language),数据查询语言,代表指令为select.

    DCL:Data Control Language,数据控制语言,主要是负责(用户)权限管理,代表指令为grant和revoke等。

    SQL 是关系型数据库的操作指令,是一种约束,但不强制,类似于 W3C,因此这意味着:不同的数据库产品(如 Oracle 和 MySQL)内部可能会有一些细微的区别。

    120115379_4_20171226083032219

    服务器对象

    由于没办法完全了解服务器内部的结构,因此只能粗略的分析数据库服务器的内部结构。

    一般来说,将 MySQL 数据库服务器的内部对象分为四层,分别为:数据管理系统(DBMS)–> 数据库(DB)–> 表(Table)–> 字段(Filed).

    120115379_5_20171226083032375

    120115379_6_20171226083032484

    2 查询数据库

    查看全部 –> 基本语法:show databases;

    查看部分(模糊查询)–> 基本语法:show databases like 'pattern';

    其中,pattern是匹配模式,有两种,分别为:%:表示匹配多个字符;

    _:表示匹配单个字符。

    此外,在匹配含有下划线_的数据库名称的时候,需要在下划线前面加上反斜线\_进行转义操作。

    示例:show databases like 'TBL%';表示匹配所有TBL开头的数据库。

    查看数据库的创建语句 –> 基本语法:show create database + 数据库名称;

    在这里,查看的结果有可能与咱们书写的 SQL 语句不同,这是因为数据库在执行 SQL 语句之前会优化 SQL,系统保存的是优化后的结果。

    3 更新数据库

    在这里,需要注意:数据库的名字不可以修改。

    数据库的修改仅限库选项,即字符集和校对集(校对集依赖字符集)。

    基本语法:alter database + 数据库名称 + [库选项];charset/character set[=] 字符集;

    collate[=] 校对集;

    示例:alter database TBL_ERROR_CODE charset gbk;表示修改此数据库的字符集为gbk.

    4 删除数据库

    基本语法:drop database + 数据库名称;

    在这里,需要注意:在删除数据库之前,应该先进行备份操作,因为删除为不可逆操作,所以不要随意删除数据库。

    表操作

    1 新增表

    基本语法:

    create table [if not exists] + 表名( 字段名称 数据类型, …… 字段名称 数据类型 /* 最后后一行,不需要加逗号 */)[表选项];

    其中,if not exists表示

    如果表名不存在,就执行创建代码;如果表名存在,则不执行创建代码。

    表选项则是用来控制表的表现形式的,共有三种,分别为:字符集设定:charset/ character set+ 具体字符集,用来表示数据存储的编码格式,常用的字符集包括GBK和UTF8等。

    校对集设定:collate+ 具体校对集,表示数据比较的规则,其依赖字符集。

    存储引擎:engine+具体存储引擎,默认为InnoDB,常用的还有MyISAM.

    由于任何表都归属于某个数据库,因此在创建表的时候,都必须先指定具体的数据库。在这里,指定数据库的方式有两种,分别为:第 1 种:显式的指定表所属的数据库,示例

    create table if not exists test.student( name varchar(10), age int, /* 整型不需要指定具体的长度 */ grade varchar(10) /* 最后后一行,不需要加逗号 */)charset utf8;第 2 种:隐式的指定表所属的数据库,示例

    use test; /* use + 数据库名称,表示切换到指定的数据库,这句命令其实不加分号也可以,但不建议这么做 */create table if not exists student( name varchar(10), age int, /* 整型不需要指定具体的长度 */ grade varchar(10) /* 最后后一行,不需要加逗号 */)charset utf8;

    2 查询表

    查看全部 –> 基本语法:show tables;

    查看部分(模糊查询)–> 基本语法:show tables like 'pattern';

    其中,pattern是匹配模式,有两种,分别为:%:表示匹配多个字符;

    _:表示匹配单个字符。

    此外,在匹配含有下划线_的表名的时候,需要在下划线前面加上反斜线\_进行转义操作。

    示例:show tables like '%t';表示匹配所有以t结尾的表。

    查看表的创建语句 –> 基本语法:show create table + 表名;

    在这里,咱们也可以用\g和\G代替上述语句中的;分号,其中\g等价于分号,\G则在等价于分号的同时,将查的表结构旋转90度,变成纵向结构。

    查看表中的字段信息 –> 基本语法:desc/describe/show columns from + 表名;

    3 更新表

    在这里,需要注意:表的修改,分为修改表本身和修改表中的字段。

    第 1 类:修改表本身修改表名,基本语法:rename table 旧表名 to 新表名;

    修改表选项,基本语法:alter table + 表名 + 表选项[=] + 值;

    第 2 类:修改表中的字段,新增、修改、重命名和删除新增字段,基本语法:alter table + 表名 + add + [column] + 字段名 + 数据类型 + [列属性][位置];

    其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).

    示例:alter table student add column id int first;

    修改字段,基本语法:alter table + 表名 + modify + 字段名 + 数据类型 + [列属性][位置];

    其中,位置表示此字段存储的位置,分为first(第一个位置)和after + 字段名(指定的字段后,默认为最后一个位置).

    示例:alter table student modify name char(10) after id;

    120115379_7_20171226083032562

    4 删除表

    基本语法:

    /** 可以一次删除多张表 */drop table + 表1, 表2 ... ;

    在这里,需要注意:此删除为不可逆操作,希望大家谨慎使用。

    数据操作

    1 新增数据

    对于数据的新增操作,有两种方法。

    第 1 种:给全表字段插入数据,不需要指定字段列表,但要求数据的值出现的顺序必须与表中的字段出现的顺序一致,并且凡是非数值数据,都需要用引号(建议使用单引号)括起来。

    基本语法:insert into + 表名 + values(值列表)[,(值列表)];

    示例:insert into test valus('charies',18,'3.1');

    第 2 种:给部分字段插入数据,需要选定字段列表,字段列表中字段出现的顺序与表中字段的顺序无关,但值列表中字段值的顺序必须与字段列表中的顺序保持一致。

    基本语法:insert into + 表名(字段列表) + values(值列表)[,(值列表)];

    示例:insert into test(age,name) valus(18,'guo');

    2 查询数据

    查看全部 –> 基本语法:select * from + 表名 + [where 条件];

    示例:select * from test;

    查看部分 –> 基本语法:select + 字段名称[,字段名称] + from + 表名 + [where 条件];

    示例:select name,age,grade from test where age = '18';

    3 更新数据

    基本语法:update + 表名 + set + 字段 = 值 + [where 条件];

    示例:update test set age = 20 where name = 'guo';

    在这里,建议尽量加上where条件,否则的话,操作的就是全表数据。

    此外,判断更新操作是否成功,并不是看 SQL 语句是否执行成功,而是看是否有记录受到影响,即affected的数量大于1时,才是真正的更新成功。

    4 删除数据

    基本语法:drop from + 表名 + [where 条件];

    示例:drop from test where grade = '3.1';

    在这里,需要注意:此删除为不可逆操作,希望大家谨慎使用。

    中文数据问题

    中文数据问题的本质就是字符集的问题。

    由于计算机仅识别二进制数据,而且人类则更倾向于识别字符(符号),因此就需要一个二进制与字符的对应关系,也就是字符集。

    在咱们通过 MySQL 数据库的客户端向服务器插入中文数据的时候,有可能失败,原因则可能是客户端和服务器的字符集设置不同导致的,例如:客户端的字符集为gbk,则一个中文字符,对应两个字节;

    服务器的字符集为utf8,则一个中文字符,对应三个字节。

    这样显然会在编码转换的过程中出现问题,从而导致插入中文数据失败。

    由于所有的数据库服务器表现的一些特性都是通过服务器端的变量来保持的,因此系统会先读取自己的变量,看看具体的表现形式。这样的话,咱们就可以通过以下语句查看服务器到底识别哪些字符集:

    -- 查看服务器识别的全部字符集show character set;

    120115379_8_20171226083032656

    通过以上查询,咱们会发现:服务器是万能的,其支持所有字符集。

    既然服务器支持这么多字符集,总会有一种是服务器默认的和客户端打交道的字符集。因此,咱们可以通过以下语句查看服务器默认的对外处理的字符集:

    -- 查看服务器默认的对外处理的字符集show variables like 'character_set%';

    120115379_9_20171226083032922标注1:服务器默认的客户端传来的数据字符集为utf8;

    标注2:连接层字符集为utf8;

    标注3:当前数据库的字符集为utf8;

    标注4:服务器默认的对外处理的字符集utf8.

    通过以上查询,咱们会发现:服务器默认的对外处理的字符集是utf8.

    那么反过来,咱们在通过客户端的属性查看客户端支持的字符集:

    120115379_10_20171226083032984

    显然,咱们已经找到了问题的根源,确实是:客户端支持的字符集为gbk,而服务器默认的对外处理的字符集为utf8,因此产生矛盾。

    既然问题已经找到了,那么解决方案就是:修改服务器默认接收的字符集为gbk.

    -- 修改服务器默认接收的字符集为 GBK(不区分大小写)set character_set_client = gbk;

    这样的话,咱们再插入中文数据的时候,就会插入成功啦!But,在咱们查看数据的时候,又发现了一个问题,就是之前咱们插入的中文数据显示乱码啦!不过这也正常,因为查询的时候,数据的来源是服务器(utf8),解析数据的是客户端,而客户端仅识别gbk格式的数据,显示乱码也就在意料之中啦!

    因此,解决方案就是:修改服务器给客户端的数据字符集为gbk.

    -- 修改服务器给客户端的数据字符集为 GBK(不区分大小写)set character_set_results = gbk;

    120115379_11_2017122608303362

    如上图所示,向服务器插入中文数据的问题已经解决啦!

    此外,咱们之前使用的 SQL 语句:

    -- 修改的只是会话级别,即当前客户端当次连接有效,关闭后失效set 变量 = 值;

    这样的话,每当咱们重启客户端的时候,都要依次重新进行设置,比较麻烦,因此咱们可以使用快捷的设置方式,即:

    set names 字符集;

    例如,

    /*** 恒等于 set character_set_client = gbk;* 恒等于 set character_set_results = gbk;* 恒等于 set character_set_connection = gbk;*/set names gbk;

    表示上述一条语句,将同时改变三个变量的值。其中,connection为连接层,是字符集转换的中间者,如果其和client和results的字符集一致,则效率更高,不一致也没有关系。

    校对集问题

    校对集,其实就是数据的比较方式。

    校对集,共有三种,分别为:_bin:binary,二进制比较,区分大小写;

    _cs:case sensitive,大小写敏感,区分大小写;

    _ci:case insensitive,大小写不敏感,不区分大小写。

    查看(全部)校对集 –> 基本语法:show collation;

    120115379_12_2017122608303394

    如上图所示,MySQL 数据库支持百多种校对集。

    接下来,咱们在一起看看校对集的应用,因为只有当数据进行比较的时候,校对集才会生效。在这里,咱们用utf8的_bin和_ci两种校对集进行比较:

    -- 创建两张使用不同校对集的表create table my_collate_bin( name char(10))charset utf8 collate utf8_bin;create table my_collate_ci( name char(10))charset utf8 collate utf8_general_ci;

    120115379_13_20171226083033203

    如上图所示,咱们创建了两张表,分别为my_collate_bin和my_collate_ci,其校对集分别为_bin和_ci. 然后,分别向这两张表中添加数据:

    -- 向表中添加数据insert into my_collate_bin values ('a'),('A'),('B'),('b');insert into my_collate_ci values ('a'),('A'),('B'),('b');

    再分别查看两张表中的数据:

    -- 查看表中的数据select * from my_collate_bin;select * from my_collate_ci;

    120115379_14_20171226083033281

    下面,咱们根据表中的某个字段(在这里my_collate_bin和my_collate_ci都仅有一个字段)进行排序,其基本语法为:

    order by + 字段名 + [asc/desc];

    其中,asc表示升序,desc表示降序,默认为升序。执行如下 SQL 语句:

    -- 排序比较select * from my_collate_bin order by name;select * from my_collate_ci order by name;

    120115379_15_20171226083033375

    如上图所示,显然校对集生效啦!

    此外,咱们需要特别注意的是: 校对集必须在没有数据之前声明好,如果有了数据之后,再进行校对集的修改,则修改无效。

    120115379_16_20171226083033422

    如有侵权请联系小编删除哦!

    展开全文
  • 1.5.2 网络上的PL/SQL 1.6 一些建议 1.6.1 不要太着急 1.6.2 不要怕寻求帮助 1.6.3 采用一种创建新的甚至激进的方法 第2章 创建并运行PL/SQL代码 2.1 在数据库中导航 2.2 创建和编辑源代码 2.3 SQL*Plus ...
  • 确保您具有列出的依赖项(请注意,此处大多数插件都依赖GeBoCommon ,并将附带一个副本,但您始终可以单独获取最新版本)。 大多数插件在插件配置菜单中都有一定级别配置。 插件说明 吉宝通 包含此存储库中...
  • 深入浅 Koa 原理

    2021-01-08 14:41:42
    动态类就是通过代码生成出的方法集合。额,都是我自己起名,概念也是我自己琢磨,就是简单归个类。 三个静态类分别是<code>Request</code>,<code>Context</code>,<code>...
  • 1368: 传递闭包 [数学]

    2017-04-04 12:32:37
    题目描述 给一个集合关系的矩阵表示,请输出它传递闭包的矩阵表示。输入 第一行是一个正整数n(n),代表矩阵的行数与数。...在数学中,在集合 X 上的二元关系 R 的传递闭包是包含 R 的 X 上的最小的传递关

    题目描述
    给出一个集合关系的矩阵表示,请输出它传递闭包的矩阵表示。

    输入
    第一行是一个正整数n(n<100),代表矩阵的行数与列数。

    下面n行描述一个矩阵。

    输出
    请输出其的传递闭包的矩阵表示。

    样例输入
    3
    1 0 1
    1 1 0
    0 1 1
    样例输出
    1 1 1
    1 1 1
    1 1 1
    提示
    在数学中,在集合 X 上的二元关系 R 的传递闭包是包含 R 的 X 上的最小的传递关系。

    #include<stdio.h>
    int main()
    {
        int n;
        scanf("%d",&n);
            int i,j,k,a[100][100];
            for(i=0;i<n;i++)
                for(j=0;j<n;j++)
                scanf("%d",&a[i][j]);
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                if(a[j][i]==1)
                {
                    for(k=0;k<n;k++)
                    a[j][k]=(a[i][k]|a[j][k]);
                }
            }
            for(i=0;i<n;i++)
            {
                for(j=0;j<n;j++)
                printf("%d ",a[i][j]);
                printf("\n");
            }
        return 0;
    }
    展开全文
  • LINGO软件学习

    2009-08-08 22:36:50
    当采用方式①时,必须显式罗列所有要包含在派生集中成员,并且罗列每个成员必须属于稠密集。使用前面例子,显式罗列派生集成员: allowed(product,machine,week)/A M 1,A N 2,B N 1/; 如果需要生成一个大...
  • 3.9.2 三元(或高度)联系上的约束 60 3.10 小结 60 复习题 61 练习题 61 实验题 66 选读文献 66 第4章 增强的实体-联系(EER)建模 68 4.1 子类、超类和继承 68 4.2 特化和泛化 69 4.2.1 ...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.4 新的64位机上的64位类型是什么样的? 指针声明 1.5 这样的声明有什么问题?char*p1,p2;我在使用p2的时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char*p;*p=...
  • 同学打包代码

    2012-06-22 13:48:26
    Database类是一个表的集合,而表又由行和组成。例如,下面雇员信息表包含三个记录,每个记录有四个字段( Employee、Name、Department和Boss)。 雇员 姓名 部门 部门经理 111-11-1234 Cruz ACC Warder 213-44-...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    书中列出了C用户经常问400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道495个C语言问题》结构...
  • UML之对象图,包图

    2018-03-03 11:13:53
    对象图对象图是类图一个实例,表示系统在具体时间点上包含的对象以及各个对象之间的关系。对象图只列出属性和状态,不列出行为。对象图关心系统对象瞬间状态,而不是每个对象所具有行为。类图与包图对比包图...

    对象图

    对象图是类图的一个实例,表示系统在具体时间点上包含的对象以及各个对象之间的关系。

    对象图只列出属性和状态,不列出行为。对象图关心系统对象瞬间的状态,而不是每个对象所具有的行为。

    类图与包图的对比

    包图

    包图是分组机制,它能把用例或类等模型元件组织为组。


    接口:一组操作的集合,只有操作的声明而没有实现。

    抽象类:不能被实例化的类,一般至少包括一个抽象操作。

    模板类:一种参数化的类,在编译时把模板参数绑定到不同的数据类型,从而产生不同的类。


    展开全文
  • 如果里采用的matlab的ODE求解器的老的语法,你可以看看我们FTP站点上的各种求解器的老的实例: ftp://ftp.mathworks.com/pub/doc/papers/ 前面的站点包含了BVP,DAE与DDE这三个方向的采用老的语法的实例。你可以在...
  • 数据库查询就是发送给数据库的SQL指令,这些指令向数据库请求某种施加在数据集合或数据库上的功能。 现在我们就来看看基本的数据库查询,这些查询主要涉及到对数据库内数据的操作。在本文中,所有的例子都采用了...
  • 本附录按优先级从高到低顺序列出了C++操作符。 附录E:其他操作符 本附录总结了正文中没有介绍其他C++操作符,如按位操作符等。 附录F:ddne模板类 本附录总结了string类方法和函数。 附录G:STL方法和...
  • 1.4 新的64位机上的64位类型是什么样的? 3 指针声明 3 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?...
  • 本附录按优先级从高到低顺序列出了C++操作符。 附录E:其他操作符 本附录总结了正文中没有介绍其他C++操作符,如按位操作符等。 附录F:ddne模板类 本附录总结了string类方法和函数。 附录G:STL方法和...
  • 本功能可列出所配置数据库所有表,请选择所需生成代码表后点击确认按钮(注:如果重新配置步骤1数据库连接后需刷新列表)。 3.生成实体类代码 前置条件:步骤2中选择了需要生成代码表。 本功能可根据步骤2...
  • 本附录按优先级从高到低顺序列出了C++操作符。 附录E:其他操作符 本附录总结了正文中没有介绍其他C++操作符,如按位操作符等。 附录F:ddne模板类 本附录总结了string类方法和函数。 附录G:STL方法和...
  • 本附录按优先级从高到低顺序列出了C++操作符。 附录E:其他操作符 本附录总结了正文中没有介绍其他C++操作符,如按位操作符等。 附录F:ddne模板类 本附录总结了string类方法和函数。 附录G:STL方法和...
  • 本功能可列出所配置数据库所有表,请选择所需生成代码表后点击确认按钮(注:如果重新配置步骤1数据库连接后需刷新列表)。 3.生成实体类代码 前置条件:步骤2中选择了需要生成代码表。 本功能可根据步骤2...
  • SQL语法大全

    2014-03-30 11:00:11
    这里ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)字符串参数。 CursorType Recordset对象Open方法CursorType参数表示将以什么样游标类型启动数据,包括...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 186
精华内容 74
关键字:

列出集合上的包含关系