数据库模式定义语言DDL(DataDefinition Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。

DDL描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。

模式编译器处理模式定义主要产生两种类型的数据:数据字典以及数据类型和结构定义。

数据字典和数据库内部结构信息是创建该模式所对应的数据库的依据,根据这些信息创建每个数据库对应的逻辑结构;对数据库数据的访问、查询也根据模式信息决定数据存取的方式和类型,以及数据之间的关系和对数据的完整性约束。

数据字典是模式的内部信息表示,数据字典的存储方式对不同的DBMS各不相同。

数据类型和结构的定义,是指当应用程序与数据库连接操作时,应用程序需要了解产生和提取的数据类型和结构。是为各种宿主语言提供的用户工作区的数据类型和结构定义,使用户工作区和数据库的逻辑结构相一致,减少数据的转换过程,这种数据类型和结构的定义通常用一个头文件来实现。

数据库模式的定义通常有两种方式: 交互方式定义模式和通过数据描述语言 DDL 描述文本定义模式。

数据库模式定义语言DDL(DataDefinition Language),是用于描述数据库中要存储的现实世界实体的语言。

DDL主要用于创建和删除数据库,表和索引。

一,基本的数据库操作:

1,创建(create)、修改(alter)、删除(drop)

2,数据库包括:

系统数据库

master:记录系统级的信息。

model:为用户创建数据库提供模板。

msdb:代理调度警报作业、记录操作。

tempdb:临时表、临时数据库。

用户数据库

二,详解:

1,表的创建:

建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade课程名Cname组成,其中(Sno, Cno)为主码。

CREATETABLE

SC(

SnoCHAR(7),

CnoCHAR(4),

Gradeint,

CnameCHAR(10), NOTNULLUNIQUE

Primarykey (Sno,Cno)

Foreignkey (Sno) Referencesstudent(Sno).

Foreignkey (Cno) ReferencesCourse (Cno)

);

基本表的创建-说明

1、建表的同时可以定义与该表有关的完整性约束,这些约束条件被存入系统的数据字典中,当用户操作表时,DBMS会自动检查该操作是否有违背完整约束条件.

2、建立约束的考虑:如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上;否则既可以定义在列级上也可以定义在表级上。

3、表名、列名是不区分大小写的。

4、对一个用户而言,表名必须唯一;一个表中,列名必须唯一。

5、表名、列名必须以字母开头,长度不超过30个字符。

常用完整性约束

1、主码约束:    PRIMARY KEY

2、唯一性约束:UNIQUE

3、非空值约束:NOTNULL

4、参照完整性约束:FOREIGNKEY

常用数据类型:(不同DBMS数据类型不完全相同)

T-SQL数据类型:(SQL 程式设计语言的增强版,它是用来让应用程式与SQL Server 沟通的主要语言。T-SQL提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。)

2,删除基本表:

DROPTABLEtable_name

3,修改基本表——添加列:

ALTERTABLEtable_name

ADDnew_column_name datatype

[constraints]

例:向Student表增加“入学时间”(SCome),数据类型为日期型。

ALTERTABLEstudent

ADDScomeDATE

4,修改基本表——改变列的数据类型:

ALTERTABLEtable_name

ALTERCOLUMNcolumn_name new_datatype

例:将年龄的数据类型改为半字长整数。

ALTERTABLEStudent

ALTERCOLUMNSageSMALLINT

5,修改基本表——删除完整性约束

ALTERTABLEtable_name

DROPconstraint

例:删除学生姓名必须取唯一值的约束。

ALTERTABLEstudent

DROPunique(sname)

6,建立索引:

CREATEINDEXindex_nameONtable_name(column_name)

7,将某个字段设为主键:

ALTERTABLEtable_nameADDPRIMARYKEY(column_name)

8,将某个字段的主键定义取消:

ALTERTABLEtable_nameDROPPRIMARYKEY(column_name)

约束是为了数据的完整性而存在的,而数据的完整性是指数据的可靠性和准确性。

根据数据完整性大致可以分为四种:

1.实体完整性

就是说每个表代表一个实体,每个表与他所代表的实体一致,特定表的唯一实体。

实现实体完整性的的方法:索引(index),唯一约束(unique),主键约束(primarykey),标识列属性

2.域完整性

给每个列定义输入的有效性

实现域完整性的的方法: 限制数据类型,格式,外键约束(foreign key references),检查约束(check(  between  and )),默认值定义(default ' '),非空(not null)约束。

3.引用完整性

在输入或删除记录时,表与表之间已定义的关系

实现域完整性的的方法: 通过外键与主键的关系,外键与唯一键之间的关系,外键与检查约束

4.用户自定义完整性

所有的完整性都支持用户自定义完整性

注意:

1.在SQL中有个自动增长的自动编号列identity

2. MySQL不支持检查约束

3.索引就像字典的目录,把索引加在频繁的以某个字符段查询的的上面,在表上创建索引虽然会提高select语句的速度,但也会降低delete,update,insert语句执行的速度,如果一个表中太多的索引会降低数据库的整体性能

4.primary key = unique+not null(加primary key 要比加unique和not null效率膏,因为加primarykey时会自动加索引,加快了效率)

5.在SQL server中正在实用的数据库不能被删除(除非切换数据库才能被删除),mySQl中可以删除正在实用的数据库

mysql中数据定义语言_SQL数据定义语言(DDL)相关推荐

  1. MySql中把一个表的数据插入到另一个表中的实现代码--转

    MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...

  2. MySQL中数组内的JSON数据中获取值

    MySQL中JSON数据获取值 1.MySQL中JSON数据中获取值 数据源: {"observeTruth": "111","preventHume ...

  3. MySQL / B + 树算法在 mysql 中能存多少行数据?

    在面试的时候,如果问到了 B + 树这个东西,或者问到了 MySQL 索引的底层实现,也希望大家能够进一步的发挥,和面试官探讨一下,为什么 B+ 树一般都是 3 层左右,为什么 3 层的 B + 树可 ...

  4. mysql错误修改数据_使用正则表达式快速修改mysql中错误的varchar类型数据

    昨天早上发现日志中有错误信息:Integer到String类型转换异常. 由于程序问题,导致数据库中的varchar列存入的json字符串不符合要求,这些json字符串在反序列化成Map之后就会报错. ...

  5. B+树算法在mysql中能存多少行数据?

    在面试的时候,如果问到了B+树这个东西,或者问到了MySQL索引的底层实现,也希望大家能够进一步的发挥,和面试官探讨一下,为什么B+树一般都是3层左右,为什么3层的B+树可以存放2千万的数据,这个到底 ...

  6. Mysql中使用json格式存储数据好吗?

    在最近的一次项目开发过程中,在数据表设计阶段,对是否用json格式存储某些数据我们产生了分歧.以往项目中对此点比较随意,导致数据表中有些json格式数据体积很大,层次很深,我担心这会降低数据查询和解析 ...

  7. mysql 中如何删除重复的数据_mysql如何快速删除重复的数据

    在mysql中去重,其实是一个很简单的事情,来看下面的例子: mysql> DROP TABLE test; Query OK, 0 rows affected (0.01 sec) mysql ...

  8. mysql中null值求和_sql求和涉及到null值

    SQL ISNULL().NVL().IFNULL() 和 COALESCE() 函数 请看下面的 "Products" 表: P_Id ProductName UnitPrice ...

  9. mysql中0和空值_SQL中空值 和NULL的概念:

    在详细讲解null之前,我们先看一个例子 表数据如下: 3306>select * from t1; +------+-------+ | id | name | +------+------- ...

最新文章

  1. Android性能优化之App应用启动分析与优化
  2. 转:iFire:玩聚 SRBacks 自定义脚本及样式表
  3. linux下通过inotify-tools监控文件系统
  4. madagascar 软件安装方法
  5. java builder.parse_JAVA之DocumentBuilder生成解析XML
  6. 如何使用 C# 在异步代码中处理异常
  7. python access_Python3 os.access() 方法
  8. ubuntu Django项目后台不挂断运行之screen命令
  9. latex 子图_MATLAB学习笔记4:如何优雅地控制子图
  10. 歪批IT系列之“伪热门”人才
  11. plt的纵坐标的百分号显示
  12. redolog switch会发生完全检查点还是增量检查点?
  13. c语言第三章作业3.13,c语言谭浩强第1章至第3章测试试题
  14. 苹果开发者三类账号说明
  15. Java实现自定义敏感词库过滤
  16. server数据库标记为可疑 sql_Sql Server 2005数据库被标记为“可疑”问题
  17. 【sketchup 2021】草图大师的高级工具使用3【复杂贴图制作实例(山体和球面贴图、全景天空绘制、吊顶添加光带)、图层(标记)工具使用、视图与样式工具的常规使用与高级使用说明】
  18. 波束形成(最大信噪比准则、LCMV、MSC、LMS、RLS)
  19. 动作捕捉 Motion Capture (Mocap)
  20. 如何给Layout文件夹分类

热门文章

  1. java聊天软件课程设计_[计算机课程设计] JAVA课程设计-聊天室
  2. mysql select 子查询_SELECT中常用的子查询操作
  3. static和extern的用法总结
  4. linux上perl怎么传输参数,如何在perl子函数中传递参数?
  5. LeetCode:Path Sum II
  6. dubbo的监控中心
  7. 算法题之求二叉树的最大距离
  8. VS2015开发Android,自带模拟器无法调试、加载程序,算是坑吗
  9. sql 中N'的作用
  10. MySQL 引擎特性 · InnoDB Buffer Pool