【数据库原理】创建与维护表,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. 删除表
sql 复制代码
DROP TABLE [IF EXISTS] sc;#【如果存在,那么删除。加上这段话则不会报错:表不存在,无法删除表。】
  1. 创建表
sql 复制代码
CREATE TABLE sc( <字段1> <数据类型1> [列级完整性约束条件] [,表级完整性约束条件] );
  1. 列级完整性约束条件:只约束单个字段(属性)。
sql 复制代码
PRIMARY KEY:设置主键
NULL/NOT NULL:允许/不允许为空【相当于主键】
UNIQUE:字段取值唯一【相当于主键】
DEFAULT<默认值>:指定字段的默认值【默认在校】
AUTO_INCREMENT:字段自动增加【班级总人数】
CHECK(条件表达式):拒绝接受不满足条件的值【成绩为0-100】
  1. 表级完整性约束条件:对整个表的约束条件(需要有主键,存在外键,字段的约束都可)。
sql 复制代码
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. 修改表结构
sql 复制代码
ALTER TABLE sc{  };
ADD <字段名> <数据类型 [列级完整性约束条件]>		#ADD增加字段:
DROP <字段名>|<完整性约束名> 		#DROP删除字段【删除字段或删除约束】
RENAME <表名>						#RENAME修改表名
MODIFY <字段名> <新数据类型> [列级完整性约束条件] #MODIFY修改字段的数据类型或完整性约束条件
CHANGE <旧字段名> <新字段名> <新数据类型>			#CHANGE修改表中字段名称
  1. MySQL数据文件:.frm描述表结构;.myd数据文件;.myi数据文件中的索引文件。
  2. 创建表栗子
sql 复制代码
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,cterm
	CONSTRAINT A2 CHECK(degree>=0 and degree<=100),		# 约束A2:检查分数0-100
	CONSTRAINT A3 FOREIGN KEY(sno) REFERENCES student(sno),		# 约束A3:外键sno来自学生表student
	CONSTRAINT A4 FOREIGN KEY(cno,cterm) REFERENCES course(cno,cterm)
	# 约束A4:外键cno,cterm来自课程表coures
);
  1. 修改表结构栗子
sql 复制代码
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
相关推荐
Σίσυφος190019 分钟前
PCL法向量估计 之 方向约束法向量(Orientation Guided Normal)
数据库
老毛肚23 分钟前
手写mybatis
java·数据库·mybatis
海山数据库28 分钟前
移动云大云海山数据库(He3DB)postgresql_anonymizer插件原理介绍与安装
数据库·he3db·大云海山数据库·移动云数据库
l1t29 分钟前
DeepSeek总结的PostgreSQL的GPT推理SQL移植到DuckDB的性能优化方法
sql·gpt·postgresql
云飞云共享云桌面32 分钟前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
2501_9279935339 分钟前
SQL Server 2022安装详细教程(图文详解,非常详细)
数据库·sqlserver
星火s漫天41 分钟前
第一篇: 使用Docker部署flask项目(Flask + DB 容器化)
数据库·docker·flask
xcLeigh1 小时前
Python 项目实战:用 Flask 实现 MySQL 数据库增删改查 API
数据库·python·mysql·flask·教程·python3
威迪斯特1 小时前
Flask:轻量级Web框架的技术本质与工程实践
前端·数据库·后端·python·flask·开发框架·核心架构
xu_yule1 小时前
Redis存储(15)Redis的应用_分布式锁_Lua脚本/Redlock算法
数据库·redis·分布式