mysql中数据定义语言_SQL数据定义语言(DDL)

数据库模式定义语言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数据类型不完全相同)

86506354_1.png

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

86506354_2.png

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中可以删除正在实用的数据库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瞎搞

declare a int,b int,c int set a (select top 1 a from Table_1 ) set b (select top 1 b from Table_1 ) set c (select top 1 c from Table_1 ) if(a>b and a>c) beginprint(a的值最大)endif(b>a and b>c) beginprint(b的值最大)endif(c>a and c>b) be…

db2 脚本运行错误返回错误原因_电脑运行错误代码大全,遇到报错请自己对照断电原因所在吧...

电脑在运行的时候,会出现一些代码,软件安装不上啊或电脑使用中蓝屏啊出现的代码,每一次出现问题电脑都会以代码的形式反馈,我们就可以凭借错误代码来判断故障源。小编整理了一些常出现的错误代码和问题分享给大家,希望…

LeetCode 2028. 找出缺失的观测数据

文章目录1. 题目2. 解题1. 题目 现有一份 n m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。 观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。 幸好你有之前计算过的这 n m 次投掷数据的 平均值 。 给你一个长度为 m 的整…

Sqlite学习笔记(五)SQLite封锁机制

概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务。所谓支持事务,即需要在并发环境下,保持事务的ACID特性。事务的原子性,隔离性都需要通过并发控制来保证。那么Sqlite的并发控制是怎样的,如何实现&am…

idea中git如何切换到master_IDEA中Git的使用

原文转载于:https://www.cnblogs.com/javabg/p/8567790.html工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场…

LeetCode 2032. 至少在两个数组中出现的值(哈希/位运算)

文章目录1. 题目2. 解题2.1 哈希查找2.2 位运算1. 题目 给你三个整数数组 nums1、nums2 和 nums3 ,请你构造并返回一个 不同 数组,且由 至少 在 两个 数组中出现的所有值组成。 数组中的元素可以按 任意 顺序排列。 示例 1: 输入&#xff1…

Nginx反向代理配置配置实例

为了节省支出,公司需要将分布在不同机器的站点都迁移到一台机器,而目前不同机器运行的是不同的web服务,部分是nginx,部分是apache,由于牵涉较多rewrite规则,为了节省修改功夫,打算迁移后相应站点…

python装饰器由浅入深_由浅入深理解Python装饰器

前提知识:1、Python里函数也是一种对象:def shout(word"yes"):return word.capitalize()"!"print shout()# outputs : Yes!# As an object, you can assign the function to a variable like any# other objectscream shout# Notic…

LeetCode 2033. 获取单值网格的最小操作数(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个大小为 m x n 的二维整数网格 grid 和一个整数 x 。 每一次操作,你可以对 grid 中的任一元素 加 x 或 减 x 。 单值网格 是全部元素都相等的网格。 返回使网格化为单值网格所需的 最小 操作数。如果不能,返回 …

WCF X.509验证

1.证书的制作 makecert.exe -sr LocalMachine -ss My -a sha1 -n CNParkingServer -sky exchange -pe makecert.exe -sr LocalMachine -ss My -a sha1 -n CNParkingClient -sky exchange -pe 注意:证书制作完后还要对相应的证书读取权限作配置。 WCF取用X.509证书&…

mysql最左_Mysql最左原则

1. 前言偶然看到一个技术群&#xff0c;对一道关于联合索引的讨论。面试题如下&#xff1a;a_b_c_index 三列复合索引 a 1 and b<100 and c5 这个查询 会用到索引的那几部分&#xff1f;复制代码先说下个人经过本人查询多方资料得到的结论&#xff0c; 只会用到 a 和 b部分(…

LeetCode 2034. 股票价格波动(set + map)

文章目录1. 题目2. 解题1. 题目 给你一支股票价格的数据流。数据流中每一条记录包含一个 时间戳 和该时间点股票对应的 价格 。 不巧的是&#xff0c;由于股票市场内在的波动性&#xff0c;股票价格记录可能不是按时间顺序到来的。 某些情况下&#xff0c;有的记录可能是错的…

Yslow-23条规则

YslowYahoo发布的一款基于FireFox的插件,主要是为了提高网页性能而设计的&#xff0c;下面是它提倡了23条规则&#xff0c;还是很不错的&#xff0c;分享一下&#xff1a; 1.减少HTTP请求次数合并图片、CSS、JS&#xff0c;改进首次访问用户等待时间。2. 使用CDN就近缓存>智…

什么是python函数_什么是python函数

python函数是指组织好的、可重复使用的、用来实现单一或相关联功能的代码段。python函数包含系统中自带的一些函数、第三方函数、以及用户自定义的函数。函数是可以实现一些特定功能的小方法或是小程序。在Python中有很多内建函数&#xff0c;当然随着学习的深入&#xff0c;我…

LeetCode 2035. 将数组分成两个数组并最小化数组和的差(状态压缩DP)

文章目录1. 题目2. 解题1. 题目 给你一个长度为 2 * n 的整数数组。 你需要将 nums 分成 两个 长度为 n 的数组&#xff0c;分别求出两个数组的和&#xff0c;并 最小化 两个数组和之 差的绝对值 。 nums 中每个元素都需要放入两个数组之一。 请你返回 最小 的 数组和之差。 …

linux for循环

一定要记得写后面的分号&#xff1b;http://www.runoob.com/linux/linux-shell-variable.html 这个页面的课程的循环教程是有问题的 for color in yellow green white;do   echo ${color}done 利用循环列出某个目录下的<b>所有</b>文件 for line in ls /tmp/yang…

Visual Studio Code C++配置文件

文章目录tasks.jsonlaunch.jsonc_cpp_properties.json以下三个文件放在 项目下 .vscode 文件夹中&#xff0c;内容从网络收集&#xff0c;经自己实践添加修改以备忘 tasks.json {// See https://go.microsoft.com/fwlink/?LinkId733558// for the documentation about the t…

南通大学python期末考试试卷答案_南通大学2015-2016年1学期《软工》作业点评总结...

第一次作业(2015.9.13)作业题目存在问题1.学生可能平时写博客的机会比较少&#xff0c;书写格式存在的问题比较多。比如文字排版、博客中的代码直接粘贴(没有使用代码样式)、插入的图片太大等等。这些问题老师在上课的时候可以专门抽出一节课的时间跟学生讲一下&#xff0c;计算…

android--仿网易新闻主界面

主要是学习ActionBarDrawerLayoutActionBarDrawerToggle,很不错的教程,下面一步一步带你实现这个过程,有不足之处欢迎留言交流.下面先来一张效果图 根据图片分析,要实现的有侧边栏DrawerLayout,ActionBar的颜色和菜单以及ActionBarDrawerToggle的动画效果. 在这之前,Theme要改…

fastapi 查询参数和字符串校验 / 路径参数和数值校验

文章目录1. 约束限制2. 必须参数3. 查询参数列表 / 多个值4. 声明更多元数据5. 别名参数6. 弃用参数7. Path 路径参数8. 按需对参数排序learn from https://fastapi.tiangolo.com/zh/tutorial/query-params-str-validations/ 1. 约束限制 from typing import Optional from f…