MySQL学习(数据库操作,约束)

数据库知识点:

数据库的创建,删除,表的创建,删除,以及约束
1.为什么学习数据库:

数据的保存,读取,完整性,安全性。

数据库结构化,共享性,独立性,安全性

2。什么是数据库(Database 简称DB):长期存在计算机内,有组织,可共享的大量数据的集合数据“仓库”。

作用:存放,管理数据

分类:关系型数据库,NoSQL数据库

3.MYSQL数据库的特点:

开源免费,小巧,功能齐全,可在Windows和Linux系统上运行,操作方便

4.数据库的结构:

数据库(Database):以文件形式存放在磁盘,

数据表:一组数据记录组成

字段:也称域,表中的每一列称为一个字段

记录:表中的每一行称为一个记录,它由若干个字段组成,实体

索引:索引实际上是一种特殊类型的表,其中含有关键字段的值和指向实际记录位置的指针,可提高访问数据库的效率

SQL语句:结构化查询语句命令。

*(必备)5.SQL语句分类:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序涉及语言,用于存取数据以及查询,更新和管理关系数据库系统
名词解释命令
DDL(数据定义语言)定义和管理数据对象,如数据库,数据表等create,drop,alter
DML(数据操作语言)用于操作数据库对象中所包含的数据insert,update,delete
DQL(数据查询语言)用于查询数据库数据select
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改grant,commit,roolback
DDL语句操作数据库:
#注释
-- 注释
/*
多行注释
*/
​
-- 1.sql不区分大小写
-- 2._(下划线)进行名字的分割,不适用我们的驼峰命名法
-- 3. ;语句sql结尾处写一个; 表示结束
-- 4.一般关键词建议用大写
-- 5.所有名称不允许用中文
#库
-- 查看所有的库
show DATABASES;
​
-- 创建数据库
-- create DATABASE 库名
create DATABASE xiaozhao2;
​
-- 删除库(危险操作)
DROP DATABASE xiaozhao2
​
-- 使用库/切换库
-- use 库名;
use xiaozhao2;
​
#表
-- 查看该库中所有的表
show tables;
DDL语句创建数据库表:
#表
-- 查看该库中所有的表
show tables;
​
-- 创建表
-- create TABLE 表名(
--  字段名 类型 属性,
--  字段名 类型 属性,
--  ...
--  字段名 类型  属性
-- );
​
create table student(stu_name VARCHAR(10),stu_age TINYINT,stu_birthday datetime,stu_id char(18),    stu_score DECIMAL(4,1)
);
​
-- 查看表中的字段
-- 方式一
-- desc 表名
desc student;
​
-- 方式二:
show create table student;
-- `反引号:  作用是取消关键性
--  DEFAULT NULL  ;表示该字段的值可以为空
--  
--  ENGINE=INNODB:非常重要  存储(把数据存储到磁盘) 引擎(存储的规则)
​
-- 查看当前数据库支持的存储引擎
show ENGINES;
此处注意:反引号 ` :用于区别MYSQL保留字与普通字符而引入的
数据库表的字段类型:(以下为常用)
字符串类型:
类型说明取值范围存储需求
char(M)固定长字符串,检索快但费空间,0<=M<=255M字符char[(M)]
varchar[(M)]可变字符串 0<=M<=65535变长度varchar[(M)]
tinytext微型文本串16777215长度+3个字节tinytext
text文本串(4个G左右大小)4294967295长度+4个字节text

char和varchar比较:

类型特点空间上时间上适用场景
char(M)固定长度浪费存储空间效率高存储不大,速度要求高
varchar(M)可变长度节省存储空间效率低非char的情况
数值类型:
类型说明取值范围存储需求
tinyint非常小的数据有符值: -2^7~2^7-1,无符号值:0-128-11字节
int标准整数有符值: -2^31~2^31-1,无符号值:0~2^31-14字节
bigint较大的整数有符值: -2^63~2^63-1,无符号值:0~2^64-18字节
Decimal(钱)【desiml】字符串形式的浮点数decimal(m,d)m个字节
日期和时间类型:

