sql数据类型,约束以及单表查询

news2024/11/20 11:45:53

嘎嘎学撒

  • 数据类型
  • 约束条件
  • DML 数据操作语句
    • 一、插入数据INSERT
    • 二、更新数据UPDATE
    • 三、删除数据DELETE
    • 四、MySQL单表查询
    • 五、关键词

数据类型

常见的数据类型
数值类型:
整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT
整型可以指定是有符号的和无符号的,默认是有符号的
可以通过UNSIGNED来说明某个字段是无符号的。

浮点数类型 FLOAT DOUBLE

字符串类型:
CHAR系列 CHAR VARCHAR
BINARY系列 BINARY VARBINARY
枚举类型: ENUM
集合类型: SET

时间和日期类型:
DATE TIME DATETIME TIMESTAMP YEAR

基本上主要分为数值类型,浮点数类型,字符串类型和其他类型的
注意事项:

# 整数类型
int(5) # 这个的话,指定int显示5位,并不是说 int 只能插入5位 在我测试的时候,创建表字段的时候 int 制定了 3 位 ,但是查看表结构的时候,mysql8.0版本以上显示不了,5版本的可以显示 
# 上面这个6位以上的也可以添加,也不受影响

# 浮点型
float(5,3) # 这个的制定了精读,整数两位,小数三位,(5,3) 这个5表示一共有这么多位,3 表示小数有三位
# 浮点数和定点数都可以用类型名称后加(M,D)的方式来表示,(M,D)表示一共显示M位数字(整数位
+小数位),其中D位于小数点后面,M和D又称为精度和标度。
# 如上,添加一个 5.4567  在数据库中会显示 5.458  失去精度的时候四舍五入

# CHAR、VARCHAR
# 作用:用于存储用户的姓名、爱好、发布的文章等
# CHAR     列的长度固定为创建表时声明的长度: 0 ~ 255
# VARCHAR  列中的值为可变长字符串,长度: 0 ~ 65535
# 注:在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格
# 字符串类型
# ENUM类型即枚举类型、集合类型SET测试
# 字段的值只能在给定范围中选择
# 常见的是单选按钮和复选框
enum  # 单选	  只能在给定的范围内选一个值,如性别 sex 男male/女female
set  # 多选    在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

约束条件

约束条件						      说明
- NULL                   标识是否允许为空,默认为NULL。
- NOT NULL			         标识该字段不能为空,可以修改。
- UNIQUE KEY  (UK)		   标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
- DEFAULT				         为该字段设置默认值
- UNSIGNED               无符号,正数
- PRIMARY KEY (PK)		   标识该字段为该表的主键,可以唯一的标识记录,不可以为空
- AUTO_INCREMENT		     标识该字段的值自动增长(整数类型,而且为主键)   自增键,每张表只能一个字段为自增
- UNIQUE + NOT NULL          唯一,不能为空 
- FOREIGN KEY (FK)		   标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
- ZEROFULL           补全0 适合int制定显示位数的时候

DML 数据操作语句

在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据
的插入、DELETE实现数据的删除以及UPDATE实现数据的更新。
更新数据   insert
更新数据   update
删除数据   delete

一、插入数据INSERT

1. 插入完整数据(顺序插入)
	语法一:
	INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES (1,2,3…值n);

	语法二:
	INSERT INTO 表名 VALUES (1,2,3…值n);

2. 指定字段插入数据
	语法:
	INSERT INTO 表名(字段2,字段3) VALUES (2,3);

3. 插入多条记录
	语法:
	INSERT INTO 表名 VALUES
		(1,2,3…值n),
		(1,2,3…值n),
		(1,2,3…值n);
		
4. 插入查询结果
	语法:
	INSERT INTO1(字段1,字段2,字段3…字段n) 
					SELECT (字段1,字段2,字段3…字段n) FROM2
					WHERE;

二、更新数据UPDATE

语法:
	UPDATE 表名 SET 字段1=1,字段2=2  WHERE CONDITION;

三、删除数据DELETE

语法:
	DELETE FROM 表名 
		WHERE CONITION;
示例:
	DELETE FROM mysql.user 
		WHERE authentication_string=’’;

delete from 表名 WHERE 条件;

四、MySQL单表查询

SELECT   字段名称,字段名称2    from  表名   条件
# 避免重复DISTINCT
SELECT DISTINCT post  FROM employee5;	

# 定义显示格式
# CONCAT() 函数用于连接字符串
SELECT CONCAT(name, ' annual salary: ', salary*14)  AS Annual_salary FROM employee5;

五、关键词

# where
select * from 表名 where 条件
el:
select * from so where id = 1 
# 上面这个sql语句的意思是 查询 so表中 id =1 的全部信息
# 多条件查询使用 and 链接 el:
select * from so where id = 1  and sex = '男'
# 上面这个sql语句的意思是 查询 so表中 id =1 和 sex = ‘男’ 的全部信息

-----------------------------------------------------------------

# BETWEEN AND
select * from 表名 where 字段名 between x and y
el:
select * from so where id between 1 and 10
# 查询so表中 id范围在 1 到 10 之间的所有信息

