iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >MySql(干货)
  • 130
分享到

MySql(干货)

mysqloracle数据库 2023-09-01 12:09:59 130人浏览 安东尼
摘要

        写这篇博客的目的不是为了将介绍原理,而是为了sql中的代码操作属实太多了,在这里进行一个汇总,方便查阅!!! Sql分类 分类全称说明 DDL Data Definintion Language数据定义语言,用来定义

        写这篇博客的目的不是为了将介绍原理,而是为了sql中的代码操作属实太多了,在这里进行一个汇总,方便查阅!!!

Sql分类
分类全称说明

DDL

Data Definintion Language数据定义语言,用来定义数据库对象
DMLData Manipulation Language数据库操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库的表的记录
DCLData Control Language数据库控制语言,用来创建数据库用户,控制数据库的访问权限

DDL:

数据库操作

1.查询所有数据库

SHOW DATABASES

2.查询当前数据

select database() 

3.创建数据库

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] #如果wincast存在的话则不用创建,不存在的话则直接创建create database if not extists wincast#创建一个wincast数据库并指定字符集create database wincast default charset utf8mb4;

 案例:

create database if not extists itcast;

4.删除数据库desc 表名 ;

DROP DATABASE [IF EXISTS] 数据库名

5.切换数据库

use 数据库名

表操作

1.查询当前数据库中的所有表

show tables;

2.查看指定表结构

desc 表名 ;

3.查询指定表的建表语句

show create table 表名 ;

4.创建表的结构

CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ],字段3 字段3类型 [COMMENT 字段3注释 ],......字段n 字段n类型 [COMMENT 字段n注释 ]) [ COMMENT 表注释 ]

 案例:

create table tb_user(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(1) comment '性别') comment '用户表';

5.添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

 案例:

#为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

6.修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

7.修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

 案例:

#将emp表的nickname字段修改为username,类型为varchar(30)ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

8.删除字段

ALTER TABLE 表名 DROP 字段名;

 案例:

#将emp表的字段username删除ALTER TABLE emp DROP username;

9.修改表名

ALTER TABLE 表名 RENAME TO 新表名;

 案例:

#将emp表的表名修改为 employeeALTER TABLE emp RENAME TO employee;

10.删除表

DROP TABLE [ IF EXISTS ] 表名;

 案例:

#如果tb_user表存在,则删除tb_user表DROP TABLE IF EXISTS tb_user;

11.删除指定表,并重新创建表

TRUNCATE TABLE 表名;

DML

添加数据

1.给指定字段添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

 案例:

#给employee表所有的字段添加数据 insert into employee(id,workno,name,gender,age,idcard,entrydate)values(1,'1','Itcast','男',10,'123456789012345678','2000-01-01');

2.给全全部字段添加数据

INSERT INTO 表名 VALUES (值1, 值2, ...);

 案例:

#插入数据到employee表insert into employee values(2,'2','张无忌','男',18,'123456789012345670','2005-01-01');

3.批量的添加数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;

案例:

#批量插入数据到employee表insert into employee values(3,'3','韦一笑','男',38,'123456789012345670','2005-01-01'),(4,'4','赵敏','女',18,'123456789012345670','2005-01-01');

 修改数据

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;

删除数据

DELETE FROM 表名 [ WHERE 条件 ] ;

DQL

基础语法

SELECT   字段列表FROM   表名列表WHERE  条件列表GROUP BY  分组字段列表HAVING  分组后条件列表ORDER BY  排序字段列表LIMIT  分页参数

基础查询

1.查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;

2.字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

条件查询

1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

2.条件

比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
<>或!=不等于
BETWEEN...AND...在某个范围之内(含最小、最大值)
IN(...)在in之后的列表中的值,多选一
LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意一个字符)
IS NULL是NULL
==等于
常用逻辑运算符
运算符功能
ADD 或&&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或!非,不是

聚合函数

语法:

SELECT 聚合函数(字段列表) FROM 表名 ;
常见的聚合函数
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

分组查询

语法

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];# 根据性别分组 , 统计男性员工 和 女性员工的数量select gender, count(*) from emp group by gender ;

排序查询

语法

#ASC:升序(默认值) DESC:降序SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ; 1#根据年龄对公司的员工进行升序select * from emp order by age asc;select * from emp order by age;

分页查询

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;# 查询第1页员工数据, 每页展示10条记录select * from emp limit 0,10;select * from emp limit 10;

执行顺序

 DCL

查询用户