类型说明取值范围存储需求
dateTimeYY-MM-DD hh:mm:ss1000-01-01 00:00:00至9999-12-31 23:59:59datetime
注意:NULL在数据库中是一种类型:理解为没有值或未知值,不要用null进行算术运算,结果仍未null,MySQL中,0或NULL都意味着为假,1为真

数据库的存储引擎:show engines
对比项MyISAMInnoDB
外键不支持支持
事务不支持支持
行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发操作行锁,操作时治所铸某一行,不对其它行有影响,适合高并发操作
缓存只缓存索引,不缓存真是数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有据欸党性的影响
默认安装YY
默认使用NY
关注点性能:节省资源,消耗少,简单业务事务:并发写,事务,更大资源
修改和删除数据库表:
-- 表结构修改
-- alter table 表名  关键词  数据
-- 关键词 rename as add drop modify change-- 1.修改表名
-- alter table 旧表名 rename as 新表名;
alter table student rename as xuesheng;-- 2.添加字段   ****四颗星
-- 字符串 'xxx'  "xxx"
-- alter table 表名 add 新字段名 类型 属性
-- comment 属性:表示备注或说明
alter TABLE xuesheng add stu_qq VARCHAR(20) COMMENT "这是学生的qq号";-- 删除字段(慎用)
-- ALTER table 表名 drop 删除字段名
alter TABLE xuesheng drop stu_age;-- 修改字段
-- 覆盖式修改
-- 1.一定的默认值
-- 2.如果已经存在具体数据  --数据是可以做隐式转换
-- 方式一 MODIFY   只能修改  数据类型  和  属性
-- alter TABLE 表名 MODIFY 字段名 要修改的类型 要修改的属性
alter TABLE xuesheng MODIFY  stu_name VARCHAR(100);-- 方式二:change :可以修改数据类型 属性  字段名
-- alter table 表名 CHANGE 旧字段名 新字段名 要修改类型  要修改属性;
alter table xuesheng change stu_qq qq VARCHAR(20) comment "这是qq号";-- 删除表
-- drop table 表名;
drop TABLE xuesheng;
数据库设计的三大范式:
第一范式:确保每列保持原子性

1.每一列属性都是不可再分的属性值,确保每一列的原子性

2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据

第二范式:确保表中的每列都和主键相关

1.第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式

2.第二范式要求数据库表中的每个实例或行必须可以被唯一的区分,未实现区分通常需要为表加上一个列,以存储各个实例的唯一标识,这个唯一属性列被称为主键

第三范式:确保每列都和主键列直接相关,而不是间接相关

数据不能存在传递,即每个属性都跟主键有直接关系而不是间接关系

总结:三大范式只是一般设计数据库的基本理念,可以建立冗余较小,结构合理的数据库,如果有特殊情况,当然要特殊对待,数据设计最重要的是看需求跟性能,

需求>性能>表结构,所以不能一味的去追求范式建立数据库

表约束:

