MySQL:创建数据库,数据表,主键和外键

news2024/12/23 9:42:14

目录

前言:

安装MySQL:

打开MySQL:

创建数据库:

查看已建数据库:

查看数据库引擎:

创建数据表:

 主键约束:

单字段主键:

多字段联合主键:

外键约束:


前言:

MySQL数据库安装了很久,一直也没静下心来学习,因为起步太晚,所以什么都想学点,又感觉有些力不从心,目前为爬虫打基础,这是一项漫长的工程,希望能够坚持下去。

安装MySQL:

mysql8.0.25安装配置教程(windows 64位)最详细_mysql8.0.25安装教程图解_聚精会神搞学习的博客-CSDN博客

这里放上大佬的安装教程,非常简单实用,且一看就懂。最主要的是路径配置,省去很多麻烦。

打开MySQL:

很多教程中直接win + r,如果数据库没有装入C盘,则要转到你安装数据库的盘中。

首先第一步——将数据库联网:

net start mysql

联网联网,不联网啥都没有!直接error!

第二步,登录:

mysql -u root -p

第三步,输入密码。

我个人更偏向用终端(管理员)打开mysql:(看起来更加舒适一些)

右键开始菜单 --> 终端(以管理员身份)--> 重复上面的三个步骤。

再次提醒!不要遗漏掉“连接网络”这一步,如果打开后直接登录,就会报错。

如果想要断开网络连接,直接写:

net stop mysql

创建数据库:

CREATE DATABASE 数据库名称;

查看已建数据库:

SHOW DATABASES;

请注意,要大写!否则:

 而且也不要忘记最后面的 ‘分号’

问题:有 :SHOW DATABASES;  这个命令,那么 SHOW CREATE DATABASE database_name; 又是什么呢?

即:显示已创建的 database_name (注意,这是数据库的名字) 的内容。

很容易在刚开始使用的时候认错,以为其默认输出上一个创建的数据库,其实不然,后面一定要附上数据库的名字,否则会报错:

以上两个语句的错误各有千秋,大家是否看出来了呢?

一定要注意DATABASE 的单复数。

查看数据库引擎:

最常见的引擎有三种:

InnoDB (我的数据库引擎就是这个)

MyISAM

MEMORY

当然,可以通过命令输出数据库引擎。

 (上图只截取了一部分)

也可以:

support 表示引擎能否使用;default则表示默认引擎

有一个教程上写有另一种方法可以直接查看默认引擎:

我试了,是这样:

不知道是什么情况,如有路过大佬,还请指点迷津。 


以上是创建“数据库”,接下来创建数据表。

创建数据表:

在创建数据表之前,一定要先选择在哪个库中创建:

USE 表名称

 出现: Database changed  表示:已经选中了该数据库,接下来创建数据表:

CREATE TABLE tb1

# 创建数据表的命令为:CREATE TABLE 后面要加上所创建数据表的名字,注意到这里还没有结束。

# 这里可以按下回车,但是在末尾千万不要加上分号。

(id INT(11), name VARCHAR(25), deptID INT(11), salary FLOAT);

# 以上是创建表的全部语句,结束之后需要加上分号。

#在终端操作不建议在这一句上进行分行处理,尤其是写习惯代码,敲对号一次敲一对的,就更不能按回车!

#如果实在是想给他分行写,那么最外面的括号的右半要最后再敲上去。

# 在这里插播一下,我们在括号内部写的是表的结构(下面简单举两个例子):

字段名称数据类型备注
idINT(11)
nameVARCHAR(25)

目前还没有弄清楚为什么会出现 2warnings,后续弄明白再补充上。

到此为止,建立了一个表,只不过这个表是空的。

我们来查看一下该表:

SHOW TABLES;

 主键约束:

主键就是主码,主键约束,即要求主键列数据唯一,且不能为空。这样就能够明确标注该键所在的一行数据。(主键其实可以不在列首,甚至一个表格内可以有多个主键约束)

主键约束可以是一个字段,也可以是多个字段(字段说白了就是每一列的列头名称。)

单字段主键:

可以直接在字段之后设置

# 我又创建了一个名为 tb2 的表格,只是在ID(这就是一个字段)后添加了 PRIMARY KEY ,不要写错字母。

# 所以这个表格的主键就是 ID

# 查看一下,确实创建完成了。

除此之外,可以先确定各个字段,在最后标明主键。

# 如果在写入字段的时候发生错误,注意,一定要重新创建表格!

# 报错提示会标明错误的地方。终端和pycharm不同,终端没有提示,很容易写错,建议写两个字就赶快查看一下是否出错。

