头歌 MySQL数据库 - 初识MySQL

本章内容是为了完成老师布置的作业,同时也是为了以后考试的时候方便复习。

数据库部分一条一条的写,可鼠标手动粘贴,除特定命令外未分大小写。

第1关:创建数据库

        在操作数据库之前,需要连接它,输入命令:

mysql -u用户名 -p密码。

        在平台上连接数据库还需要加上一句:

mysql -uroot -p123123 -h127.0.0.1

         创建数据库:

create database MyDb;

第2关:创建表

        连接数据库:

mysql -uroot -p123123 -h127.0.0.1

        创建数据库

create database TestDb;

         进入数据库:

use TestDb;    //进入数据库

         创建表:

 CREATE TABLE 表名
(
    字段名,数据类型,
    字段名,数据类型,
    .....
)

create table t_emp (
    id int,
    name varchar(32),
    deptId int,
    salary float
);

第3关:使用主键约束

        主键,是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。

         怎么理解主键?数据库中的表可以存放很多数据,如果把表中的每一个数据比作一个人的话,那么表的主键就可以看做是人的身份证

         有两种方式可以添加主键约束:

        1.在定义列的同时指定主键

ad0a2e930d6e436a9bda0ec5363783f5.png

        2.在定义完字段之后再指定主键

a4d2c049089f4cdb9b7681b22efe4cb8.png

         在数据库MyDb中,创建两张表t_user1t_user2,表结构如下,请为两张表分别创建主键约束,t_user1的主键为userId,t_user2的主键为联合主键,将字段namephone作为t_user2的联合主键。

ccce8f867b884c5498d5077d0d12fd0e.png937f6c2ddc6b436bae2aa55c90ab1647.png

mysql -uroot -p123123 -h127.0.0.1

create database MyDb;

use MyDb;
create table t_user1(
    userId INT PRIMARY KEY,
    name VARCHAR(32),
    password VARCHAR(11),
    phone VARCHAR(11),
    email VARCHAR(32)
);
create table t_user2(
    name VARCHAR(32),
    phone VARCHAR(11),
    email VARCHAR(32),
    PRIMARY KEY(name,phone)
);

第4关:外键约束

1.外键是什么?

        外键就是另一张表中的主键。外键的主要作用就是保持数据的一致性,完整性。

4b5c098a58644cc8aae8275e72cc0739.png

         如图有两张表,classIdT_Student的外键,是T_class 表的主键, 如果我们要删除T_class 表中classId1的字段,程序是会报错的,因为t_student表中有数据和classId1的字段关联了,是不能删除的,这样子就保证了数据的一致性和完整性

2.如何才能删除?

        需要先删除T__student表中classId1的两个字段。

3.如何给表添加外部关键字?

        在MySQL中给表中字段添加外键约束的语法规则如下:

CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)

        举个例子:现在有两张表,t_empt_dept如下。 

1651aca415ae4e689ec4dd41380c1511.png

e75c390d12ad4d869544e7ecea77f462.png

         创建两张表,并给员工表(t_emp)添加外键:

CREATE TABLE t_dept
(
    deptId INT PRIMARY KEY,
    name VARCHAR(22),
    location VARCHAR(50)
);
CREATE TABLE t_emp
(
    id INT PRIMARY KEY,
    name VARCHAR(22),
    deptId INT,
    CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
);

4.题目

        创建两张表如下,给t_student表添加外键约束,外键为classId,外键名称为fk_stu_class1

6a51a429111d458bafad289e685a42ef.png

         代码如下:

mysql -uroot -p123123 -h127.0.0.1

create database MyDb;

use MyDb;
CREATE TABLE t_class
(
    id INT  PRIMARY KEY,
    name VARCHAR(22) 
);)
CREATE TABLE t_student
(
    id INT  PRIMARY KEY,
    name VARCHAR(22) ,
    classId int,
    CONSTRAINT fk_stu_class1 FOREIGN KEY(classId) REFERENCES t_class(id)
);

 第5关:添加常用约束

        在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束。

        唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

 1.添加唯一约束

        定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) UNIQUE,
    location VARCHAR(50)
)

 2.添加非空约束

        关键词:NOT NULL