select * from Mysql.user;

创建用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

 案例:

#创建用户itcast,只能够在当前主机localhost进行访问,密码123456create user 'itcast'@'localhost' identified by '123456';

修改用户密码

# 修改用户heima的访问密码为1234;ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_passWord BY '新密码' ;

 案例:

alter user 'heima'@'%' identified with mysqlnativepassword by '1234';

删除用户

DROP USER '用户名'@'主机名' ;

案例:

drop user 'itcast'@'localhost';

权限控制

权限说明
ALL、ALL PRIVLEGES所有权限
SELECT查询数据
INSERT插入数据
UPDATE修改数据
ALTER修改表
DROP删除数据库/表/视图
CREATE创建数据库/表
DELETE删除数据

1.查询权限

SHOW GRANTS FOR '用户名'@'主机名' ;

 案例:

#查询 'heima'@'%' 用户的权限show grants for 'heima'@'%';

2.授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

案例:

#授予 'heima'@'%' 用户itcast数据库所有表的所有操作权限grant all on itcast.* to 'heima'@'%';

3.撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

案例:

#撤销 'heima'@'%' 用户的itcast数据库的所有权限revoke all on itcast.* from 'heima'@'%';

函数

1.字符串函数

函数功能
CONCAT(S1,S2,...,Sn)字符串拼接,将S1,S2,...,Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
UPPER(str)将字符串str全部转换为大写
LPAD(str,n,pad)左填充,用字符串pad对str的右边进行填充,达到n个字符串长度
RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str,start,len)返回从字符串str从start位置起的len个长度的字符串

案例:

  • concat:字符串拼接
select concat('Hello' , ' MySQL');
  • lower:全部转小写
select lower('Hello');
  • upper:全部转大写
select upper('Hello');
  • lpad:左填充
select lpad('01', 5, '-');
  • rpad:右填充
select rpad('01', 5, '-');
  • trim:去除空格
select trim(' Hello MySQL ');
  • substring:截取子字符串
select substring('Hello MySQL',1,5);

2.数值函数

常见的数值函数
函数功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0-1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数
  • ceil:向上取整
select ceil(1.1);
  • floor:向下取整
select floor(1.9);
  • mod:取模
select mod(7,4);
  • rand:获得随机数
select rand();
  • round:四舍五入
select round(2.344,2);

3.日期函数

常见的日期函数
函数功能
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定 date 的年份
MONTH(date) 获取指定 date 的月份
DAY(date) 获取指定 date 的日期
DATE_ADD(date, INTERVAL expr type) 返回一个日期 / 时间值加上一个时间间隔 expr 后的时间值
DATEDIFF(date1,date2) 返回起始时间 date1 和 结束时间 date2 之间的天数
  • curdate :当前日期
select curdate();
  • curtime :当前时间
select curtime();
  • now :当前日期和时间
select now();
  • YEAR、MONTH、DAY:当前年、月、日
select YEAR(now());select MONTH(now());select DAY(now());
  • date_add:增加指定的时间间隔
select date_add(now(), INTERVAL 70 YEAR )
  • datediff:获取两个日期相差的天数
select datediff('2021-10-01', '2021-12-01');

流程函数

常见的流程函数
函数 功能
IF(value , t , f) 如果 value true ,则返回 t ,否则返回 f
IFNULL(value1 , value2) 如果 value1 不为空,返回 value1 ,否则 返回 value2
CASE WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END 如果 val1 true ,返回 res1 ... 则返回 default 默认值
CASE [ expr ] WHEN [ val1 ] THEN [res1] ... ELSE [ default ] END 如果 expr 的值等于 val1 ,返回 res1 ... 否则返回 default 默认值
  • if
select if(false, 'Ok', 'Error');
  • ifnull
select ifnull('Ok','Default');select ifnull('','Default');select ifnull(null,'Default');
  • case when then else end
#需求: 查询emp表的员工姓名和工作地址 (北京/上海-> 一线城市,其他-> 二线城市)selectname,( case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end ) as '工作地址' from emp;

约束

约束分类
约束描述关键字
非空约束限制该字段的所有数据都是唯一,不重复的NOT NULL
唯一约束 保证该字段的所有数据都是唯一、不重复的 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
默认约束 保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT
检查约束 (8.0.16 版本 之后 ) 保证字段值满足某一个条件 CHECK
外键约束 用来让两张表的数据之间建立连接,保证数据的一致 性和完整性 FOREIGN KEY

