02--数据定义语言DDL

1、数据定义语言DDL

1.1 操作数据库-DDL

创建数据库

create database 数据库名称;

创建数据库,并指定字符集

create database 数据库名称 character set 字符集名;

查询所有数据库的名称

show databases;

查询某个数据库的字符集:查询某个数据库的创建语句及字符集

show create database 数据库名称;

修改数据库的字符集

alter database 数据库名称 character set 字符集名称;

删除数据库

drop database 数据库名称;

使用数据库

use 数据库名称;

查询当前正在使用的数据库名称

select database();

查看数据库版本号

select version();

1.2 操作表-DDL

1.2.1 什么是表

表:table表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。

一个表包括行和列:

行:被称为数据/记录(data)

列:被称为字段(column)

每一个字段应该包括哪些属性?

字段名、数据类型、相关的约束。

1.2.2 字段名命名规范

只能是字母、数字、_、$组成。

不能以数字开头。

不能使用关键字和保留字。

不区分大小写。

不能使用-

1.2.3 数据类型

数据类型

说明

int

整数类型,例如 : age、默认为int(11),但是不能存储11位

double

小数类型,例如 : score double(5,2) 111.11 5为有效数字位数,2为小数点后位数

date

日期,只包含年月日,yyyy-MM-dd

datetime

日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss

timestamp

时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

varchar

可变字符 name varchar(20)

char

不可变字符 name varchar(20)

VARCHAR、CHAR

varchar:表示的长度可变的字符串。最大长度不能超过定义字段的时候长度。

char:长度固定。

name varchar(20):name 存贮数据的长度是20以内的,lisi 表示4个长度 ,zhangsan:8个长度 江一燕:3个长度

name char(20):lisi 当前的长度4,剩下的是空格 。

问题:char 的性能好。 varchar可以节省空间。通常时候,我们使用varchar。

使用char的情况。当某个字段的长度固定的时候,可以采用char。例如身份证号、性别、手机号。

1.2.4 创建表

语法:

create table 表名(列名(字段名) 数据类型,列名(字段名) 数据类型,列名(字段名) 数据类型...
);

示例:

create table student(id int,name varchar(20),sex char(1),birth date,money double
);

注意事项:最后一列,不需要加逗号(,)

查看建表语句:

show create table student;

1.2.5 查询表

查询某个数据库中所有的表名称

show tables;

查询表结构

desc 表名;

1.2.6 修改表

添加列
语法:alter table 表名  add 列名 数据类型 约束;
实例:alter table student add classes varchar(10);

修改列类型
语法:alter table 表名 modify 列名 新类型;
实例:alter table student modify classes varchar(20);

修改列名和类型
语法:alter table 表名 change 旧列名 新列名 新类型;
实例:alter table student change classes class varchar(10);

删除列
语法:alter table 表名 drop 列名;
实例:alter table student drop class;

修改表字符集
语法:alter table 表名 charset 字符集;
实例:alter table student charset gbk;

修改表名
语法:rename table 旧表名 to 新表名;
实例:rename table student to stu;

1.2.7 删除表

直接删除表语法:drop table 表名;实例:drop table student1;

如果表存在就删除,不会报错

drop table if exists stu;  

1.3 约束

1.3.1 约束概述

约束:规定,限制。限制表中的内容。需要满足一定的规则。数据库中的约束:限制列的内容。

意义:保证数据的有效性和完整性。可以确保数据库满足业务规则。

1.3.2 约束类型

约束

说明

primary key

主键约束:非空且唯一

unique

唯一约束:某一列的值不能重复,但可以为空

not null

非空约束:某一列的值不能为空

foreign key

外键约束

check

检查约束(MySQL无效)

缺省

默认值 default

auto_increment

自增器,每一次+1

设计表的时候。

通常我们会新增一个字段(没有意义的字段)去做主键。不去做修改。

主键是int类型的,我们可以给他设置自动增长(假设插入一条记录的时候,主键没有认为的设置值。会自己顺序。去+1 生成新的内容,添加到主键这个字段中。),auto_increment

主键自增长:

        id int primary key auto_increment;

唯一约束:不允许重复。 一个表里可以添加多个唯一约束。

        列名 类型(长度)unique;

非空约束:不允许为空。 表示该列的内容不允许为空。

        列名 类型(长度) not null,

唯一和主键约束的区别

1、唯一约束可以是空(null)。 但是主键约束不能为空

2、一张表中只能有一个主键,但是唯一约束可以有多个。

1.3.3 主键约束详解

列级约束

表级约束(联合主键)

1.3.4 唯一约束详解

列级约束

表级约束(联合约束)

1.3.5 外键约束详解

外键约束添加有表级约束和列级约束,但是在MySQL中列级约束无效果。

添加外键约束的字段只能取主表中关联的值。

创建外键约束时,只能关联表中带有唯一约束和主键约束的字段上。

为course表添加外键

测试外键情况

