MySQL数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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() 字符串转时间


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 SQL 关系型数据库
初步认识Mysql数据库
初步认识Mysql数据库
31 1
|
SQL 存储 关系型数据库
MYSQL数据库2
MYSQL数据库2
141 0
|
SQL 关系型数据库 MySQL
MYSQL数据库7
MYSQL数据库7
49 0
|
SQL 存储 缓存
MySQL数据库使用的10个小技巧
当涉及到使用MySQL数据库,掌握一些小技巧能够提高工作效率,优化查询性能,以及避免一些常见的错误。以下是10个关于MySQL使用的小技巧
|
SQL 存储 监控
简单说一下使用SQL数据库的心得
简单说一下使用SQL数据库的心得
106 1
|
SQL 存储 关系型数据库
MYSQL数据库1
MYSQL数据库1
68 0
|
SQL 关系型数据库 MySQL
MySQL数据库(二)上
MySQL数据库(二)上
|
SQL 关系型数据库 MySQL
存储模块之mysql数据库
存储模块之mysql数据库
81 0
|
SQL 关系型数据库 MySQL
MySQL数据库(初步了解)
MySQL数据库(初步了解)
112 0
|
存储 SQL 缓存
Mysql数据库知识总结
如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。
96 0