# 这里敲代码也是可以进行复制和粘贴操作的。

# 下面是我的前车之鉴。

 即使字段设置完成,没有创建表的命令,也一样会报错。

多字段联合主键:

 只能选用第二个方法啦!就是在括号内写入多个字段即可。

外键约束:

外键可以在多个表之间建立联系。

外键在子表中,外键依赖的主键在父表中。

子表中所设置的外键可以不是子表的主键:即,子表主键为id,其外键可以是septID,但是这个外键一定是要关联到父表的主键上。

举个例子:

我们就拿之前的tb3作为父表:

此时 tb3 的主键是 id

我们再创建一个子表:

其中字段内容和 tb3 相同,外键设置为 deptID,链接到父表的主键上:

 主要语句:

CONSTRAINT <外键名> FOREIGN KEY (<子表中作为外键的字段>) REFERENCES <父表名称>(<父表的主键>);

注意,如果在设置外键时,名称不小心打错了,就会报错:

 这个报错提示很明显。

注意:

子表的外键必须关联父表的主键,且两个字段的数据类型必须相同!

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

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

相关文章

《编码——隐藏在计算机软硬件背后的语言》精炼——第11章(门)

“The only source of knowledge is experience.” - Albert Einstein 引言 编码是一种处理并表达信息的方式&#xff0c;它包括摩斯电码、盲文、二进制语言等等&#xff0c;当然作为计算机类的经典书籍&#xff0c;这本书简述了计算机中以二进制数为基础的编码方式&#xff0…

5自由度并联机械臂实现搬运功能

1. 功能说明 本文示例将实现R306样机5自由度并联机械臂搬运牛奶到指定地点的功能。该机械臂由1个5自由度并联机械臂和1个单轴丝杠平台构成&#xff0c;机械臂通过并联的方式同时控制同一个端点的运动。其驱动系统采用大扭矩舵机和小扭矩舵机、执行末端为夹持机构。 2. 并联机械…

SEO优化中的外链与反链是什么意思?它们之间有什么区别?

在SEO优化中&#xff0c;外链和反链是两个非常重要的概念。虽然它们听起来很相似&#xff0c;但实际上却有着很大的区别。那么&#xff0c;什么是外链和反链&#xff1f;它们之间有什么区别呢&#xff1f;本文将为您详细介绍。 一、什么是外链 外链&#xff0c;也被称为入站链…

C++---区间DP---环形石子合并(每日一道算法2023.4.24)

注意事项&#xff1a; 本题是"区间dp—石子合并"的扩展题&#xff0c;dp思路完全一样&#xff0c;就不多详细讲了&#xff0c;可以去那篇文章看&#xff0c;这题主要讲一下如何处理环形。 题目&#xff1a; 将 n 堆石子绕圆形操场排放&#xff0c;现要将石子有序地合…

ES的索引结构与算法解析

作者&#xff1a;京东物流 李洪吉 提到ES&#xff0c;大多数爱好者想到的都是搜索引擎&#xff0c;但是明确一点&#xff0c;ES不等同于搜索引擎。不管是谷歌、百度、必应、搜狗为代表的自然语言处理(NLP)、爬虫、网页处理、大数据处理的全文搜索引擎&#xff0c;还是有明确搜…

DAY03_循环语句

1&#xff1a;for循环结构 来&#xff0c;继续啊&#xff0c;下面我们来学习循环结构语句&#xff0c;循环结构有三种语句&#xff0c;分别是&#xff1a; for循环 while循环 do…while循环 这三种循环可以做相同的事情&#xff0c;当然它们也有小的区别&#xff0c;至于它…

【LeetCode】322. 零钱兑换

322. 零钱兑换&#xff08;中等&#xff09; 思路 由于题目提到 「每种硬币的数量是无限的」&#xff0c;所以这道题本质上完全背包问题&#xff0c;我直接使用了空间压缩的写法。dp[j] 表示当前区间在 [0, i]的硬币可以表示成 j 的最小数量。注意&#xff0c;这里把 dp数组初始…

windows安装sqli-labs靶场,两种方式

1、安装phpstudy 官网打不开了&#xff0c;下载地址在这儿https://download.csdn.net/download/weixin_59679023/87711536 双击安装 点自定义安装&#xff0c;选择安装目录&#xff0c;注意目录不要有空格和中文 安装完成启动红框内的两个服务 2、安装sqli靶场 这个包支持ph…

4.23学习周报