CREATE TABLE t_dept(
    id INT PRIMARY KEY,
    name VARCHAR(22) NOT NULL,
    location VARCHAR(50)
)

3.使用默认约束

        默认约束:即给字段一个默认值。 关键词:DEFAULT; 

CREATE TABLE t_emp(
    id INT PRIMARY KEY,
    name VARCHAR(22),
    sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;

        注意:

  • 如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;
  • 如果要添加的是中文默认值,则需要加上DEFAULT CHARSET=utf8;使用英文字符则不需要。

 4.设置表的属性值自动增加

        在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:

ac72b50a8a53484690510b772f41a77f.png

         关键词:AUTO_INCREMENT,默认情况下初始值和增量都为1

CREATE TABLE t_tmp
(
    id int PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(32)
)

 5.题目

        在数据库MyDb中创建表t_user,表结构如下:

7d1a60d50fda4a45ad27f2fcda473761.png

        提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。 

mysql -uroot -p123123 -h127.0.0.1

create database MyDb;

use MyDb;
CREATE TABLE t_user
(
    id INT  PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(32) NOT NULL UNIQUE,
    sex VARCHAR(4) DEFAULT '男'
)DEFAULT CHARSET=utf8;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Deep learning for fine-grained image analysis: A survey》阅读笔记

论文标题 《Deep learning for fine-grained image analysis: A survey》 作者 魏秀参,旷世研究院 初读 摘要 细粒度图像分析(FGIA)的任务是分析从属类别的视觉对象。 细粒度性质引起的类间小变化和类内大变化使其成为一个具有挑战性的…

一起学docker系列之五docker的常用命令--操作容器的命令

目录 前言1 启动容器2 查看容器3 退出容器4 启动已经停止的容器5 重启容器6 停止容器7 删除已经停止的容器8 启动容器说明和举例9 查看容器日志10 查看容器内运行的进程11 查看容器内部细节12 进入正在运行的容器并进行交互13 导入和导出容器结语 前言 当涉及到容器化技术&…

对话芯动科技 | 助力云游戏 4K级服务器显卡的探索与创新

2021年芯动科技推出了基于IMG BXT GPU IP的风华1号显卡。单块风华1号显卡可在台式机和云游戏中实现4K级别的性能,渲染能力达到5 TFLOPS,如果在服务器中同时运行两块显卡,性能还可翻倍。该显卡是为不断扩大的安卓云游戏市场量身定制的&#xf…

代码随想录算法训练营第三十八天【动态规划part01】 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划理论基础 什么是动态规划 动态规划 (Dynamic Programming, DP),是求解决策过程最优化的过程。 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪…

Spring IOC - 推断构造方法

一、前言 上文解析了Bean生命周期的实例化阶段,其中bean真正开始实例化的核心代码位于方法AbstractAutowireCapableBeanFactory#createBeanInstance中,这里也是spring推断构造方法的核心所在。 二、整体介绍 首先看下方法的源码及注释如下,下…

“具有分布式能源资源的多个智能家庭的能源管理的联邦强化学习”文章学习四——基于联邦深度学习的多智能家居能源管理

一、用于家庭能源管理的FRL算法 在本节中,我们将阐述提出的FRL算法(算法1),该算法以分布式方式调度多个智能家庭的能量消耗。在提出的FRL框架中,LHEMS和GS相互迭代并有效训练LHEMS的模型。我们考虑了由LHEMS控制的空调…

vivado产生报告阅读分析7-时序报告3

1、“ Timing Summary Report ”详情 “ Timing Summary Report ” ( 时序汇总报告 ) 包含下列部分 : • “ General Information ”部分 • “ Timer Settings ”部分 • “ Design Timing Summary ”部分 • “ Clock Summary ”部…

公网使用PLSQL远程连接Oracle数据库【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

Linux常用命令——bzcat命令

在线Linux命令查询工具 bzcat 解压缩指定的.bz2文件 补充说明 bzcat命令解压缩指定的.bz2文件,并显示解压缩后的文件内容。保留原压缩文件,并且不生成解压缩后的文件。 语法 bzcat(参数)参数 .bz2压缩文件:指定要显示内容的.bz2压缩文…

使用requests库进行网络爬虫:IP请求错误的解决方法

目录 引言 一、了解requests库 二、遇到的问题 三、解决方法 1、随机化IP地址 2、减少请求频率 3、使用User Agent模拟浏览器行为 4、使用Cookies 四、注意事项 五、使用代理池 六、总结 引言 在利用Python的requests库进行网络爬虫操作时,我们有时会遇…

Hangfire.Pro 3.0 Crack

Hangfire.Pro 有限的存储支持 Hangfire Pro 是一组扩展包,允许使用批处理创建复杂的后台作业工作流程,并提供对超快速Redis作为作业存储的支持 请注意,仅在使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时才…

贝加莱MQTT功能

贝加莱实现MQTT Client端的功能库和例程 导入库和例程,AS Logical View中分别通过Add Object—Library,Add—Program插入MQTT库和例程。 将例程Sample放置于CPU循环周期中 定义证书存放路径,在AS Physical View 中,右击PLC—Con…

C++--STL总结

参考教程:黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 软件界一直希望建立一种可重复利用的东西,C的面向对象和泛型编程思想,目的就是复用性的提升。 大多情况下,数据结构和算法都未能有一套标准,…

开关电源测试之输出暂态响应测试标准及方法详解

暂态响应是指在接收到输入信号后,输出信号在短时间内产生的变化。开关电源输出暂态响应测试是为了检测输出负载快速变化时,输出电压跟随变动的稳定性。 开关电源输出暂态响应怎么测试? 测试目的:测试S.M.P.S.输出负载快速变化时&a…

python django 小程序点餐源码

开发工具: PyCharm mysql5.7,微信开发者工具 技术说明: python django html 微信小程序 代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。 功能介绍&#xff1a…

视百年眼科青少年近视防控中心正式启动,构建近视防控新格局

11月16日上午,广州视百年眼科青少年近视防控中心启动仪式在门诊顺利举行。视百年眼科董事长孙联合、技术院长李国保、视光中心负责人肖萧、视光主任刘得圳出席会议并对如何做好青少年近视防控工作作出了工作部署。 视百年眼科孙董事长在会上强调,青少年是…

什么是单域名SSL安全证书?

单域名证书是什么? 单域名证书是指只包含一个具体域名的SSL/TLS证书,它可以用于保护单个主机名的HTTPS通信。例如,如果您有一个网站http://www.example.com,则单域名证书将仅为该域名颁发。 这种证书在保护单个域的安全方面很有…

C++多态原理揭秘

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

天猫精灵/小爱同学+巴法云+Openwrt控制局电脑/群晖开关机

天猫精灵/小爱同学巴法云Openwrt控制局电脑/群晖开关机 事情的起因实战环境开始发车1.天猫精灵/小爱同学 连接 八法云 2.openwrt3.docker环节注意:sshpass 要先使用 ssh命令登陆一下你要唤醒或者远程关机的设备,不然可能因为一个登陆提示你是否登陆的yes/no导致程序没有反应,然…

任正非说:公司要逐步实行分灶吃饭,我们在管理上不能过于整齐划一,否则缺少战斗力。

你好!这是华研荟【任正非说】系列的第42篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 一、我们必须在混沌中寻找战略方向。规划就是要抓住机会点,委员会是火花荟萃的地方,它预研的方向是可做…
最新文章