-----------------------------------------------------------------

# IS NULL
select * from 表名 where 字段名 is null
select * from 表名 where 字段名 is not null
select * from 表名 where 字段名 = ''

el:
SELECT * FROM e WHERE name IS NULL;
# 上面 查询e表中name为空的所有信息
SELECT * FROM e WHERE name IS NOT NULL;
# 上面 查询e表中name为不为空的所有信息
SELECT * FROM e WHERE name='';
# 上面 查询e表中name为‘’(空字符串,并不是 null)的所有信息
NULL说明:
        1、等价于没有任何值、是未知数。
        2NULL0、空字符串、空格都不同,NULL没有分配存储空间。
        3、对空值做加、减、乘、除等运算操作,结果仍为空。
        4、比较时使用关键字用“is null”和“is not null”。
        5、排序时比其他数据都小,所以NULL值总是排在最前。

-----------------------------------------------------------------

# 关键字IN集合查询
SELECT name, salary FROM employee5 WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000;
# 上面这个等同于下面这个sql语句    in的意思是只要salary满足其中一个,则将符合的记录查询出来
SELECT name, salary FROM employee5 WHERE salary IN (4000,5000,6000,9000) ;
# 下面则是查询salary不等于 4000,5000,6000,9000的记录
SELECT name, salary FROM employee5 WHERE salary NOT IN (4000,5000,6000,9000) ;

-----------------------------------------------------------------

# 排序查询 order by
select * from 表名 order by 字段 asc(默认值,可不写)  # 默认是升序排序
select * from 表名 order by 字段 desc   # 降序排序
# 某表通过某个字段降序/升序进行排序查询

-----------------------------------------------------------------

# limit 限制查询结果的返回数量   也被称为分页查询
select * from 表名 limit n,m
el:
select * from a limit 3,3;
# 查询a表中从第四条数据开始的三条数据
limit 3,3 
# 第一个 3 偏移量  偏移量为0的时候是从第一条数据开始显示的
# 第二个3是显示几条数据

----------------------------------------------------------------

# 分组查询
#  GROUP BY和GROUP_CONCAT()函数一起使用
select group_concat(name), class_id from student group by class_id;
# 这个的话,你们自己试一试,很厉害的
select group_concat(字段1), 字段2 from student group by 字段2;
# 为 字段2 进行分组

# 练习的表  下面是sql语句
CREATE TABLE company.employee5(
     id int primary key AUTO_INCREMENT not null,
     name varchar(30) not null,
     sex enum('male','female') default 'male' not null,
     hire_date date not null,
     post varchar(50) not null,
     job_description varchar(100),
     salary double(15,2) not null,
     office int,
     dep_id int
     );

insert into company.employee5(name,sex,hire_date,post,job_description,salary,office,dep_id) values 
	('jack','male','20180202','instructor','teach',5000,501,100),
	('tom','male','20180203','instructor','teach',5500,501,100),
	('robin','male','20180202','instructor','teach',8000,501,100),
	('alice','female','20180202','instructor','teach',7200,501,100),
	('tianyun','male','20180202','hr','hrcc',600,502,101),
	('harry','male','20180202','hr',NULL,6000,502,101),
	('emma','female','20180206','sale','salecc',20000,503,102),
	('christine','female','20180205','sale','salecc',2200,503,102),
    ('zhuzhu','male','20180205','sale',NULL,2200,503,102),
    ('gougou','male','20180205','sale','',2200,503,102);
         
# 可以试试下面这个分组查询的sql语句
SELECT dep_id,GROUP_CONCAT(name) FROM employee5 GROUP BY dep_id;
SELECT dep_id,GROUP_CONCAT(name) as emp_members FROM employee5   GROUP BY dep_id;

---------------------------------------------------------------------

# 模糊查询(通配符)   
 #    %  所有字符
 SELECT * from employee5 WHERE salary like '%20%';

---------------------------------------------------------------------

# 正则查询    后面有一个简单的正则表达式的规则,可以了解了解
    SELECT * FROM employee5 WHERE salary regexp '72+';
    SELECT * FROM employee5 WHERE name REGEXP '^ali';
    SELECT * FROM employee5 WHERE name REGEXP 'yun$';
    SELECT * FROM employee5 WHERE name REGEXP 'm{2}';
    
---------------------------------------------------------------------

# 函数
    count()
    max()
    min()
    avg()
    database()
    user()
    now()
    sum()
    password()

正则规则
在这里插入图片描述

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

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

相关文章

如何快速做跨业务测试?

