初学MySQl简单sql语句(1)

news2024/9/23 23:29:13

目录

SQL语句介绍:

DDL创建数据库:

char和varchar比较

数值类型

数据库存储引擎

数据库存储引擎——InnoDB

数据库存储引擎——MyISAM

数据库存储引擎-MyISAM 和InnoDB区别

修改和删除数据库表

数据库设计三大范式

一、什么是范式

二、约束作用

三、三范式

约束?

作用?

约束种类?

非空约束(not null)

唯一性约束(unique)

主键约束(primary key)PK

外键约束(foreign key)FK

约束的添加:

添加非空约束

添加唯一约束

添加主键约束

添加外键约束

约束的删除:

删除not null约束

删除unique约束

删除primary key约束

删除foreign key约束


SQL语句介绍:

SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

名词

解释

命令

DDL(数据定义语言)

定义和管理数据对象,如数据库,数据表等

CREATE、DROP、ALTER

DML(数据操作语言)

用于操作数据库对象中所包含的数据

INSERT、UPDATE、DELETE

DQL(数据查询语言)

用于查询数据库数据

SELECT

DCL(数据控制语言)

用来管理数据库的语言,包括管理权

限及数据更改

GRANT、COMMIT、ROLLBACK

DDL创建数据库:

语法:

CREATE TABLE[IF NOT EXISTS] `表名`(

`字段名1` 字段类型[属性][索引][注释],

`字段名2` 字段类型[属性][索引][注释],

......

`字段名n` 字段类型[属性][索引][注释],

)[表类型][表字符集]

其中‘[]’包含的内容可以省略 

类型

说明

取值范围

存储需求

char[(M)]

固定长字符串,检索快但费空

间, 0 <= M <= 255

M字符

char[(M)]

varchar[(M)]

可变字符串 0 <= M <= 65535

变长度

varchar[(M)]

tinytext

微型文本串

16777215长度+3个字节

tinytext

text

文本串(4个G左右大小)

4294967295长度+4个字节

text

char和varchar比较

数值类型

类型

说明

取值范围

存储需求

tinyint【taɪni】

非常小的数据

有符值:-2 ^7 ~ 2^7-1,无符号值:

0 ~ 28-1

1字节

smallint

较小的数据

有符值:-2 15 ~ 215 -1 ,无符号值: 0 ~ 216 -1

2字节

mediumint

【miːdiəm】

中等大小的数据

有符值:-2 23 ~ 223 -1 ,无符号值: 0 ~ 224 -1

 3字节

int

标准整数

有符值:-2^31 ~ 2^31-1,无符号值:0 ~ 2^32-1

4字节

bigint

较大的整数

有符值:-2^63 ~2^63-1,无符号值:0 ~2^64-1

8字节

float

单精度浮点数

±1.1754351e -38

4字节

double

双精度浮点数

+-2.2250738585072014e -308

8字节

Decimal(钱) 

【desɪml】

字符串形式的浮点数

decimal(m, d)

m个字节

数据库存储引擎

查看当前数据库支持的存储引擎:show engines;

数据库存储引擎——InnoDB

MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。

InnoDB是MysQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。

除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。

除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

数据文件结构:

表名.frm存储表结构(MySQL8.0时,合并在表名.ibd中)。

表名.ibd存储数据和索引

InnoDB是为处理巨大数据量的最大性能设计。

在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除了。比如: .frm,.par , .trn ,.isl, .db.opt等都在MySQL8.0中不存在了。

对比MylISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。

MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响。

数据库存储引擎——MyISAM

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。

5.5之前默认的存储引擎

优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用

针对数据统计有额外的常数存储。故而count(*)的查询效率很高

数据文件结构:

表名.frm存储表结构。

表名.MYD存储数据(MYData)。

表名.MYI存储索引 (MYIndex)

应用场景:只读应用或者以读为主的业务

数据库存储引擎-MyISAM 和InnoDB区别

对比项

MyISAM

InnoDB

外键

不支持

支持

事务

不支持

支持

行表锁

表锁,即使操作一条记录也会锁住整 个表,不适合高并发操作

行锁,操作时只锁某一行,不对其它行有影响,适合高并发操作

缓存

只缓存索引,不缓存真实数据

不仅缓存索引还要缓存真实数据,对内存 要求较高,而且内存大小对性能有决定性的影响

默认安装

Y

Y

默认使用

N

Y

关注点

性能:节省资源、消耗少、简单业务

事务:并发写,事务、更大资源

修改和删除数据库表

修改表名:AITER TABLE 旧表名 RENAME AS 新表名

修改字段:ALTER TABLE 表名 MODIFY 字段名 列类型[属性] ALTER TABLE 表名 CHANGE 旧段名 列类型[属性]

删除字段:ALTER TABLE 表名 DROP 字段名

添加字段:ALTER TABLE 表名 ADD 字段名 列类型[属性]

删除表:DROP TABLE [IF EXISTS] 表名

数据库设计三大范式
一、什么是范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就叫做范式。

