MySQL数据库语言一、DDL

news2024/10/7 8:23:58

😘作者简介:正在努力的99年打工人。
👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。
🙏创作不易,动动小手给个点赞加关注吧,有什么意见评论区告诉我,一起学习。

目录

前言

什么是数据库?

DDL语句

创建库

创建表

类型

测试

 向student表中插入数据

约束

测试

主键

 外键

唯一约束 UNIQUE

 DEFAULT设置默认值

 无符号正数UNSIGNED

 ZEROFILL零填充

实战

创建表

创建学生信息表

 创建学生成绩表

 插入数据

 利用主外键联系更新主表学生信息

前言

数据库语言分类:DDL语句、DML语句、DQL语句、DCL语句。

DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE  DROP ALTER。

DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE

DQL语句 数据库查询语言: 查询数据SELECT

DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

什么是数据库?

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

一个数据库有若干个表,这些表记录着各种信息。

数据表的各列表示字段,属性。

数据表的各行记录着各种数据,各种信息


 

DDL语句

创建库

打开之前安装的MySQL环境登录到MySQL中进行操作。

语法:

CREATE   DATABASE   库名;        //创建库

SHOW    DATABASES;                //查看所有库;

创建school数据库,通过show databases;进行查看所有数据库这里有默认的一些库,不要随意去动这些。

information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等

performance_schema: 主要存储数据库服务器的性能参数

mysql: 授权库,主要存储系统用户的权限信息

sys: 主要存储数据库服务器的性能参数

创建表

语法:CREATE   TABLE  表名(字段1  类型   约束,字段2  类型  约束,.....)ENGINE=引擎;

字段后面约束可写可不写,但是字段后面必须要跟字段的数据类型。

ENGINE设置引擎,默认是INNODB,所以可以不用写。

类型

数据类型:

        整型:int整数

        浮点型:float

日期类型:

        年:YEAR

        日期:DATE

        时间:TIME

        日期和时间:DATETIME

字符串类型:

        字符:CHAR和VARCHAR

        枚举:ENUM

        多选:SET

测试

创建表(不加约束)

use   库名         //进入库,如果不进入库,创建表之前要加上库名.表名创建。

select   database();        //查看当前库

语法:CREATE   TABLE   表名(字段1  数据类型,字段2   数据类型。。。);       //创建表

不进入库创建:CREATE   TABLE   库名.表名(字段1  数据类型,字段2   数据类型。。。); 

desc   表名        //查看表结构

 向student表中插入数据

插入语句是DML语句:INSERT

语法:INSERT   INTO  表名  VALUES(数据1,数据2。。。);

 注意:这里id位置插入数据如果不是整数会报错,sxe位置插入的如果不是b或这个g也会报错。

约束

主键PRIMARY KEY :标识该字段为该表的主键,可以唯一的标识记录,不可以为空。

外键FOREIGN KEY :标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联

UNIQUE KEY :标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY

AUTO_INCREMENT:标识该字段的值自动增长(整数类型,而且为主键)

DEFAULT:为该字段设置默认值

NOT NULL   :标识该字段不能为空

UNSIGNED:无符号,正数

ZEROFILL :使用0填充,例如0000001

测试

语法:CREATE   TABLE   表名(字段1  数据类型  约束,字段2   数据类型   约束。。。);

主键

创建p1表设置id为主键,主键不能为空,一般设置为自增。 

使用desc查看表结构可以看到id的key列和extra有了内容 。

插入正确数据

 插入错误数据

插入重复的id数会报错。因为设置了id自增所以在不输入id的情况下,会默认在前一个数据的基础上加1所以不会报错,如果不给自增约束,这里不填写id的数据会报错。

 外键

测试外键需要两个表,一个主表一个副表,外键要绑定主键的,所以主表要加主键,外键是假在副表上的。这里主表用刚刚的p1表因为已经创建了主键,接下来创建副表来增加外键。

语法:create  table  表名(字段1   数据类型    约束,foreign key(字段)   references  主表名(主键字段) on  需求  cascade);

需求可以是update  或者 delete等操作可以同时加多个需求

 向p2插入数据

向p2插入两条数据。

注意:这里插入的数据pid部分必须要和主表的id数据匹配负责将报错,因为要保证副表的外键部分要和主表的主键部分有联系。

 测试主外键联系

对主表内容进行修改。

发现主表id为1的数据改为3之后对应的副表pid为1的数据也同时改为了3。 

唯一约束 UNIQUE

UNIQUE唯一约束,和主键的区别在于UNIQUE可以为空。