文章目录 前言文献阅读摘要简介方法结果结论 时间序列预测学习总结 前言 本周阅读文献《A novel hybrid model for water quality prediction based on synchrosqueezed wavelet transform technique and improved long short-term memory》&#xff0c;文献主要提出一种新型混…

动力节点Springsecurity笔记06-13基于数据库的方法授权

6 密码处理 6.1 为什么要加密&#xff1f; csdn 密码泄露事件 泄露事件经过&#xff1a;https://www.williamlong.info/archives/2933.html 泄露数据分析&#xff1a;https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密方案 密码加密一般使用散列函数&a…

react-9 函数式写法rsc,配合HOOKS基础钩子函数

函数组件和类组件区别&#xff1a; 1.函数组件中没有this 2.函数组件无需继承 3.函数组件默认没有状态&#xff0c;想要使用组件状态必须通过 HOOK 函数引入 4.函数组件默认没有生命周期函数 5.函数组件的渲染&#xff0c;只需要一次函数调用即可 useState &#xff1a;用…

【react全家桶学习】react中JSX语法规则

目录 JSX的定义 XML的含义 JSX的语法规则 &#xff08;1&#xff09;定义类名&#xff0c;用className而不是class &#xff08;2&#xff09;如何使用内联样式设置样式 &#xff08;3&#xff09;虚拟dom必须只有一个根标签 &#xff08;4&#xff09;在react组件中使用变…

谷歌将发布全新搜索引擎,你期待吗?

Google一身自带AI属性的新搜索最首要的目标并非急于取代传统搜索引擎&#xff0c;或者说彻底打败ChatGPT&#xff0c;而是能够用全新的产品说服用户&#xff0c;变得与竞争对手同样“强大、能力出众以及顺应AI潮流”。 对于Google而言&#xff0c;搜索就是命脉。Google每年的收…

Java基础——多线程创建

&#xff08;1&#xff09;什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。程序中只有一条执行路径&#xff0c;那么这个程序就是单线程的程序。 &#xff08;2&#xff09;多线程是什么&#xff1f; 多线程是指从软硬件上实现多执行流程的技术。 &…

Python入门教程+项目实战-10.5节: 程序实战-冒泡排序算法

目录 10.5.1 排序算法简介 10.5.2 冒泡排序算法 10.5.3 系统学习python 10.5.1 排序算法简介 所谓排序&#xff0c;是指将数据集合中的元素按从小到大的顺序进行排列&#xff0c;或按从大到小的顺序进行排列。前者称为升序排序&#xff0c;后者称为降序排序。在数据结构与算…

jenkins自动化部署配置

文章目录 1. jenkins 插件安装2. 配置2.1 全局工具配置2.2 全局配置2.2.1 gitee 配置 3. 创建任务添加gitee ssh jenkins 开机自启动 1. jenkins 插件安装 ant Build Failure AnalyzerBuild Monitor ViewBuild Timeout dockerEmail Extension Plugin giteegithubgradle javama…

【11 EL表达式JSTL 学习笔记 】

EL表达式 学习笔记 1. EL表达式介绍2. EL表达式的基本使用3. EL 表达式获取数据4. EL注意事项5. EL表达式运算符关系运算符逻辑运算符empty&三元运算符 6. EL表达式细节7. EL表达式11个隐式对象8. JSTL8.1 JSTL的基本使用 1. EL表达式介绍 简化了 java代码块和jsp表达式的…

ChatGPT的开源平替,终于来了!

最近这段时间&#xff0c;一个号称全球最大ChatGPT开源平替项目Open Assistant引起了大家的注意。 这不最近还登上了GitHub的Trending热榜。 https://github.com/LAION-AI/Open-Assistant 根据官方的介绍&#xff0c;Open Assistant也是一个对话式的大型语言模型项目&#xff…

RUST 每日一省:生命周期作用域

生命周期 一个变量的生命周期就是它从创建到销毁的整个过程。 作用域 我们声明的每个变量都有作用域。作用域其实是变量和值存在的环境。作用域是由一对花括号表示的。例如&#xff0c;使用块表达式会创建一个作用域&#xff0c;即任何以花括号开头和结尾的表达式。此…

RabbitMQ-整合mqtt

用 springboot rabbitmq可以搭建物联网&#xff08;IOT&#xff09;平台&#xff0c;rabbitmq 不是消息队列吗&#xff0c;原来rabbitmq有两种协议&#xff0c;消息队列是用的AMQP协议&#xff0c;而用在智能硬件中的是MQTT协议。 一、rabbitmq是什么&#xff1f; RabbitMQ就…