语法

1.添加外键

CREATE TABLE 表名(字段名 数据类型,...[CONSTRaiNT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名));
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)REFERENCES 主表 (主表列名) ;

案例:

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) referencesdept(id);

2.删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
#删除emp表的外键fk_emp_dept_id。alter table emp drop foreign key fk_emp_dept_id;

3.删除/更新行为

行为说明
NO ACTION 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/ 更新。 ( RESTRICT 一致 ) 默认行为
RESTRICT 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/ 更新。 ( NO ACTION 一致 ) 默认行为
CASCADE 当在父表中删除 / 更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/ 更新外键在子表中的记录。
SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null (这就要求该外键允许取 null )。
SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值 (Innodb 不支持 )

语法:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;
  • CASCADE
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) referencesdept(id) on update cascade on delete cascade ;
  • SET NULL
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) referencesdept(id) on update set null on delete set null ;

多表查询

内连接

1.隐式内连接

SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 ... ;

2.显示内连接

SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ... ;

外连接

1.左外连接

SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;

2.右外连接

SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ; 1

3.自连接

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ;

4.联合查询

SELECT 字段列表 FROM 表A ...UNION [ ALL ]SELECT 字段列表 FROM 表B ....;

案例:

#将薪资低于 5000 的员工 , 和 年龄大于 50 岁的员工全部查询出来select * from emp where salary < 5000union allselect * from emp where age > 50;

5.子查询

SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );

6.列子查询

操作符描述
IN 在指定的集合范围之内,多选一
NOT IN 不在指定的集合范围之内
ANY 子查询返回列表中,有任意一个满足即可
SOME ANY 等同,使用 SOME 的地方都可以使用 ANY
ALL 子查询返回列表的所有值都必须满足

存储引擎

1.建表时指定存储引擎

CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ] ,......字段n 字段n类型 [COMMENT 字段n注释 ]) ENGINE = INNODB [ COMMENT 表注释 ] ;

案例:

#创建表 my_myisam , 并指定MyISAM存储引擎create table my_myisam(id int,name varchar(10)) engine = MyISAM ;

索引

1.创建索引

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (index_col_name,... ) ;

2.查看索引

SHOW INDEX FROM table_name ;

3.删除索引

DROP INDEX index_name ON table_name ;

来源地址:https://blog.csdn.net/dfdbb6b/article/details/132248823

您可能感兴趣的文档:

--结束END--

本文标题: MySql(干货)