语法:create  table  表名(字段    数据类型   UNIQUE);

 id部分插入非空数据

没有报错。

 id部分不插入内容

id位置不插入数据,仍然不会报错。

 DEFAULT设置默认值

一般在一些字段,当用户不输入任何值时,需要给一个默认值,比如在学校选课时,当你不做任何操作默认选课选项为否。

语法:create  table  表名(字段   数据类型   default(默认值));

 在choose出不插入数据测试

只在obj处插入数据不在choose插入数据,在查询表内容的时候choose有数据‘no’。

 无符号正数UNSIGNED

该约束,要求输入的字段只能是正数。

注意这个约束要紧跟数据类型之后。

这里创建了两个id字段,一个是正常int  另一个是加了unsigned约束的id。

 测试插入正确数据

int数据类型是支持负数的。

测试在id_unsigned录入负数

 可以发现都是int数据类型,但是id_unsigned录入负数就会报错,这就是unsigned约束的作用。

 ZEROFILL零填充

使用0填充,例如0000001

这里顺便介绍int类型的使用,在定义数据类型为int或者float类型的时候可以使用int(10)这个10表示该数据的长度,但不会限制,这个在0填充部分可以体现。

 发现在约束0填充的同时会默认加上正数约束。

插入数据

在插入数据长度不到定义的数据长度时会自动在前面填充0。

这个约束往往会用在学生的学号以及人员编码上,为了美观。

实战

使用已学的数据类型以及约束来创建完善的学生表。

创建表

学生信息表:

        要求:学生表存储学生学号、姓名、性别、年龄、籍贯。

学生成绩表:

        要求:创建姓名外键,存储学生学号、姓名、学科、成绩。

创建学生信息表

mysql> create table studentmsg(id int(3) zerofill not null auto_increment,
    -> name varchar(20) not null,
    -> sex enum('b','g') not null,
    -> age int,
    -> area varchar(100),
    -> primary key(id,name));

 创建学生成绩表

因为主表使用的是复合主键所以这边也要用复合主键做外键。

create table score( 
    -> id int(3) zerofill not null  auto_increment, 
    -> name varchar(20) not null, 
    -> obj varchar(50) not null, 
    -> score float(5,2), 
    -> primary key(id), 
    -> foreign key(id,name) references stuudentmsg(id,name) on update cascade on delete cascade);

 插入数据

mysql> insert into studentmsg values(1,'tom','b',16,'江苏'),(2,'lucy','g',18,'浙江');
mysql> insert into score values(1,'tom','Math',89),(2,'lucy','English',93);

 利用主外键联系更新主表学生信息

需求:需要将001号学生姓名改为jack。

mysql> update studentmsg set name='jack' where id=1;

改完之后score表的该学生信息也发生了变化。 

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

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

相关文章

华为OD机试真题B卷 JavaScript 实现【分班】,附详细解题思路

一、题目描述 幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。 小朋友的编号为整数,与前一位小朋友同班用Y表示,不同班用N表示。 二、输入描述 输…

uniapp/手机APP使用支付宝支付(服务端)

博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战、定制、远程,博主也曾写过优秀论文,查重率极低,在这方面…

chatgpt赋能python:Python接口应用于SEO的指南

Python接口应用于SEO的指南 Python成为了web开发中最流行的语言之一,而且尤其在SEO领域中被广泛应用。一些Python库和框架可帮助SEO团队实现其目标,如排名跟踪,爬取数据,进行网站分析,等等。在本文中,我们…

基于Hexo和Butterfly创建个人技术博客,(9) 优化butterfly主题配置文章版本

Butterfly官方网站,请 点击进入 本章目标: 掌握butterfly主题对文章的配置,熟悉并可按需配置到个人的博客站点中,本章内容是一个必会章节,不仅包括文章的UI美化、SEO相关配置还包括其它增加的功能,内容不多…

英语不好能不能学编程?

入门教程、案例源码、学习资料、读者群 请访问: python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 常有人问我:我英语不好,想学编程行不行? 这个问题需要分情况讨论。 1. 可以学 如果你因为担心自己英语不…

chatgpt赋能python:Python怎么用?Python编程的入门指南

Python怎么用?Python编程的入门指南 Python是一种流行的高级编程语言,它被广泛应用于数据分析、机器学习、Web开发、自动化测试等领域。Python语言非常容易学习和使用,因此非常适合初学者和有经验的开发人员。在这篇文章中,我们将…

手把手教你在CentOS7.9上使用docker 安装MySQL5.7