#约束
​
-- 非空约束
create table tb1(username VARCHAR(10),userage int
);
​
create table tb2(username VARCHAR(10) not NULL ,-- 非空约束userage int 
);
​
create table tb3(username VARCHAR(10) not NULL default '巴嘎',-- 非空约束userage int 
);
​
-- 唯一约束
-- 是可以为null,并且可以有多个null,
-- 因为null是一个类型,没有值
​
-- 行级约束
create table tb4(username VARCHAR(10) UNIQUE, -- 唯一约束,行级唯一约束userage int UNIQUE  -- 每个字段都是各自的唯一约束
);
​
-- 表级约束,
create table tb5(username VARCHAR(10),userage int,UNIQUE(username,userage)  -- 表级约束,联合唯一约束,可约束多个
);              --  字段是有关联的,只有当约束的条件完全一样,才会起约束作用
​
-- CONSTRAINT :给约束起名字
create table tb6(username VARCHAR(10),userage  int,CONSTRAINT name_age_unique UNIQUE(username,userage)
);
​
-- 主键约束
-- 每张表必须有且只有一个表
-- 主键的值是唯一的
-- 主键是不能为null的,
create table tb7(username VARCHAR(10) PRIMARY KEY,userage  int --  PRIMARY KEY:错误,因为一张表主键是唯一的。
);
create table tb8(username VARCHAR(10),userage  int,PRIMARY key(username,userage) -- 联合主键,联合约束
);                                                      -- 多个字段的值,只有完全相同时,才会触发约束
​
-- 一般主键的建立方式
-- int bitint  自增:auto_increment,从主键最大的值开始自增
create table tb9(tid int PRIMARY key auto_increment,username VARCHAR(10),userage int
);
​
-- 外键约束
-- 外键的值是可以重复的
-- 外键的值可以为null
-- 外键必须要写  父表中有的数据
-- 父表中的关联字段必须是一个具有唯一性的数据
-- 父表的字段名和从表的字段名不一定要相同,但是数据量类型必须一致
-- 一个表中可以有多个外键,也可以有多个外键约束,但只能有一个主键
-- 使用外键关系,而不建立外键约束
create table a(aid int PRIMARY KEY auto_increment,aname VARCHAR(10)
);
​
create table b(bid int PRIMARY key auto_increment,bname VARCHAR(10),aid int,FOREIGN key(aid) REFERENCES a(aid)
);

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

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

相关文章

Docker NameSpace隔离

1、dd命令&#xff1a;dd 可从标准输入或文件中读取数据&#xff0c;根据指定的格式来转换数据&#xff0c;再输出到文件、设 备或标准输出 功能&#xff1a;用于读取、转换并输出数据 语法&#xff1a;dd OPTION 参数 1、 if文件名&#xff1a;输入文件名&#xff0c;默认为…

【C++】C++的类型的转换

目录 C语言中的类型转换 C中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast C语言中的类型转换 C语言中又两种类型转换&#xff1a;&#xff08;强制&#xff09;显示类型转换和隐式类型转换。 &#xff08;强制&#xff09;显示类型…

Linux系统服务——【web,http协议,apache服务和nginx服务】(sixteen day)

一、web基础以及http协议 1、web基本概念和常识 前端开发一般用uniapp. 1、Web:为用户提供的一种在互联网上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 2、Web 服务为用户提供各种互联网服务&#xff0c;这些服务包括信息浏览服务&#xf…

mdk输出行号、文件名、函数名

mdk输出行号、文件名、函数名 printf("File:%s\n" , __FILE__); printf("Fun :%s\n" , __func__); printf("Line:%d\n" , __LINE__); 特此记录 anlog 2024年7月29日

深入源码:解析SpotBugs (3) Detector

文章目录 OpcodeStackDetector常用套路调用栈visit code类检测方法检测代码行检测 前面的博客也提到过&#xff0c;Spotbugs 里面 Detector2 与 Detector&#xff0c;FindBugs2 与 FindBugs&#xff0c;GUI2与GUI&#xff0c;可以视为 Spotbugs 与 FindBugs 新老技术的碰撞&…

Python将多个可迭代对象(如列表、元组、集合等)连接成一个单一的迭代器

Python将多个可迭代对象(如列表、元组、集合等)连接成一个单一的迭代器 itertools.chain 是 Python 标准库中 itertools 模块提供的一个函数,用于将多个可迭代对象(如列表、元组、集合等)连接成一个单一的迭代器。它允许你在循环中一次性遍历多个序列,而不需要先将它们合…

STM32单片机C语言:继电器控制220v灯泡亮灭

本文旨在详细阐述如何利用STM32单片机结合继电器模块&#xff0c;实现对220V灯泡亮灭的远程控制。我们将深入探讨继电器的工作原理&#xff0c;构建相应的硬件电路&#xff0c;并提供具体的程序实现步骤&#xff0c;在智能家居与自动化控制领域的应用的比较多。 一、继电器原理…

接口测试支持IDEA插件一键同步API、新增思维导图快速评审测试用例,MeterSphere开源持续测试工具v3.1.0版本发布

