MYSQL命令总结

news2024/11/22 17:32:22

一.库的操作

1.创建库

create database db1;//创建名为db1的数据库
create database db2 charset=utf8;//创建一个utf8字符集的db2数据库
create database db3 charset=utf8 collate utf8_general_ci;//创建一个使用utf字符集并带校对规则的db3数据库

2.字符集和校验规则

show charset;//查看数据库支持的字符集
show collation;//查看数据库支持的字符集校验规则

校验规则的影响:以utf8_general_ciutf8_bin为例
utf8_general_ci:区分大小写
utf8_bin:不区分大小写
区别体现在查询和排序上

3.操作数据库

show databases;//查看数据库
show create database 库名;//显示创建语句
alter database 库名 charset=字符集;//修改数据库字符集
drop database 库名;//删除数据库:级联删除,会删除数据库里面的表
# mysqldump -p3306 -u root -p 密码 -B 库名 > 路径 //备份数据库到文件
show processlist;//查看数据库连接情况

二.表的操作

1.创建表

create table user ( 
id int, name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值', 
birthday date comment '生日' 
) character set utf8 engine MyISAM;
//创建一个表users 

2.操作表

desc 表名;//查看表结构
select * form 表名;//查看表内容
insert into user values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');//向表user中插入两条记录
alter table user add assets varchar(100) comment '图片路径' after birthday;//添加一个字段,用于保存图片路径
alter table user modify name varchar(60);//修改name的长度为60
alter table user drop password;//删除password列:对应列数据清空
alter table user rename to employee;//修改表名为employee
alter table user change name xingming varchar(60);//将列name修改为姓名:新字段需要完整定义
drop table 表名;//删除表
select * from votes where 列=‘内容’;
select * from votes where hobby='登山';//查询某列中包只含‘ ’的内容
select * from votes where find_in_set('登山', hobby);//查询某列中包含‘ ’的内容

3.表的增删查改

Create(创建), Retrieve(读取),Update(更新),Delete(删除)

  • 插入数据
INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);//单行数据+全列插入
INSERT INTO students (id, sn, name) VALUES (102, 20001, '曹孟德'), (103, 20002, '孙仲谋');//多行数据+指定列插入
  • 替换数据
-- 主键 或者 唯一键 没有冲突,则直接插入; 
-- 主键 或者 唯一键 如果冲突,则删除后再插入
REPLACE INTO students (sn, name) VALUES (20001, '曹阿瞒');
-- 1 row affected: 表中没有冲突数据,数据被插入 
-- 2 row affected: 表中有冲突数据,删除后重新插入
  • 查询数据
SELECT * FROM 表名;//全列查询
SELECT 列名, 列名, 表名;//指定列查询
SELECT id, name, 10 FROM exam;//表达式不包含字段
SELECT id, name, english + 10 FROM exam;//表达式包含字段
SELECT id, name, chinese + math + english FROM exam;//表达式包含多个字段
SELECT id, name, chinese + math + english 总分 FROM exam;//指定别名
SELECT DISTINCT math FROM exam;//结果去重
SELECT name, english FROM exam WHERE english < 60;//where比较
SELECT name, chinese FROM exam WHERE chinese >= 80 AND chinese <= 90;//用and连接比较内容--【80,90】
SELECT name, chinese FROM exam WHERE chinese BETWEEN 80 AND 90;//between...and--【80,90】
SELECT name, math FROM exam WHERE math = 58 OR math = 59;//or或者
SELECT name, math FROM exam WHERE math IN (58, 59, 98, 99);//in包含
SELECT name FROM exam WHERE name LIKE '孙%';//% 匹配任意字符
SELECT name FROM exam WHERE name LIKE '孙_';//_ 匹配一个字符
SELECT name, chinese, english FROM exam WHERE chinese > english;//语文大于英语
  • 结果排序
SELECT name, math FROM exam ORDER BY math;//order by:默认升序  asc升序;desc:降序
SELECT name, math, english, chinese FROM exam ORDER BY math DESC, english, chinese;//依次按 数学降序,英语升序,语文升序的方式显示
  • 筛选分页
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;//-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;// -- 从 s 开始,筛选 n 条结果,建议使用 
 
  • 数据更新
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';//一次更新多行
  • 删除数据
DELETE FROM exam_result WHERE name = '孙悟空';
  • 聚合函数
SELECT COUNT(*) FROM students;//统计个数
SELECT SUM(math) FROM exam_result;//统计总和
SELECT AVG(chinese + math + english) 平均总分 FROM exam_result;//统计平均值
SELECT MAX(english) FROM exam_result;//返回最高分
SELECT MIN(math) FROM exam_result WHERE math > 70;//返回>70的最低分
select column1, column2, .. from table group by column;//在select中使用group by 子句可以对指定列进行分组查询

三.数据类型

1.字符串类型

