当前位置: 首页 > news >正文

【数据库原理】创建与维护表,DDL数据定义语言

数据描述语言(数据定义语言)
就是管理数据库整个库,整个表,表的属性列的语句。
常用词儿就是数据库或表的增删改查CREATE创建、DROP删除、ALTER修改、SHOW查看、USE进入表。
表的字段控制PRIMARY KEY主键、FOREIGN KEY外键、CONSTRAINT约束;ADD增加字段、RENAME表的重命名、MODIFY修改字段数据类型或约束、CHANGE修改字段名

  1. mysql数据库与表命名规则:当前字符集中的任意字符,下划线和$。最长为64字符。
  2. 文件系统对命名大小写敏感,则加以区分。windows中my_table与MY_TABLE是同一个表。UNIX中算两个不同的表。
  3. 表结构:列即字段,每个字段存储不同性质的数据。每一行各个字段数据构成一条数据记录。【就是属性和元组】
  4. 字段名:可以使用中文、英文、数字、下划线、井号、美元符号及at符号。字段名不能重复。【属性,就是属性】
  5. 字段的数据类型:字符串类型,长度表示容纳字符的数目。整型类型,长度为显示宽度。二进制类型,长度表示最大字节数。浮点数和定点数,长度表示数据的总长度。
  6. MySQL数据类型bit,二进制位。binary,二进制字符串。varbinary,可变长度二进制字符串。char,固定长度字符串。varchar,可变长度字符串。date,日期年月日。datetime,日期时间。tinyint,1B的整型。decimal,定点数。【常用的这些,tinyint只占1B,最大表示到255。var- 一般表示可变长度】
  7. 删除表
DROP TABLE [IF EXISTS] sc;#【如果存在,那么删除。加上这段话则不会报错:表不存在,无法删除表。】
  1. 创建表
CREATE TABLE sc( <字段1> <数据类型1> [列级完整性约束条件] [,表级完整性约束条件] );
  1. 列级完整性约束条件:只约束单个字段(属性)。
PRIMARY KEY:设置主键
NULL/NOT NULL:允许/不允许为空【相当于主键】
UNIQUE:字段取值唯一【相当于主键】
DEFAULT<默认值>:指定字段的默认值【默认在校】
AUTO_INCREMENT:字段自动增加【班级总人数】
CHECK(条件表达式):拒绝接受不满足条件的值【成绩为0-100
  1. 表级完整性约束条件:对整个表的约束条件(需要有主键,存在外键,字段的约束都可)。
CONSTRAINT <约束名> PRIMARY KEY(cno,sno),#【多个字段为表的主键】CONSTRAINT <约束名> FOREIGN KEY(cno,cterm) REFERENCES course(cno,cterm)#【cno,cterm字段为外键,来自于course表】CONSTRAINT <约束名> UNIQUE (cno)CONSTRAINT <约束名> CHECK(degree>=0 and degree<=100)#【检查分数满足0-100之间】
  1. 查看表SHOW TABLES;【查看数据库中有哪些表】
  2. 查看表结构DESCRIBE sc;
  3. 查看详细表结构DESCRIBES CREATE TABLE sc;
  4. 复制表CREATE TABLE 表名 SELECT * FROM 现有表名;
  5. 复制表结构CREATE TABLE new_stu SELECT * FROM stu WHERE 1=0;【使得WHERE条件不成立,只保存表结构】
  6. 修改表结构
ALTER TABLE sc{  };
ADD <字段名> <数据类型 [列级完整性约束条件]>		#ADD增加字段:
DROP <字段名>|<完整性约束名> 		#DROP删除字段【删除字段或删除约束】
RENAME <表名>						#RENAME修改表名
MODIFY <字段名> <新数据类型> [列级完整性约束条件] #MODIFY修改字段的数据类型或完整性约束条件
CHANGE <旧字段名> <新字段名> <新数据类型>			#CHANGE修改表中字段名称
  1. MySQL数据文件:.frm描述表结构;.myd数据文件;.myi数据文件中的索引文件。
  2. 创建表栗子
CREATE TABLE sc(			sno CHAR(10) NOT NULL,		# 学号字段char类型,非空cno CHAR(3) NOT NULL,		# 课程号字段char类型,非空degree DECIMAL(4,1),		# 分数字段decimal定点小数,小数点后1位cterm TINYINT NOT NULL,		# 学期字段tinyint类型,非空CONSTRAINT A1 PRIMARY(sno,cno,cterm),	# 约束A1:主键sno,cno,ctermCONSTRAINT A2 CHECK(degree>=0 and degree<=100),		# 约束A2:检查分数0-100CONSTRAINT A3 FOREIGN KEY(sno) REFERENCES student(sno),		# 约束A3:外键sno来自学生表studentCONSTRAINT A4 FOREIGN KEY(cno,cterm) REFERENCES course(cno,cterm)# 约束A4:外键cno,cterm来自课程表coures
);
  1. 修改表结构栗子
ALTER TABLE sc ADD class CHAR(10) AFTER sno;	# 在表sc中sno字段后添加字段class
ALTER TABLE sc DROP FOREIGN KEY A4;				# 在表sc中删除外键A4
ALTER TABLE sc RENAME sc1;						# 修改表sc名为sc1
ALTER TABLE sc MODIFY degree INT;				# 修改表sc中degree数据类型为int
ALTER TABLE sc CHANGE degree scores DECIMAL;	# 修改表sc中degree字段为scores,类型为decimal

http://www.mrgr.cn/news/77934.html

相关文章:

  • Linux笔记---进程:进程切换与O(1)调度算法
  • 如何在 Ubuntu 22 04 上安装和配置 Ansible 自动化平台
  • 用树莓派Pico实现四位数码管秒表计时器:从基础实现到C++技术详解
  • 【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
  • Gate学习(6) 指令学习3
  • linux下使用vscode编译及引用动态链接库
  • Java项目实战II基于SpringBoot的教学资料管理系统(开发文档+数据库+源码)
  • 交叉熵 vs focal loss
  • 探索 Python 任务自动化的新境界:Invoke 库揭秘
  • AJAX请求返回报错NET::ERR_CERT_DATE_INVALID
  • 内网渗透横向移动1
  • Redis设计与实现 学习笔记 第二十一章 排序
  • 【Java】Linux、Mac、Windows 安装 Oracle JDK
  • Android 常用命令和工具解析之内存相关
  • 深入解析自适应控制算法及python实现
  • 深入解析自校正控制(STC)算法及python实现
  • Flink转换算子——flatMap/map/filter/keyby/reduce综合案例
  • git使用教程
  • Python学习------第十一天
  • 小白学多线程(持续更新中)
  • 数据结构 (5)栈
  • TCP socket api详解
  • Android 常用命令和工具解析之GPU相关
  • 数字信号处理(Digital Signal Procession)总结
  • 从搭建uni-app+vue3工程开始
  • Linux高阶——1117—TCP客户端服务端