1.3.6 创建完表后,添加约束

添加非空约束
--语法alter table 表名 modify 列名 类型 not null;
--举例alter table stu modify name varchar(25) not null;

添加默认约束
--语法alter table 表名 modify 列名 类型 default 值;
--举例alter table stu modify sex char(1) default '男';

添加主键约束
--语法alter table 表名 add primary key(字段名);
--举例alter table stu add primary key(id);

添加唯一约束
--语法alter table 表名 add unique(字段名);
--举例alter table stu add unique(name);

添加外键约束

1) 主表不能删除从表已引用的数据

2) 从表不能添加主表未拥有的数据

3) 先添加主表数据再添加从表数据

4) 先删除从表数据再删除主表数据

5) 外键约束允许为空但不能是错的

主外键关系: 注意事项

前者:建立【实际的主外键关系】 和 后者:建立【逻辑主外键关系】 的区别?

前者有约束,必须按照外键约束来写

后者没有外键约束,但你不能写主键不存在

前者删除受主外键约束,后者删除不再受主外键约束

前者可能会造成级联删除, 后者不会造成级联删除

> 在实际开发中,一般不建立实际的外键关系,建立逻辑外键关系

> 在互联网公司中,不建立实际的外键关系,在实际传统行业中,需要建立实际的外键关系

--语法alter table 表名 add constraint 外键标识 foreign key (列名) references 主表名(主表列名)
--举例alter table scores add constraint scores_fk foreign key (stuId) references stu(id);

1.3.7 创建完表后,删除约束

删除非空约束
--语法alter table 表名 modify 字段名 类型 null;
--举例alter table stu modify name varchar(25) null;

删除默认约束
--语法alter table 表名 modify 列名 类型 default null;
--举例alter table stu modify sex char(1) default null;

删除主键约束
--语法alter table 表名 drop primary key;
--举例alter table stu drop primary key;

删除唯一约束
--删除前先设置唯一约束名为unique_namealter table 表名 add constraint unique_name unique(字段名);
--举例	alter table stu add constraint unique_name unique(name);--语法alter table 表名 drop index 唯一约束名(unique_name);
--举例alter table stu drop index unique_name;

删除外键约束
--语法alter table 表名 drop foreign key (唯一约束名);
--举例alter table scores drop foreign key fk_stuId;

1.3.8 给表添加约束

create table employee(id int primary key auto_increment,name varchar(32) not null unique, gender varchar(10),birthday date,job varchar(30),salary double not null
);

1.3.9 创建表添加注释

create table employee(id int primary key auto_increment comment '编号',name varchar(32) not null unique comment '姓名', gender varchar(10) comment '性别',birthday date comment '生日',entry_date date comment '入职日期',job varchar(30) comment '工作',salary double not null comment '薪水'
);

2、Navicat的安装与使用

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

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

相关文章

微服务介绍

背景 微服务是什么?杜克大学教授DanAriely说过一段非常出名的话,用来表述Big Data的发展现状。我觉得把这句话放到微服务身上也极其贴切。 Micro-services is like teenage sex: Everyone talks about it, nobody really knows how to do it, everyo ne thinks ev…

excel(vab)删除空行

删除第一、二、三列位空的所有行(8000)行范围以内 代码如下: Sub Macro1()Dim hang As Integer For hang 8000 To 1 Step -1If Sheet1.Cells(hang, 1) "" And Sheet1.Cells(hang, 2) "" And Sheet1.Cells(hang, 3) "&quo…

系统性学习vue-vue中的ajax

vue中的ajax 配置代理常用发送Ajax请求方式跨域方式一方式二 vue-resource插槽默认插槽具名插槽作用域插槽 配置代理 常用发送Ajax请求方式 xhr new XMLHttpRequest() 在真正开发中不常用,比较麻烦jQuery 封装了xhraxios 封装了xhr 与jQuery相比优势是&#xff1a…

怎样才能找到合适的产品说明书模板 方法献上

制作一份专业而吸引人的产品手册对于企业来说至关重要。然而,对于许多企业和个人而言,制作产品手册可能是一个挑战,因为需要一定的设计和排版能力。为了帮助大家更轻松地制作出优质的产品手册,下面将向大家推荐三款优秀的产品手册…

Ovtio不同版本下载

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…

2024年汉字小达人区级选拔备考——附加题:汉字和国学常识

上海的孩子们已经率先开启了悠长的寒假生活。在寒假期间,除了完成寒假生活、学校安排和要求外,还可以做些什么呢?不妨来为2024年汉字小达人做些准备吧!每天花个15分钟左右,背一背、做一做,轻松掌握汉字小达…

翻译: Streamlit从入门到精通 构建一个机器学习应用程序 三

Streamlit从入门到精通 系列: 翻译: Streamlit从入门到精通 基础控件 一翻译: Streamlit从入门到精通 显示图表Graphs 地图Map 主题Themes 二 1. 构建一个机器学习应用程序 在这一部分,我将带你了解我做的一个关于贷款预测的项目。 贷款的主要利润直…