本文链接: https://www.lsjlt.com/news/388400.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySql(干货)
            写这篇博客的目的不是为了将介绍原理,而是为了Sql中的代码操作属实太多了,在这里进行一个汇总,方便查阅!!! Sql分类 分类全称说明 DDL Data Definintion Language数据定义语言,用来定义...
    99+
    2023-09-01
    mysql oracle 数据库
  • github水文代码干货
    github水文代码干货 1、宁波水文站爬虫 Web Spider(nodejs) https://github.com/zccz14/Web... 2、新安江水文模型(Java) https://github.com/wfxr/xaj-...
    99+
    2023-01-31
    干货 水文 代码
  • MySQL | JDBC连接数据库详细教程【全程干货】
    文章目录 一、什么是JDBC?二、JDBC工作原理三、使用JDBC连接MySQL数据库【✔】1、安装对应数据驱动包2、将jar包导入项目中3、编写代码连接数据库【⭐】1️⃣ 创建数据源2️⃣ 和数据库建立网络连接3️⃣ 构造SQL...
    99+
    2023-08-20
    数据库 mysql java
  • Python 网络爬虫干货总结
      爬取 对于爬取来说,我们需要学会使用不同的方法来应对不同情景下的数据抓取任务。 爬取的目标绝大多数情况下要么是网页,要么是 App,所以这里就分为这两个大类别来进行了介绍。 对于网页来说,我又将其划分为了两种类别,即服务端渲染和...
    99+
    2023-01-31
    干货 爬虫 网络
  • 关于PaaS的纯干货总结
    关于PaaS的纯干货总结什么是PaaS PaaS是面向应用的核心平台。 从功能定义和核心价值分为三个层次:   1)自动化获取资源进行部署;   2)提供标准化的编程框架和服务来帮助应用开发和运行实现...
    99+
    2023-06-03
  • SpringBoot常用注解(经典干货)
    目录一、什么是Spring Boot二、Spring常用注解三、Spring Boot常用注解四、选择器五、缓存六、定时器七、注入配置文件properties八、Jpa1、@Enti...
    99+
    2023-01-06
    Spring Boot常用注解 Spring Boot注解
  • 干货 | LVS虚拟服务器简介
    LVS即Linux Virtual Server,虚拟服务器是一个可高扩展且高可用的服务器,构建在真实服务器集群上。服务器群集的体系结构对最终用户完全透明,用户与群集系统进行交互,就好像它只是一个高性能的虚拟服务器一样。请参考下图:真实服务...
    99+
    2023-06-04
  • POI导出Excel (满满的干货啊)
    已经实现的POI导出Excel 步骤一:导入依赖 org.apache.poi poi 4.1.2 ...
    99+
    2023-09-02
    excel java 数据库
  • Vue.nextTick纯干货使用方法详解
    目录一、nextTick小测试二、nextTick源码实现1. 全局变量2. flushCallbacks3. nextTick的异步实现4. next...
    99+
    2024-04-02
  • PHP+iis部署最干货的步骤
    php >>>下载 官网下载 >>>部署  解压到文件夹d:\,然后找文件php.ini-production,开发者模式,修改文件为php.ini作为配置文件 ;date.timezone =   时间修改亚洲 date.timezo...
    99+
    2023-08-31
    php 服务器 开发语言
  • MySQL数据库查询性能优化的4个技巧干货
    目录前言SQL的执行频率慢查询日志show profiles详情分析explain执行计划1、ID参数2、select_type参数3、type参数前言 MySQL性能优化是一个老生...
    99+
    2022-11-13
    MySQL查询性能优化 MySQL数据库查询
  • SpringBoot最常用的50个注解(全是干货,干的要死!)
    SpringBoot最常用的50个注解 ​ SpringBoot提供了很多注解,可以帮助我们快速构建应用程序。以下是SpringBoot最常用的50个注解: (1)@SpringBootApplication 作用:这是一个组合注解,包括了...
    99+
    2023-08-16
    spring boot java spring
  • 干货丨 用 Python 进行股票分析
    人们很容易被丰富的数据和各种免费开源工具所吸引。在研究了quandl financial library和prophet modeling library之后,我打算试着探究简单的股票数据。我花了几天...
    99+
    2023-10-21
    python 开发语言 学习 爬虫 学习方法
  • 干货|安卓APP崩溃捕获方案——xCrash
    导读2019 年,爱奇艺在 GitHub 上开源了 xCrash。这是一个比较完整的安卓 APP 崩溃捕获 SDK,它能在 App 进程崩溃时,在你指定的目录中生成 tombstone 文件(格式与系统的 tombstone 文件类似)。它...
    99+
    2023-06-05
  • MyBatis和MyBatis-Plus常用注解(全是干货!)
    MyBatis和MyBatis-Plus常用注解 MyBatis MyBatis中涉及到的所有注解 (1)@Select 作用:标记查询语句。 @Select是MyBatis中的注解之一,用于标记查询语句。该注解可以在接口方法上使用,也可以...
    99+
    2023-08-16
    mybatis java mysql
  • 干货文:在 Mac 中卸载 Python 的方式
    Mac 原本有预装了 Python,直接可以用。你也可以自己从官网下载相应的版本进行安装。但如果说,你现在不想用了,想卸载它也是可以的,几种方式吧,一个个来看。 首先,是直接在「应用程序」直接找到它,...
    99+
    2023-09-06
    macos python django scrapy pip conda
  • 干货Python爬虫如何设置代理IP
    在Python爬虫中设置代理IP可以通过使用第三方库如requests或urllib库来实现。以下是一个使用requests库设置代...
    99+
    2023-09-21
    Python
  • web前端就业开发学习路线(干货)
    初级前端主要学习三个部分:HTML,CSS,JavaScript一、html + css部分:这部分特别简单,到网上搜资料,书籍视频非常多。css中盒子模型,流动,block,inline,层叠,样式优先级等这些自学起来也是非常容易。最后再...
    99+
    2023-06-03
  • 干货必看|Spring Boot整合MyBatis框架详解
    在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合Mybatis框架,请大家认真看哦。 一...
    99+
    2023-10-25
    mybatis 数据库 java
  • golangvalidator库参数校验实用技巧干货
    目录validator库参数校验若干实用技巧基本示例翻译校验错误提示信息自定义错误提示信息的字段名自定义结构体校验方法自定义字段校验方法自定义翻译方法validator库参数校验若干...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作