MySQL数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL数据库

数据库中5种约束:

prmary key 主键约束、简称pk,可以是一个字段也可以是多个字段(联合主键)

作用:用于区分同一张表中不同的记录,作为唯一标识符,主键自带唯一约束

AUTO_INCREMEN自增T:非空NOT NULL 唯一约束UNIQUE

CREATE TABLE DD(

ID INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(200) NOT NULL UNIQUE,

)


foreign key外键约束、简称fk

作用:建立表与表中的联系,目的是控制存储在外键表中的数据,使两张表形成关联,外键只能引用外表中列的值(字段)两张表存在关联关系,如果一张表的某一个字段引向另一张表的主键,称为外键 被指向的表(主表) 负责指向的表(子表)


添加数据得到时候先添加主表,删除数据的时候先删除从表

not null非空约束(列级)、

unique唯一约束(不能重名) ‘name’ VARCHAR(200) NOT NULL UNIQUE 就是name不能重名

check检查约束:‘id’ INT NOT NULL CHECK(id>0) id要大于0


CRUD

create:添加

Retrieve:查询

update:修改

delete:删除


修改表结构 alter、table:

增加字段:ALTER TABLE 表名 ADD(字段列表 数据类型 ) ALTER TABLE dd ADD(name VALUES(200))

修改字段:ALTER TABLE 表名 MODIFY 字段 ALTER TABLE dd MODIFY name VARCHAR(200)数据类型

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

显示表结构:DESC 表名 DESC dd

清除表结构:DROP TABLE IF EXISTS 表名 DROP TABLE IF EXISTS dd

判断是否存在:IF NOT EXISTS 既如果不存在 IF EXISTS 如果存在

复制表结构:CREATE TABLE 需要添加进去的表 AS SELECT * FROM 被复制的表 WHERE 1=0(如果需要指定的字段就把换了)

复制表结构和数据:CREATE TABLE 需要添加的表 AS SELECT * FROM 被复制的表 (如果需要指定的字段就把换了)

只复制指定的字段:RELEASE TABLE 需要被添加的表 AS SELECT 字段名1,字段名2 FROM 被复制的表名 WHERE 1=0

只复制指定的字段及数据:RELEASE TABLE 需要被添加的表 AS SELECT 字段1, 字段2 FROM 被复制的表

只添加第一行表数据:RELEASE TABLE 被添加的表 AS SELECT 字段1,字段2 FROM 被复制的表 WHERE sid=1

只添加非第一行的:RELEASE TABLE 被添加的表 AS SELECT 字段,字段2 FROM 被复制的表 WHERE sid != 1


DDL:数据库定义语言:数据库对象的、创建、删除、修改、表、视图

创建数据库语法:CREATE DATABASE 数据库名

删除数据库:DROP DATABASE 数据库名

创建表: CREATE TABLE 表名2(

字段 INT(9) KEY

);

删除表:DROP TABLE 表名


DML数据操作语句:

添加insert:INSERT INTO 表名(字段名1,字段名2) VALUES(数据1,数据2) INSERT INTO onejo(id,name) VALUES(3,‘乔鲁诺’) *列名可以省略,因为默认包含所有列表、主键设置自动递增可以用null来代替自动递增的字段

多行插入:INSERT INTO 表名 VALUES(1,‘sd’),(2,‘fd’) 也可添加‘’字符串,表示有数据但是没内容

将一个表特定的数据复制到另一张表(id为1和2的所有数据) INSERT INTO twojo SELECT * FROM onejo WHERE id IN (1,2)

删除delete:DROP TABLE 表名 删除表与数据(当不需要该表的时候才使用这个) DELETE FROM 表名 这个只删除数据不删除表(可以删除指定的东西加上WHERE) TRUNCATE TABLE 表名 这个语法删除表中的所有数据,会把表中的递增给清0

更新(修改)update:UPDATE 表名 SET name=‘约瑟夫’ WHERE id = 1 注意:不加WHERE就是修改表中所有数据


DQL数据库查询语句:

查询年龄为10岁的生日:SELECT * FROM jojo WHERE YEAR(NOW())-YEAR(brith) IN 10

