精华内容
下载资源
问答
  • 数据定义

    千次阅读 2018-04-06 23:27:18
    SQL数据定义功能包括模式的定义、表定义、视图定义和索引的定义。 SQL的数据定义语句如下表 一、模式的定义和删除 1、定义模式 在SQL语句中,模式定义语句为: CREATE SCHEMA <模式名>...

    关系数据库系统支持三级模式结构,其模式、外模式和内模式的基本对象有模式、表、视图和索引等。SQL数据定义功能包括模式的定义、表定义、视图定义和索引的定义。

    SQL的数据定义语句如下表
    数据定义表

    一、模式的定义和删除

    1、定义模式

    在SQL语句中,模式定义语句为:
    CREATE SCHEMA <模式名>AUTHORIZATION<用户名>;
    如果没有指定<模式名>,那么<模式名>隐含为<用户名>。该命令要拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限。
    定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。用户可以在创建模式的同时在这个模式定义中进一步创建表、视图,
    定义授权:CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>];

    2、删除模式

    在SQL语句中,删除模式语句为:
    DROP SCHEMA<模式名>< CASCADE|RESTRICT>;其中CASCADE(级联)和RESTRICT(限制)选一个。级联表示在删除模式的同事把该模式中所有的数据库对象全部删除;限制表示该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
    备注:只有当该模式下没有任何下属的对象时才能执行DROP SCHEMA语句。

    二、基本表的定义、删除与修改

    1、定义基本表

    创建了一个模式就建立了一个数据库的命名空间,一个框架,首先要定义该模式包含的数据库基本表。SQL定义基本表格式:
    CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]])…[,<表级完整性约束条件>]);
    建表的同时还可定义与该表有关的完整性约束条件,这些条件被存入系统的数据字典中,当用户操作表中数据时由关系数据库管理系统自动检查该操作是否违背这些完整性约束条件。如果条件涉及该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

    2、数据类型

    关系模型中,每一个属性来自一个域,它的取值必须是域中的值。在SQL中域的概念用数据类型来实现,定义表的各个属性时需要指明其数据类型及长度,SQL标准支持多种数据类型,不同的关系数据库管理系统中支持的数据类型不完全相同。
    数据类型
    一个属性选用那种数据类型要根据实际情况(取值范围、适用运算)来决定。

    3、模式与表

    每一个基本表都属于某一个模式,一个模式包含多个基本表。当定义基本表时一般可以有三种方法定义它所属的模式:
    1)在表名中明显地给出模式名;
    2)在创建模式语句中同时创建表;
    3)设置所属的模式,这样在创建表时表名中不必给出模式名。
    当用户创建基本表时没有指定模式,系统根据搜索路径来确定该对象所属的模式。搜索路径语句:SHOW search_path
    当前默认值都是$user,PUBLIC,首先搜索与用户名相同的模式名,如果不存在就使用PUBLIC模式。

    4、修改基本表

    SQL语句:
    ALTER TABLE <表名>[ADD[COLUMN]<新列名><数据类型>[完整性约束]]
    [ADD<表级完整性约束>][DROP[COLUMN]<列名>[CASCADE|RESTRICT]]
    [DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE ]]
    [ALTER COLUMN<列名><数据类型>];
    其中:ADD用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN用于删除表中的列,CASCADE会自动删除引用了该列的其他对象,而RESTRICT如果该列被其他对象引用,RDBMS将被拒绝删除该列。DROP CONSTRAINT用于删除指定的完整性约束条件。

    5、删除基本表

    SQL语句为:
    DROP TABLE <表名>[RESTRICT|CASCADE];
    其中,使用RESTRICT删除的基本表不能被其他表的约束所引用,不能有视图、触发器、存储过程或者函数。如果存在这些依赖该表的对象,就无法删除。使用CASCADE相关的依赖对象也会一起删除。默认是RESTRICT。

    三、索引的建立与删除

    索引相当于目录,通过消耗“空间”来节约“时间“,从而提高效率。但是如果使用的空间过多也是不合理的,要注意时间和空间对效率的影响。
    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
    索引是对数据库表中一个或多个列的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

    数据库索引有多种类型,常见索引包括:
    1、顺序文件上的索引
    针对指定实行升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成。
    2、B+树索引
    将索引实行组织成B+树形式,树的叶结点为属性值和相应的元组指针。它具有动态平衡的优点。
    3、散列索引
    建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存放索引属性值和相应的元组指针。它具有查找速度快的特点。
    4、位图索引
    用位向量记录索引属性中可能出出现的值,每个位向量对应一个可能值。
    索引的缺点是占用一定的存储空间,当基本表更新时,索引要进行相应的维护,这样会增加数据库的负担。

    索引是关系数据库管理系统的内部实现技术,属于内模式的范畴。

    1、建立索引

    SQL语句:
    CREATE [UNIQUE][CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);
    其中,索引可以建立在该表的一列或者多列上,各列名之间用逗号分隔,每个列名后面还可以用次序指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认是ASC。UNIQUE表明此索引的每一个索引值只对应唯一的数据记录,CLUSTER表示要建立的索引是聚簇索引。

    2、修改索引

    SQL语句:
    ALTER INDEX <旧索引名> RENAME TO <新索引名>;实现重新命名。

    3、删除索引

    SQL语句为:
    DROP INDEX <索引名>;删除索引时,系统会同时从数据字典中删除有关该索引的描述。

    四、数据字典

    数据字典是关系数据库管理系统内部的一组系统表,记录数据库中所有的定义信息:关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。数据字典中的信息是查询优化和查询处理时的重要依据。

    展开全文
  • 定义

    千次阅读 2017-03-21 17:57:58
    定义
    cocos2dx3.13  中在glfw3native.h取消了定义#undef APIENTRY导致3.13中其他依赖于ktmw32.h的类出错(APIENTRY宏定义取消),问题定位步骤,宏定义取消,未搜索到取消宏定义的类,从起始运行引用的第一个头文件开始定位,看宏定义是在引用了哪个头文件后才消失
    
    展开全文
  • GCC编译时增加宏定义-D&amp;amp;lt;标识符&amp;amp;gt;,相当#define &amp;amp;lt;标识符&amp;amp;gt;,可以在遇到条件编译时执行。 #ifdef &amp;amp;lt;标识符&amp;amp;gt; //条件...

    GCC编译时增加宏定义-D<标识符>,相当于#define <标识符>,可以在遇到条件编译时执行。

    #ifdef <标识符>
        //条件编译内容
    #endif
    

    例子: 搭配gcc编译命令:gcc -DDEBUG -g -o main.out main.c (注意-D<标识符>应该紧跟gcc后面,-o等指令前面)
    main.c

    #include <stdio.h>
    //如果在gcc编译参数中定义了-DDEBUG,就相当于在代码中定义#define DEBUG
    //#define DEBUG 
    int main(int argc, char *argv[])
    {
    #ifdef DEBUG
        printf("define DEBUG\n");
    #else
        printf("no define DEBUG\n");
    #endif
        printf("hello world\n");
    
        return 0;
    }
    

    其实不管是将DEBUG定义为什么,常量、函数等,只要定义过DEBUG,都可以在条件编译时执行
    例如:#define DEBUG 0 or #define DEBUG 1 or #define DEBUG(x) x+1 等等,在#ifdef DEBUG判断时都可以通过。

    展开全文
  • Makefile中添加宏定义

    千次阅读 2012-12-07 14:36:38
    关键词: Make宏定义 Make传递宏定义 ...只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。 如: CFLAGS += -D _YUQIANG 在编译的时候加上此选项就可以了: $(CC) $(CFLAGS) $^ -o $@ 下面是
    关键词: Make宏定义 Make传递宏定义 Makefile中添加宏定义 Makefile -D

    在Makefile中我们可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。

    如:
    CFLAGS += -D _YUQIANG
    在编译的时候加上此选项就可以了: $(CC) $(CFLAGS) $^ -o $@

    下面是我写的一个测试文件:

    例如:

    Makefile文件内容为:

    CC = gcc
    RM = rm

    CFLAGS += -D _YUQIANG

    TARGETS := myapp

    all:$(TARGETS)

    $(TARGETS):main.c
    $(CC) $(CFLAGS) $^ -o $@

    clean:
    -$(RM) -f *.o
    -$(RM) -f $(TARGETS)


    main.c文件的内容为:
    #include <stdio.h>

    int main()
    {

    #ifdef _YUQIANG
    printf("Hello Yu Qiang, How are you?\n");
    #else
    printf("Sorry to lost you. \n");
    #endif

    return 0;
    }


    在端口中输入    make clean all
    然后输入           ./myapp

    结果                  Hello Yu Qiang, How are you?


    展开全文
  • 定义与类型定义的区别

    千次阅读 2018-09-21 22:14:22
    一般来说,宏定义(# define)是相当字符替换,在代码预编译时就进行替换,编译时候所有宏定义的代码改变为被替换的代码,不限制任何代码,任何字符都可以进行宏定义,宏定义可以写在程序中的任何位置,它的作用...
  • 定义有无参数宏定义和带参数宏定义两种。  无参数的宏定义的一般形式为  # define 标识符 字符序列 其中# define之后的标识符称为宏定义名(简称宏名),要求宏名与字符序列之间用空格符分隔。这种宏定义要求...
  • C语言的头文件和宏定义详解

    万次阅读 多人点赞 2018-01-24 21:00:44
    之前对C语言的头文件和宏定义抱着一知半解的态度,现理清思路并以文字的形式整理出来,以供不时之需 头文件 头文件,顾名思义就是定义在C语言文件头部的那一坨东西 #include 这就是一个标准输入输出的...
  • [GP]template必须定义于头文件中

    千次阅读 2005-10-24 17:19:00
    template必须定义于头文件中最近在项目中遇到了一个奇怪的问题。在程序中,A模块用到了一个模版函数,这个模版函数外部不需要调用,因此在*.cpp中定义并实现之。编译的时候奇怪的现象发生了(VC6 sp5),在debug下,...
  • 在Makefile中进行宏定义-D

    千次阅读 2014-03-08 17:16:01
    只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。 如: CFLAGS += -D _YUQIANG 在编译的时候加上此选项就可以了: $(CC) $(CFLAGS) $^ -o $@  下面是我写的一个测试文件:   例如: ...
  • C语言中声明和定义详解

    万次阅读 多人点赞 2016-02-06 16:56:05
    变量声明和变量定义 变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。 变量声明:用于向程序表明变量的类型和名字。 定义也是声明,extern声明不是定义 定义也是...
  • C语言宏定义和宏定义函数

    千次阅读 2017-03-27 15:31:39
    要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。  在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装...
  • 结构体定义 typedef struct 用法详解和用法小结

    万次阅读 多人点赞 2018-07-31 22:25:48
    typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。 具体区别在于: 若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;...其实就相当 NODE 是nod...
  • verilog宏定义

    千次阅读 2019-03-16 09:43:41
    使用`ifdef和`endif可以检测是否定义了某个宏,相当条件编译。如果`ifedf调用的宏被定义过,则内部的代码将会编译;如果宏没有定义,则会编译`else中的代码。`else不是必须的,但必须有`endif。 使...
  • QT全局宏定义

    千次阅读 2017-12-31 01:21:12
    Qt pro文件CMake在CMakeLists.txt中添加宏定义,编译flags这些信息 QMake则在pro文件中定义DEFINE 添加 全局宏定义定义增加 DEFINED += USE_...效果等同CMake中 add_definitions(-DUSE_HIGH_VERSION)QMAKE_CXX_FLA
  • Golang 之区分类型别名与类型定义

    万次阅读 2019-07-06 17:12:14
    Golang 之区分类型别名(Type Alias)与类型定义(Type define)一、类型别名(Type Alias)、类型定义是什么?二、区分类型别名与类型定义类型定义 ...主要应用代码升级、工程重构、迁移中类型...
  • S-属性定义与L-属性定义

    千次阅读 2019-05-11 20:00:43
    文章目录S-属性定义L-属性定义 S-属性 定义 仅仅使用综合属性的SDD称为S属性的SDD,或S-属性定义、S-SDD。 例如: 如果一个SDD是S属性的,可以按照语法分析树节点的任何自底向上顺序来计算它的各个属性值 S-属性...
  • C++ 类内定义和类外定义

    千次阅读 2017-10-23 15:35:42
    1.类内定义  类内定义的概念:成员函数的函数体(实现)是在类的内部完成的。这种实现方式c++隐式为内联函数。
  • JTAG接口定义与其他简介

    万次阅读 多人点赞 2019-01-12 19:59:24
    JTAG接口定义与其他简介 JTAG(Joint Test Action Group)是一个接口,为了这个接口成立了一个小组叫JTAG小组,它成立1985年,比推丸菌的年龄还大。在1990年IEEE觉得一切妥当,于是发布了 IEEE Standard 1149.1-...
  • 尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数经常用函数式宏定义来代替实现...
  • 在结构体中定义定义意义

    千次阅读 2015-08-27 14:57:18
    第一次看见在结构体中有宏定义,开始有点迷糊,想到该结构是如何存储的?宏定义会是不会多次编译?以下是我看的一个列子: typedef struct {  #define XCP_AUTHORIZED_BIT 0x01  uint16_t XcpAuthorizedBit:1;...
  • c语言的宏定义

    千次阅读 2020-08-17 22:13:45
    带参数的宏定义:C语言宏定义技巧(常用宏定义)1,防止一个头文件被重复包含2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。3,得到指定地址上的一个字节或字4,求最大...
  • C语言中宏定义的使用

    万次阅读 多人点赞 2018-08-21 08:54:36
    1.1 宏定义的基本语法 1.2 宏定义的优点 1.3 宏定义的缺点 1.4 宏还是函数 2 使用宏时的注意点 2.1 算符优先级问题 2.2 分号吞噬问题 2.3 宏参数重复调用 2.4 对自身的递归引用 3. 宏函数的集中特定语法 3.1 ...
  • C语言字符串定义

    千次阅读 2020-05-12 14:51:59
    (此方式相当在存储器里面建立一个可以存储3个字符的数组空间) char i [4]=”xxxx”; char i [4]={‘x’’x’’x’’x’}; 其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置 字符数组只有在定义时...
  • 树莓派接口定义

    千次阅读 2019-02-28 22:51:13
    树莓派接口定义GPIODSI显示端口CSI摄像头接口MicroSD插槽HDMI / USB / Network接口Micro USB 电源接口 / 3.5mm音频输出接口 GPIO GPIO(通用输入/输出接口)是树莓派重要的功能接口,它相当Arduino上的GPIO引脚。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,749,131
精华内容 1,899,652
关键字:

于定义