当业务任务多且人力资源不充足的情况下,不同业务的同学可能需要去不同的业务进行临时支援,可能在时间方面有长有短,但是如何迈出第一步是很多人需要关心的一件事。 本文以实际跨业务测试经验(订单业务测试人员如何测试售后业务&a…

【操作】国标GB28181视频监控EasyGBS平台更新设备信息时间间隔

国标GB28181协议视频平台EasyGBS是基于GB28181协议的视频监控云服务平台,可支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台…

[Python进阶] Pyinstaller打包程序时为程序添加图标

5.5 Pyinstaller打包程序时为程序添加图标 5.5.1 程序图标的好处 增强可识别性:图标是一种视觉语言,能够提高应用程序的可识别性,使其在众多应用程序中更容易被用户找到和识别。 帮助用户理解应用程序功能:图标可以快速传达应用…

硬件基本功--电阻/电容/电感/二极管

一、电阻 电阻的主要参数:阻值、精度、封装、功率、耐压 电阻在电路中的作用:分压、限流、采样、偏置等等 阻值:103 10*1000 10KΩ 电阻流过电流,就会有压降,从而产生功率损耗 电阻封装、功率、耐压的关系&#xff1…

青云1000----华为昇腾310 注意事项

青云1000帮助文档 只是一部分,后续遇到的问题会补充 注意事项!!!! type-c只用于数据传输不能供电DC供电和锂电池不能同时供电,会烧掉风扇正负级不要插反 账户密码 HwHiAiUser 密码Mind123 TypeC USB …

接口测试——接口协议抓包分析与mock_L2

目录: 抓包工具charles抓包工具fiddler抓包工具证书配置app抓包实战练习接口测试实战练习 1.抓包工具charles 工具介绍 支持 SSL 代理支持流量控制支持重发网络请求,方便后端调试支持修改网络请求参数支持网络请求的截获并动态修改可以自动将 json 或…

七、栈与队列(stack and queue)

文章目录 一、栈与队列基础二、例题(一)栈1.[232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/description/)(1)思路(2)代码(3)复杂度分析 2.[225. …

海大校园学习《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

海大校园学习《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

pytorch固定随机数中种子

1、添加到yolov7的utils/general.py文件最下面 import pkg_resources as pkg def check_version(current0.0.0, minimum0.0.0, nameversion , pinnedFalse, hardFalse, verboseFalse):# Check version vs. required versioncurrent, minimum (pkg.parse_version(x) for x in …

【数据结构--八大排序】之归并排序

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

中国社科院与美国杜兰大学完成了我的金融硕士梦

一个人从出生就被赋予着太多的期待,比如爸爸妈妈从小没有完成的梦想,哥哥姐姐失败的课程,为了实现这些期待,人们忙着奋斗、拼搏、追逐,马不停蹄去做有用的事,结交有用的人,不敢虚度半寸光阴&…

第1章 数据结构绪论

1.1 开场白 1.2 你数据结构怎么学的 1.3 数据结构起源 早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算…

crypto:丢失的MD5

题目 得到一个md5.py 运行一下,发现报错,修改一下 运行之后又报错 报错原因是算法之前编码 正确的代码为 import hashlib for i in range(32,127):for j in range(32,127):for k in range(32,127):mhashlib.md5()m.update((TASC chr(i) O3RJMV c…

Makerbase SimpleFOC ESP32 例程12 双霍尔电机位置控制

Makerbase SimpleFOC ESP32 例程12 双霍尔电机位置控制 第 1 部分 硬件介绍 1.1 硬件清单 序号品名数量1MKS ESP32 FOC V1.0 主板12LA034-040NN07A 霍尔电机23DC24V电源14USB 线1 硬件清单如下图所示: ESP32 FOC V1.0主板说明书等更多资料请加入企鹅&#xff…

1039 到底买不买

描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子&#xff1…

对比学习的锚网络和自动生成标签

文章目录 锚网络自动生成标签(词组) 锚网络 在对比学习(Contrastive Learning)中,“锚网络”(Anchor Network)通常是指一个用于生成数据样本的表示的网络。锚网络的主要作用是将输入数据样本转…

链表入门(单链表讲)

链表 1.链表1.1 链表概念及其结构1.2 链表的分类 2.单链表代码实现2.1 单链表的定义2.2 单链表的初始化2.3 单链表的新增结点2.4 单链表的打印2.4 单链表的插入2.4.1 头插2.4.2 尾插2.4.3 任意位置插入 2.5 单链表的删除2.5.1 头删2.5.2 尾删2.5.3 任意位置删除 2.6 单链表的查…

华为网络技术基础笔记

2023-2024 一、9/81.典型拓扑2.分层架构3.流量分析4.网线 二、9/15三、9/19 一、9/8 1.典型拓扑 Topolpgy 拓扑 结构 ①总线型 ②星型 网络 要 有 “ 冗余 ”性。 ③树型 ④环型网络(口字型网络) ⑤全互联(全网状) ⑥部分网…

代码随想录 Day7 字符串1 LeetCode T344反转字符串 T541 反转字符串II 151翻转字符串的单词

本文更详细解析来自于:代码随想录 (programmercarl.com) LeetCode T344 反转字符串 链接:344. 反转字符串 - 力扣(LeetCode) 题目思路 这题的思路很简单,只需要创建两个指针,一个指向首字母,一个指向末字母,两两进行交换即可,这里我们要说的就是交换,可…

一个比 ping 更强大、更牛逼的命令行工具

晚上好,我的网工朋友。 遇到网络故障的时候,你一般会最先使用哪条命令进行排障? 基本上大家第一个想到的都是Ping吧。 但除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等好用命令,你都用过吗&#xf…