2024年7月29日&#xff0c;MeterSphere开源持续测试工具正式发布v3.1.0版本。 在这一版本中&#xff0c;接口测试方面&#xff0c;支持通过IDEA插件一键同步API至MeterSphere&#xff1b;测试管理方面&#xff0c;“测试用例”模块新增通过思维导图模式快捷评审测试用例。在“…

扫码登录方案

以哔哩哔哩扫码登录为例 二维码解码后内容为&#xff1a;https://passport.bilibili.com/h5-app/passport/login/scan?navhide1&qrcode_keye60869ce7f5235c7123175a7effc6f90&frommain-fe-header 扫码登陆&#xff0c;利用已登录设备授权未登录设备登录的方式 扫码…

使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 HelloApplication.java&#xff1a;package com.example.dr295cmonth7;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; i…

【论文精读】 | 基于图表示的视频抑郁症识别的两阶段时间建模框架

文章目录 0、Description1、Introduction2、Related work2.1 Relationship between depression and facial behaviours2.2 Video-based automatic depression analysis2.3 Facial graph representation 3、The proposed two-stage approach3.1 Short-term depressive behaviour…

请你谈谈:vue的渲染机制(render)- 2举例说明问题

如何在 Vue 的 render 函数中使用 createElement 方法来创建虚拟节点&#xff08;VNode&#xff09;。这里是一个稍微整理后的示例&#xff0c;它直接对应于你提供的注释和代码片段&#xff0c;但作为一个完整的 render 函数的一部分&#xff0c;可能位于一个 Vue 组件的 scrip…

智能教室监控系统:使用YOLO和深度学习进行人员检测

基于深度学习的教室人员检测系统&#xff08;UI界面YOLOv8/v7/v6/v5代码训练数据集&#xff09; 1. 引言 在学校管理中&#xff0c;教室内的人员检测和管理是保证教学质量和安全的重要环节。传统的人工检测方法效率低下且容易出错。随着深度学习技术的发展&#xff0c;基于计…

javascript(一)

一、基本语法 1.位置 (1)JavaScript脚本必须位于<script>与</script>之间 (2)<script>标签可以位于<body>或者<head>部分中 2.输出语句 (1)window.alter() 弹出警告框 (2)document.write() 可以将内容在网页中打印出来&#xff0c;同时也…

二维01背包 背包滚动数组 分割等和子集 DAY22

11.背包理论基础 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 背包问题有多种背包方式&#xff0c;常见的有&#xff1a;01背包、完全…

进程间通信方式--管道

每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间是每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核。 管道 管道的linux命令&#xff1a;ps auxf | grep mysql 上面命令行里面的竖线就是一个管道&#xff0c;它的功…

Laravel模型工厂:高效构建测试数据的秘诀

Laravel模型工厂&#xff1a;高效构建测试数据的秘诀 引言 在软件开发过程中&#xff0c;测试是确保代码质量和功能正确性的关键环节。Laravel框架提供了一套强大的工具来支持测试&#xff0c;其中模型工厂&#xff08;Model Factories&#xff09;是构建测试数据的利器。模型…

新手vue学习问题汇总(自用)(长期更新)

1.export default export default 是 ES6 模块语法&#xff0c;用于导出模块的默认成员。在 Vue.js 中&#xff0c;通常用来导出一个组件对象&#xff0c;使其可以在其他文件中被导入并使用。 2.props props 是组件接收外部数据的方式。父组件可以通过向子组件传递 props 来…

紫杉醇生物合成机制研究进展-文献精读35

紫杉醇生物合成机制研究进展 摘要 紫杉醇是目前已发现的最具抗癌活性的天然广谱抗癌药物之一&#xff0c;其生产方式主要依赖于从珍稀植物红豆杉中进行分离提取以及化学半合成&#xff0c;因其含量稀少&#xff0c;生产能力受到严重的限制。随着红豆杉基因组的全解析和合成生…

如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问

目录 ⛳️推荐 前言 1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 2. Windows安装VNC远程树莓派 3. 使用VNC Viewer公网远程访问树莓派 3.1 安装Cpolar步骤 3.2 配置固定的公网地址 3.3 VNC远程连接测试 4. 固定远程连接公网地址 4.1 固定TCP地址测试 ⛳️推荐…