把一个人的工资下降1000:UPDATE jojo SET privr = price-1000 WHERE name = ‘指定被降薪的人’

表与表之间的关系:一对一、一对多、多对多

语法总顺序:Select 列名 from 表名 where 条件 group by分组 Having条件(分组之后的) oeder by列 筛选[asc/desc] Limit0,10

简单查询:没有条件 select * from 表名 代表查询所有、想要查询指定的列就把换成列名 AS显示列别名

运算符:null参与的运算,结果都为null

ifnull(expr1,expr2):如果第一个参数为空那么返回第二个参数,反之就返回第一个SELECT id,name+IFNULL(name,0) FROM onejo

decimal(8,2) 一共八位,小数点两位

算数运算符:+ - * /

关系运算符:= != < > <= >=

逻辑运算符:nut(!) and(&&) or(||)

位:& |

区间:Between…and… not Between…and…

模糊查询:not like like %匹配0或多个 _匹配一个

在范围内:in() not in()

一般作用在where后面当条件

多条件查询

查询关键字:like、or、in、not in、between and、binary、isnull、is not null、exists、not exists

like(not like) 查询数据中包含那些东西的:SELECT * FROM 表名 WHERE 名字列 LIKE ‘%王%’ 查询名字列中带有王字的

%a:以a结尾、a%以a开头、%a%包含a的、_a结尾是a、a_开头是a、a:a在中间

or(或者):SELECT * FROM onejo WHERE id=1 OR id=2 查询id是1或者是2的人的所有信息

in(not in):可以用来批量删除、修改、查询:SELECT * FROM onejo WHERE id IN (1,2,3) 查询id为123的人的信息

exists(not exists)检查行的存在:SELECT * FROM 表 WHERE EXISTS(返回结果) 为null就不返回结果

bettween and(列 >= 值 and 列 <=值):SELECT * FROM onejo WHERE id BETWEEN 1 AND 5 id在1和5之间的所有信息

not between and:不在这个区间的

binary区分大小写:SELECT * FROM 表名 WHERE BINARY name LIKE ‘i%’

is null(is not null)为空:SELECT * FROM onejo WHERE id IS NULL

all 所有 any 任意一个

排序查询order by:

中文排序conver:SELECT * FROM onejo WHERE ORDER BY CONVERT(name USING gbk) DESC

按照某个列进行排序:升序:asc 降序:desc

语法:SELECT * FROM 表名 WHERE 条件 ORDER BY 列名 升序或降序

MySQL中的常用函数:

数值:abs(n):返回指定数字的绝对值 PI:圆周率 sqrt(n)返回指定数字的平方分 ceil()向上取整 floor()向下取整

round(n,[d])四舍五入 truncate(n,d)截取函数 mod(n,n1)取余(不是除法,是取余)

字符:concat():字符串拼接SELECT CONCAT(‘sds’,‘sd’,‘sd’) length():返回字符串长度 一个汉字三个字节

substring(str,poy,len)原始字符串,从哪开始截取,截取长度 SELECT SUBSTRING(‘dfsfsdfsdfs’,5,2) = substr(str,poi,len)

char_length() 返回长度 一个汉字一个字节 instr(str,n)查找该字符串是否包含n char()将指定的ascii码转成字符

ascii()将字符转换为ascii码 replace(‘sss’,s,z)将所有的s换成z trim()去除两端指定的字符包含空格

ltrim()去除左边的空格 rtrim()去除右边的空格 left(str,n) 返回字符串左边指定个数的字符 right(str,n)返回右边指定

LPAD(str,len,padStr) 在指定字符的左边填充指定字符 (len是填充之后的长度) RPAD(str,len,padStr)填充右边

FIND_IN_SET(str,strlist)str要查询的字符串,strlist字段名 多个的话用逗号隔开 查询字段strlist包含str的结果

截取字符串:MID() SUBSTR() FEFT() RIGHT() 上面有记录

insert(str,poi,len,newStr) 指定位置插入字符串 或是删除 str指定字符串poi被替换的位置 new新的字符串 删除的话直接放 ’ ’

显示姓李的员工:SELECT * FROM onejo WHERE name LIKE ‘李%’