tinyint:范围(-128~127float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节,MySQL在保存值时会进行四舍五入。如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
bit[(M)] : 位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

float表示的精度大约是7位。decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是65532。
当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节,如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。

2.日期和时间类型

date :日期 ‘yyyy-mm-dd’ ,占用三字节 datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’
表示范围从 1000 到 9999 ,占用八字节 timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss
格式和 datetime 完全一致,占用四字节

四.表的约束

null/not null,default, comment, zerofill,primary key, auto_increment,unique key 。

1.空属性

null(默认)
not null
create table myclass(
class_name varchar(20) not null,
class_room varchar(10) not null);//约束表内容不能为空,插入时没有数据会插入失败

2.默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择
性的使用默认值。

 default 默认值//数据在插入的时候不给该字段赋值,则使用默认值

注意:只有设置了default的列,才能在插入值的时候,对列进行省略 not
null和defalut一般不需要同时出现,因为default本身有默认值,不会为空

3.列描述

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了
解。
通过desc看不到注释信息,通过show可以看到

4.zerofill

显示出来的值如果小于括号内设定的宽度,则填充0,实际存储的值不变

`a` int(5) unsigned zerofill DEFAULT NULL, --具有了zerofill

在这里插入图片描述

5.主键

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键
所在的列通常是整数类型。

  • desc时key对应的列变为pri的为主键
  • 主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
  • 当表创建好以后但是没有主键的时候,可以再次追加主键
alter table 表名 add primary key(字段列表);
  • 删除主键
alter table 表名 drop primary key;
  • 复合主键

在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键, 可以使用复合主键。

mysql> create table tt14( 
id int unsigned, 
course char(10) comment '课程代码', 
score tinyint unsigned default 60 comment '成绩', 
primary key(id, course) 
);//id和course为复合主键 

6.自增长

auto_increment当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。

id int unsigned primary key auto_increment,//约束id自增长(不给值情况下)

7.唯一键

一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题。唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
区别:我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。

id char(10) unique comment '学号,不能重复,但可以为空',

8.外键

外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定
义外键后,要求外键列数据必须在主表的主键列存在或为null。

foreign key (字段名) references 主表()
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

在这里插入图片描述

五.MYSQL内置函数

1.日期函数

在这里插入图片描述

2.字符串函数

在这里插入图片描述

3.数学函数

在这里插入图片描述

4.扩展

  • select user();user() 查询当前用户
  • select md5('admin')md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
  • select database();database()显示当前正在使用的数据库
  • select ifnull('abc', '123');ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值

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

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

相关文章

[redis+springboot]缓存sql执行结果

场景: 访问controller层(其实是service),需要将其结果缓存到redis,下一次直接从缓存找值,从而减少sql操作,减轻数据库压力技术: redis,springboot,jpa,mysql1, 新建项目2, 导入依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…

懂了委托,才算真正入门C#

文章目录委托的概念多播委托拖动按钮前文提要&#xff1a;超快速成&#xff0c;零基础掌握C#开发中最重要的概念抽丝剥茧&#xff0c;C#面向对象快速上手Winform&#xff0c;最友好的桌面GUI框架 委托的概念 委托这个名字取的神乎其神的&#xff0c;但实质是函数式编程&#…

网络攻防技术--第五次作业

文章目录作业五一、 什么是恶意代码&#xff1f;恶意代码主要类型有哪些&#xff1f;二、 恶意代码的基本技术主要包括哪几种&#xff1f;三、 什么是特洛伊木马&#xff1f;有什么特点&#xff1f;四、 什么是计算机病毒&#xff1f;其有哪几个基本组成部分&#xff1f;五、 什…

项目管理工具能做什么 它给企业带来哪些作用

一个项目经理&#xff0c;如果要想管理好项目&#xff0c;那么一定要掌握项目管理的方法与工具。在项目管理过程中总会借助一些工具来掌控项目点点滴滴&#xff0c;这不仅可以提高团队的生产力和效率&#xff0c;还可以让项目组织在不同项目带来的影响变化中做好准备。 项目管…

每天一道大厂SQL题【Day03】订单量统计

每天一道大厂SQL题【Day03】订单量统计 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&#xff0c…

SAP 自定义SQL编辑器

导语&#xff1a;自定义SQL编辑器&#xff0c;可使用SAP ABAP的OPEN SQL语法进行编辑&#xff0c;快速出具简单报表&#xff0c;基本具备与SAP中DB02相似的功能。 此资源其中有两个版本&#xff0c;一个版本是网上的代码资料&#xff0c;另一个版本是本人优化过后的&#xff0…

Gerrit3.4.1安装使用

环境依赖jdk11 安装jdk11&#xff1a; 下载&#xff1a; wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz解压&#xff1a; tar zxvf openjdk-1128_linux-x64_bin.tar.gzsudo update-alternatives --install /usr/bin/java java /home/je…

Fiddler抓包工具配置+Jmeter基本使用

目录 一、Fiddler抓包工具的配置和使用 局域网络配置# Fiddler配置# Fiddler抓包实例# 二、Jmeter的基本使用 Jmeter的安装配置# 第一个Jmeter脚本# 一、Fiddler抓包工具的配置和使用 在编写网关自动化脚本之前&#xff0c;得先学会如何抓包&#xff0c;这里以Fiddler为…

Docker容器及安装 01

前言 1.1 从环境配置说起 环境配置是软件开发的一大难题。开发、测试及运维人员需要相同的代码运行环境&#xff0c;如此一来就需要多次搭建环境&#xff0c;想想就觉得麻烦&#xff0c;实际上&#xff0c;在不了解docker等容器技术以前&#xff0c;还真就是这么干的&#xff…

2023年FOF/MOM基金研究报告

第一章 概况 FOF 是 Fund of Funds 的简称&#xff0c;即“基金中的基金”&#xff0c;是一种专门投资于其他投资基金的基金。FOF 并不直接投资股票或债券&#xff0c;其投资范围主要限于其他基金。按照募集方式&#xff0c;FOF 分为公募 FOF 和私募 FOF。 公募 FOF 是指将80…

python小游戏——飞机大战代码开源

♥️作者&#xff1a;小刘在这里 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放&#xff0c;愿所有的美好&#…

明细打印重影方案

一、问题描述生产上出现明细查询打印业务&#xff0c;部分客户打印数据时出现数据重叠现象&#xff0c;不利于客户使用&#xff0c;影响客户体验。二、问题原因对方户名公司名称字段目前没有限制&#xff0c;按照现有的分页处理机制&#xff0c;如果一页纸出现多个公司名称较长…

python中值传递、引用传递、global关键字

结论1、函数中&#xff0c;数值、字符、元组的传递是值传递 b 5 print(id b ,id(b))def change(b):print(\n)#print(在函数change中 修改前 id b ,id(b))b 0print(在函数change中 修改后 id b ,id(b))def print_b():print(\n)print(在函数print b中 b , b)print(在函数pri…

【C++修炼之路】C++入门(下)

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录一、前言二、内联函数1、概念2、特性三、auto&#xff08;C 11)1、概念2、价值3、三个不能四、范围for循环(C11)1、基本使用2、使…

MySQL基础(3)—— MySQL数据类型

文章目录数值类型1、整数类型2、浮点数类型3、定点数类型日期和时间类型1、YEAR2、DATE、TIME、DATETIME3、TIMESTAMP字符串类型1、CHAR(M)2、VARCHAR(M)3、各种 TEXT 类型4、ENUM 类型和 SET 类型二进制类型1、BIT 类型2、BINARY(M) 与 VARBINARY(M)3、BLOB 类型MySQL说到底就…

移动出行2023:聊以新颜待今朝

兔年春节期间&#xff0c;城市再现浓浓烟火气。预订全满的年夜饭、排不到号的奶茶店以及火爆的电影票房等&#xff0c;证明着“吃、游、购、娱”等需求集中释放的“威力”。根据国家税务总局发布的最新数据&#xff0c;今年春节假期&#xff0c;全国消费相关行业销售收入与上年…

最长上升子序列问题(LIS问题)与最长不上升子序列问题的四种方法(c++ 模板代码)

文章目录动态规划树状数组线段树二分查找最大上升子序列问题也叫做LIS问题&#xff0c;与最大公共子序列LCS问题是一类经典问题&#xff0c;在本章我们将总结一下求解LIS最大上升子序列的几种方法&#xff0c;同时也会给出对应的最大不上升子序列的求解方法。 关于LCS问题&…

【表格单元格可编辑】vue-elementul简单实现table表格点击单元格可编辑,点击单元格变成输入框修改数据

前言 这是最近遇到的功能&#xff0c;经常会需要一个表格可以编辑数据 类似于excel那种点击一下单元格就可以编辑数据&#xff0c;修改后鼠标移动出去 光标消失就会保存数据给后台 这里记录一下实现方法&#xff0c;其实也比较简单 就是通过角标来判断显示隐藏的 效果图 代码…

[Android开发基础4] 点击事件的响应与处理

文章目录 方法一&#xff1a;控件的onClick属性 方法二&#xff1a;内部类 方法一&#xff1a;控件的onClick属性 利用控件自带的onClick属性&#xff0c;指定事件处理函数名称即可实现控件点击事件的处理 这里有个小技巧就是当设置完控件的onClick属性后&#xff0c;它会报没…

XXE漏洞常见利用点总结

目录 知识点小结 常用payload 本地文件读取 SSRF 引入外部实体 dtd 信息探测 XXE漏洞攻击 案例演示 案例一&#xff08;有回显&#xff09; 案例二&#xff08;无回显读取本地敏感文件(Blind OOB XXE)&#xff09; XXE 防御 使用语言中推荐的禁用外部实体的方法 知…