二、约束作用

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。

三、三范式

第一范式:确保每列保持原子性

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

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

第一范式(1NF)确保每列保持原子性

第二范式(2NF)属性完全依赖于主键

第三范式(3NF)属性不依赖于其他非主属性 属性直接依赖于主键

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

约束?

实际上就是表中数据的限制条件

作用?

表在设计时加入约束就是为了保证表中的记录完整和有效

约束种类?
非空约束(not null)

用not null约束的字段不能为null值,必须给定具体的数据

create table test1(

name varchar(20) not null,  

age int

);

Insert into test1(age) values(16) //这里只给age字段名存值,并没有给不

//为空的name存值,mysql会报错

唯一性约束(unique)

unique约束的字段,具有唯一性,不可重复,但可以为null

     表级约束:

  1. 在建表时,单独用unique(字段)来设置字段的约束
  2. 使用表级约束,给多个字段联合约束
  3. 表级约束可以给约束起名字

create table test1(

id int(10),

name varchar(20) not null,  

email varchar(128),

unique(name,email)

);

主键约束(primary key)PK

主键(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值

复合主键(表级定义)

create table test1(

id int(10),

name varchar(20) not null,  

email varchar(128),

primary key(id,name)

);

外键约束(foreign key)FK

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键

A为基本表或父标,主表,B为信息表,子表,副表

创建外键:

foreign key(表的字段名) references 父表表名(父表的字段名)

按外键约束的字段数量分类

单一外键:给一个字段添加外键约束

复合外键:给多个字段联合添加一个外键约束

注意:

一张表可以有多个外键字段(与主键不同)

外键值可以为null

外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束

有了外键引用之后,表分为父表和子表

班级表:父表

学生表:子表

创建先创建父表

删除先删除子表数据

插入先插入父表数据

检查约束(目前MySQL不支持,Oracle支持)

约束的添加:

添加非空约束

alter table 表名 modify test_student char(10) not null;

添加唯一约束

alter table 表名 add unique(表字段名,字段,字段,字段);

添加主键约束

alter table 表名 add primary key(表的字段名,字段,字段);

添加外键约束

alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);

约束的删除:

删除not null约束

alter table 表名 modify 列名 类型;

删除unique约束

alter table 表名 drop index 唯一约束名;

删除primary key约束

alter table 表名 drop primary key;

删除foreign key约束

alter table 表名 drop foreign key 外键名;

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

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

相关文章

如何批量重命名文件名?批量快速自定义文件名称怎么操作?

如何批量重命名文件名&#xff1f;批量快速自定义文件名称怎么操作&#xff1f;在高效率的信息化时代&#xff0c;呆板的工作方式已经不能满足我们的时效性&#xff0c;很多场景都需要一个高效率的方法来提升我们的工作效率&#xff0c;来完成任务的进度&#xff01; 如果用手…

redis的持久化机制以及集群模式

1.redis的持久化机制 内存数据库具有高速读写的优势&#xff0c;但由于数据存储在内存中&#xff0c;一旦服务器停止或崩溃&#xff0c;所有数据将会丢失。持久化机制的引入旨在将内存中的数据持久化到磁盘上&#xff0c;从而在服务器重启后能够恢复数据&#xff0c;提供更好的…

Python异常处理机制、调试模式

一、Bug的由来 1、Bug的由来 世界上第一部万用计算机的进化版-马克2号(Mark II) 2、Debug 二、Bug的分类 和 不同异常类型的处理方式 1、粗心导致的语法错误 SyntaxError &#xff08;1&#xff09; # age input(请输入你的年龄) # if age > 18: # print(成年人..…

深入浅出mediasoup—通信框架

libuv 是一个跨平台的异步事件驱动库&#xff0c;用于构建高性能和可扩展的网络应用程序。mediasoup 基于 libuv 构建了包括管道、信号和 socket 在内的一整套通信框架&#xff0c;具有单线程、事件驱动和异步的典型特征&#xff0c;是构建高性能 WebRTC 流媒体服务器的重要基础…

华为AR6300S路由器开启SSH远程登录

登录华为路由器&#xff1a; 使用控制台线连接到路由器的控制台端口或者通过Telnet或Web界面远程登录到设备。进入系统视图&#xff1a; 输入system-view&#xff08;或者简写为sys&#xff09;命令进入系统视图模式&#xff0c;这是配置全局参数的地方。生成RSA密钥对&#x…

dockerfile部署wordpress

1.将容器直接提交成镜像 [rootlocalhost ~]# docker commit 8ecc7f6b9c12 nginx:1.1 sha256:9a2bb94ba6d8d952527df616febf3fbc8f842b3b9e28b7011b50c743cd7b233b [rootlocalhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx …

昇思25天学习打卡营第22天 | DCGAN生成漫画头像

昇思25天学习打卡营第22天 | DCGAN生成漫画头像 文章目录 昇思25天学习打卡营第22天 | DCGAN生成漫画头像DCGAN模型数据集数据下载和超参数创建数据集数据集可视化 搭建网络生成器判别器损失函数和优化器 模型训练总结打卡 DCGAN模型 深度卷积对抗生成网络&#xff08;Depp Co…