SELECT * FROM onejo WHERE SUBSTR(name,1,1) = ‘李’

SELECT * FROM onejo WHERE INSERT(name,‘李’) = 1

显示正好有两个字的员工信息:SELECT * FROM onejo WHERE CHAR_LENGTH(name) = 2

SELECT * FROM onejo WHERE name LIKE ‘__’

date_format()日期转成字符串 str-to-date() 字符串转时间


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
8月前
|
人工智能 IDE API
白板秒变IDE,草图直接生成可运行代码!Pad.ws:白板+代码编辑器深度结合,创意到实现无缝衔接
Pad.ws是一款创新的在线开发环境,将交互式白板与完整IDE工具深度结合,支持多人实时协作和多种编程语言,无需安装即可通过浏览器访问。
367 1
白板秒变IDE,草图直接生成可运行代码!Pad.ws:白板+代码编辑器深度结合,创意到实现无缝衔接
|
2月前
|
数据采集 供应链 程序员
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
本文详解京东店铺全量商品接口(jd.seller.ware.list.get)实战经验,涵盖权限申请、分页避坑、SKU关联、数据校验等核心难点,附Python代码与反限流策略,助你高效稳定获取完整商品数据,新手可少走两年弯路。
|
消息中间件 存储 网络协议
我们一起来学RabbitMQ 五:RabbitMQ 应知应会的面试题
我们一起来学RabbitMQ 五:RabbitMQ 应知应会的面试题
186 0
|
7月前
|
安全 网络协议 搜索推荐
远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线
本文对ToDesk、向日葵和网易UU三款主流远程控制软件进行了安全性评测。远程控制技术虽带来便利,但也存在安全隐患。文章从设备授权管理、远程连接与数据传输、隐私安全机制及主动防诈保护四个方面展开分析。ToDesk在二次验证、金融窗口保护等方面表现突出;向日葵基础安全功能完善但缺乏创新;网易UU侧重基础功能,安全机制尚待完善。最终通过星级表对比,ToDesk综合表现最佳,向日葵次之,网易UU适合低风险场景。未来远控软件需向体系化、智能化方向发展以应对不断演变的威胁。
|
存储 数据挖掘 语音技术
让你的Notebook飞起来!开发体验再上新台阶
魔搭社区ModelScope最近针对大家积极反馈的Notebook功能进行了多方面的体验升级!这次的升级加入了许多令人兴奋的新特性,在很大程度上提升了Notebook的开发效率和体验。一起来看看这些新功能吧!
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow VS PyTorch哪个更强?
TensorFlow 和 PyTorch 都是流行的深度学习框架,它们有一些共同点,例如都支持多种编程语言和硬件平台,也都提供了丰富的工具和库来支持深度学习模型的构建、训练和部署。以下是它们的一些区别和优缺点: 区别: 1. 编程风格:TensorFlow 使用的是静态图模型,需要先定义整个计算图,然后再进行计算。PyTorch 使用的是动态图模型,可以像普通 Python 代码一样进行定义、调试和修改。 2. 计算效率:由于 TensorFlow 的计算图是静态的,可以对其进行优化和分布式计算,因此在大规模数据和模型上进行训练时,TensorFlow 的效率更高。而 PyTorch 在小规模
833 0
|
开发工具 Windows
Electron V8排查问题之构建 Electron 源码时遇到 dugite 下载失败如何解决
Electron V8排查问题之构建 Electron 源码时遇到 dugite 下载失败如何解决
185 0
|
缓存 负载均衡 应用服务中间件
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
nginx(NGINX)详细下载安装及使用教程(非常适合入门)
|
自然语言处理 Java 物联网
干货!MFTCoder论文多任务微调技术详解
代码大模型(Code LLMs)已经成为一个专门的研究领域,通过使用代码相关数据对预训练模型进行微调来提升模型的编码能力。以往的微调方法通常针对特定的下游任务或场景进行定制,意味着每个任务需要单独进行微调,需要大量的训练资源,并且由于多个模型并存而难于维护和部署。此外,这些方法未能利用不同代码任务之间的内在联系。
842 0
【qt】标准项模型2
【qt】标准项模型
115 0