前言 大家好,又见面了,我是沐风晓月,本文主要讲解如何用docker在centos7.9系统上安装MySQL5.7,以及如何设置MySQL的远程登录。 文章收录到【容器管理】和【数据库入门到精通专栏】,此专栏是沐风晓月对linux云计算架构…

chatgpt赋能python:Python怎么清除动点轨迹?

Python怎么清除动点轨迹? 引言 在数据科学和可视化的领域中,动点轨迹是很有用的工具。动点轨迹可以轻松地显示数据点的时间序列,这可以帮助分析者发现有关数据集的有用信息。然而,当轨迹过于密集和复杂时,这种可视化…

Spring Cloud Alibaba - Sentinel源码分析(一)

目录 一、Sentinel核心源码分析 1、Sentinel核心概念 1.1、Node之间的关系 2、Sentinel源码入口 2.0、Sentinel源码启动 2.1、SlotChain解析 2.2、NodeSelectorSlot解析 2.3、ClusterBuilderSlot解析 2.4、StatisticSlot解析 2.5、FlowSlot解析 2.6、DegradeSlot解析…

白鲸优化算法优化VMD参数,最小包络熵为适应度函数,提取最小包络熵对应的IMF分量,采集最佳IMF分量的9种时域指标,提取特征向量。以西储大学数据为例,附MATLAB代码

大家看到这篇文章,肯定会有疑问,难道本篇文章和上一篇文章不是一个意思嘛,这是来凑数的嘛……其实不然,如果各位读者仔细看,就会发现本篇文章和上一篇文章大有不同,这篇文章也是我一直以来想在上一篇文章基…

chatgpt赋能python:Python断言:如何断言等于两个值其中一个?

Python断言:如何断言等于两个值其中一个? Python是一种广泛使用的编程语言,而断言是它的一个重要功能。在编程中,我们可以使用断言来验证代码是否按照预期工作。但是,在某些情况下,我们可能想要断言两个值…

快速上手kettle(四)壶中可以倒出些啥?

快速上手kettle(四)壶中可以倒出些啥 前言一 、kettle 这壶里能倒出啥?二 、Access输出2.1 Access输出设置2.2 启动转换,查看输出 三 、Excel输出3.1 选择excel扩展名3.2 1 将表中数据分别写入到excel中 四、JSON output4.1 JSON …

常见骨干网络介绍

骨干网络 骨干网络(backbone network)顾名思义,是深度学习中最核心的网络组成。本文按时间顺序,简要介绍几种影响重大的backbone设计思路,我们或许可以从窥探前人的设计思路中获得启发和灵感。 1.1 AlexNet, 2012 这…

10倍|中科院再传好消息:比英伟达还快,“新技术”实现弯道超车

中科院再传好消息:在光芯片上有了重大突破,李明-祝宁华团队研制出了一款超高集成度光学卷积处理器。 这种方案具有高算力密度、超高的线性扩展性! 基于这种技术的,光芯片的性能将再次提升,光芯片是用于AI,如果能变成现…

每日算法(第二十四期)

先来回顾一下上期的问题及答案: 2023年6月15日 「电话号码的字母组合」(Letter Combinations of a Phone Number)。以下是题目的描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的…

记录--前端如何优雅导出多表头xlsx

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 xlsx导出是比较前后端开发过程中都比较常见的一个功能。但传统的二维表格可能很难能满足我们对业务的需求,因为当数据的维度和层次比较多时,二维表格很难以清晰和压缩的方式展现所有的…

macOS Ventura 13.5beta3(22G5048d)发布

系统介绍 黑果魏叔 6 月 16 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 3 更新(内部版本号:22G5048d),本次更新距离上次发布隔了 15 天。 macOS Ventura 带来了台前调度、连续互通相机、Fa…

【Axure 教程】中继器(进阶篇)

一、修改、删除指定行 首先我们还是在 Axure 页面中拖入一个【中继器】,并双击打开,在默认的【矩形】后面加上【修改】和【删除】按钮: 然后我们给修改按钮添加【中继器事件】,选择【更新行】: 可以看到,由…

Axure RP 9 基础教程 元件基础3

11、组合元件 Axure中可以将多个元件组合起来,组合可以被命名,也可以被当成一个元件来进行交互,调整位置和大小等。选中多个元件,在顶部菜单中点击组合图标即可。选中一个组合,点击取消组合,可以就地解散。…

多传感器融合分类及对比

1.多传感器融合的体系结构 在多传感器融合中,按照对原始数据处理方法的不同,多传感器融合系统的体系结构可以分为三种:集中式,分布式和混合式(混合式又分为有反馈结构和无反馈结构)。 集中式融合:将各传感器获得的原始…