“15个必备的自动化测试工具,助你构建2024年的自动化策略!“

以下为作者观点: 如何选择正确的自动化测试工具?自动化测试工具是旨在通过自动化测试脚本验证功能或非功能软件需求的应用程序,帮助加快发布速度、提高项目质量并强化成果。 自动化测试工具可以帮助开发测试人员轻松创建、运行和维护测试&a…

PlatformIO中ESP8266使用GxEPD库和U8G2库驱动 2.9寸黑白墨水屏显示中文

Content 0. 前言1. 安装platformIO环境2. 新建工程3. 添加外部库4. 修改U8g2_for_Adafruit_GFX库5. 代码和烧录 0. 前言 墨水屏是黄鱼淘的,效果还不错。 U8G2库一直编译不进去,显示汉字始终不太美观,个人一直不太喜欢汉字取模的方法&#x…

【RabbitMQ】RabbitMQ高级:死信队列和延迟队列

目录 设置TTL(过期时间)概述RabbitMQ使用TTL原生API案例springboot案例 死信队列概述原生API案例springboot案例 延迟队列概述插件实现延迟队列安装插件代码 TTL实现延迟队列实现延迟队列优化 设置TTL(过期时间) 概述 在电商平台…

Komodor:Kubernetes 监控工具全面指南

为了方便起见,Komodor 提供了一个简单的 Web 界面,以帮助您监控 Kubernetes 集群的状态。它拥有付费和免费增值计划,除了在出现问题时通知用户外,还拥有一系列方便的工具,用于跟踪和管理集群中部署的资源的状态。让我们…

计算机网络 应用层

文章目录 应用层域名系统 DNS域名系统概述互联网的域名结构域名服务器 文件传送协议FTP 概述FTP 的基本工作原理简单文件传送协议 TFTP 远程终端协议 TELNET万维网 WWW统一资源定位符 URL超文本传送协议 HTTP万维网的信息检索系统 电子邮件电子邮件概述简单邮件传送协议 SMTP邮…

2024年机器人和人工智能将通过4种方式改变行业

文 | BFT机器人 前言: 2023年是人工智能界充满创造性和突破性的一年,包括生成式人工智能在内的人工智能 (AI) 技术的出现引起了全球的关注并占据了头条新闻。然而,生成式人工智能在企业中的应用仍处于早期阶段,如何最好地利用这项…

大物②练习题解

1.【单选题】关于磁场中磁通量,下面说法正确的是( D) A、穿过闭合曲面的总磁通量不一定为零 B、磁感线从闭合曲面内穿出,磁通量为负 C、磁感线从闭合曲面内穿入,磁通量为正D、穿过闭合曲面的总磁通量一定为零 磁感线从…

“轻松粘贴,高效办公:自动粘贴文本技术让您事半功倍

"在快节奏的现代工作中,时间就是金钱。使用自动粘贴文本技术,让您告别繁琐的手动操作,提高工作效率。一键粘贴,释放您的双手,让您专注于创作和思考。让工作更高效,生活更精彩!" 首先…

广告投放场景中ABtest分析的评价、优化和决策建议

目录 写在开头1. AB测试基础知识1.1 AB测试概述1.2 原理和流程1.3 广告领域中的AB测试应用 2. 评价广告投放中的AB测试2.1 关键指标选择与解释2.2 统计学方法应用 3. AB测试分析中的常见问题与解决方案3.1 样本偏差3.2 季节性影响3.3 测试时长选择3.4 结果误解与分析失误 4. 优…

《TrollStore巨魔商店》TrollStore2安装使用教程支持IOS14.0-16.6.1

TrollStore(巨魔商店) 简单的说就相当于一个永久的免费证书,它可以给你的iPhone和iPad安装任何你想要安装的App软件,而且不需要越狱,不用担心证书签名过期的问题,不需要个人签名和企业签名。 支持的版本: TrollStore安装和使用教…

Markdown 流程图绘制详解

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您有一定的帮助请&#x1f…

Python图像处理实战:使用PIL库批量添加水印的完整指南【第27篇—python:Seaborn】

文章目录 1. 简介2. PIL库概述3. PIL库中涉及的类4. 实现原理5. 实现过程5.1 原始图片5.2 导入相关模块5.3 初始化数据5.4 水印字体设置5.5 打开原始图片并创建存储对象5.6 计算图片和水印的大小5.7 选择性设置水印文字5.8 绘制文字并设置透明度5.9 遍历获取图片文件并调用绘制…

超简单的node爬虫小案例

同前端爬取参数一样,输入三个参数进行爬取 注意点也一样: 注意分页的字段需要在代码里面定制化修改,根据你爬取的接口,他的业务规则改代码中的字段。比如我这里总条数叫total,人家的不一定。返回的数据我这里是data.r…