【区块链+绿色低碳】巴中市生态价值核算创新应用 | FISCO BCOS应用案例

生态产品总值&#xff08;GEP&#xff09;&#xff0c;指一定区域生态系统为人类福祉和经济社会可持续发展提供的产品与服务价值总和&#xff0c;包 括供给产品价值、调节服务价值和文化服务价值。当前&#xff0c;推动生态产品价值有效转化存在“难度量、难抵押、难交易、 难变…

nodejs启动项目报错 Error: listen EACCES: permission denied 0.0.0.0:5000

nodejs启动项目报错 Error: listen EACCES: permission denied 0.0.0.0:5000&#xff0c;截图如下&#xff1a; 解决方法 在管理员权限下打开 CMD&#xff08;命令行&#xff09;并运行&#xff1a; net stop winnatnet start winnat 执行完成后在此通过nodejs启动项目即可…

【SpringCloud】 微服务分布式环境下的事务问题,seata大合集

目录 微服务分布式环境下的事务问题 分布式事务 本地事务 BASE理论与强弱一致性 BASE理论 强弱一致性 常见分布式事务解决方案 - 2PC 常见分布式事务解决方案 - TCC 常见分布式事务解决方案 - 最大努力通知 常见分布式事务解决方案 - 最终一致性 Seata介绍与术语 Seata…

UE4-字体导入

一.字体导入 方法一&#xff1a; 然后通过导入将自己想要的字体导入到项目中&#xff0c;也可以直接将我们放在桌面的字体直接拖入到我们的内容浏览器中。 但是要注意想要发售游戏的话不可以这样导入微软的字体&#xff0c;因为Windows自带基本都有版权&#xff0c;所以最…

windows10 安装CUDA教程

如何在windows10系统上安装CUDA? 1、查看电脑的NVIDIA版本 nvidia-smi 2、官网下载所需CUDA版本 官网地址:https://developer.nvidia.com/cuda-toolkit-archive 我们所安装的CUDA版本需要小于等于本机电脑的NVIDIA版本。推荐使用迅雷下载,速度会更快哦。 3、安装步骤

【C++高阶】深度剖析:从零开始模拟实现 unordered 的奥秘

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;哈希底层 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4d2;1. 改造 HashTable…

C++学习笔记04-补充知识点(问题-解答自查版)

前言 以下问题以Q&A形式记录&#xff0c;基本上都是笔者在初学一轮后&#xff0c;掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系&#xff0c;也适合做查漏补缺和复盘。 本文对读者可以用作自查&#xff0c;答案在后面&#xff0…

go-kratos 学习笔记(1) 安装

简介&#xff1a; Kratos 一套轻量级 Go 微服务框架&#xff0c;包含大量微服务相关框架及工具。 使用步骤&#xff1a; 安装cli工具 go install github.com/go-kratos/kratos/cmd/kratos/v2latest 创建项目 通过 kratos 命令创建项目模板 # 国内拉取失败可使用gitee源 krat…

C:一些题目

1.分数求和 计算1/1-1/21/3-1/41/5 …… 1/99 - 1/100 的值 #include <stdio.h>int main(){double sum 0.0; // 使用 double 类型来存储结果&#xff0c;以处理可能的小数部分int sign 1; // 符号标志&#xff0c;初始为 1 表示正数for (int i 1; i < 100; i)…

PGSQL学习-基础表结构

1 访问数据库 创建好数据库后&#xff0c;你可以有三种方式访问数据库 运行PostgreSQL的交互式终端程序&#xff0c;它被称为psql&#xff0c; 它允许你交互地输入、编辑和执行SQL命令。 使用一种已有的图形化前端工具&#xff0c;比如pgAdmin或者带ODBC或JDBC支持的办公套件…

Centos7_Minimal安装Cannot find a valid baseurl for repo: base/7/x86_6

问题 运行yum报此问题 就是没网 解决方法 修改网络信息配置文件&#xff0c;打开配置文件&#xff0c;输入命令&#xff1a; vi /etc/sysconfig/network-scripts/ifcfg-网卡名字把ONBOOTno&#xff0c;改为ONBOOTyes 重启网卡 /etc/init.d/network restart 网路通了

opencv 按键开启连续截图,并加载提示图片

背景图小图 键盘监听使用的是pynput 库 保存图片时使用了年月日时分秒命名 原图&#xff1a; from pynput import keyboard import cv2 import time# 键盘监听 def on_press(key):global jieglobal guanif key.char a:jie Trueelif key.char d:jie Falseelif key.char…

【深度学习】LLaMA-Factory 大模型微调工具, 大模型GLM-4-9B Chat ,微调与部署 (2)

资料&#xff1a; https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md https://www.53ai.com/news/qianyanjishu/2015.html 代码拉取&#xff1a; git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factorybuild镜像和执行镜像&#xff1a; …