前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql基本命令

mysql基本命令

作者头像
你的明明呐丶
发布2022-06-27 11:46:33
1.5K0
发布2022-06-27 11:46:33
举报
文章被收录于专栏:用户4184852的专栏
代码语言:javascript
复制
-- 数据库(windows下不分大小写)
-- 登录:(-u名字 -p密码)
mysql -uroot -p

-- 退出:
exit;

-- 创建数据库:
create database 数据库名字;

-- 显示所有数据库:
show databases;

-- 删除数据库:
drop database 数据库名字;

-- 使用数据库:
use 数据库名;

-- 创建数据表:(除了varchar之外的约束可不写)
create table 表名(
	列名1 数据类型(约束),
	列名2 数据类型(约束),
	列名3 数据类型(约束)
);

-- 显示所有数据表:
show tables;

-- 查看表中结构:
desc 表名;

代码语言:javascript
复制
-- 向表中添加数据:(insert)
insert into 表名(列1,列2,列3) values (值1,值2,值3);

-- 格式2:
-- 当<所有值>都要写入时,可不用列名
insert into 表名 values (值1,值2,值3,值4);

-- 格式3:
-- 批量写入
insert into 表名 (列1,列2,列3...) values (值1,值2,值3...),(值1,值2,值3...),(值1,值2,值3...)...;

-- 自动增长:
primary key AUTO_INCREMENT

-- 设置编码格式:(中文乱码或无法添加中文)
set names 'gbk';

-- 删除数据表:
drop table 表名;

-- 在已有的表上,添加一个字段:
alter table 表名 add 列名 数据类型;

-- 修改某列长度:
alter table 表名 modify 列名 数据类型(约束长度);

-- 删除某一列:
alter TABLE 表名 drop 列名;

-- 查看表格的创建细节:
show create table 表名;

-- 修改表名:
rename table 旧表名 to 新表名;

-- 修改列信息:
alter table 表名 change 旧列名 新列名 数据类型(约束);
代码语言:javascript
复制
-- 查询指定列的数据:
select 列1,列2 from 表名;

-- 查询所有列:
select * from 表名;

-- 去重:(关键字:distinct)[去掉该列中的重复项]
select distinct 列名 from 表名;

-- 查询并临时修改列名:(关键字:as)
select 列名 as '临时列名' from 表名;

-- 查询时进行数据运算:(该列中的内容值全部加10)
select 列名+10 from 表名;

-- $条件查询:(关键字:where)<where后跟查询条件>
-- 1.查询指定列中的所有指定项:
select * from 表名 where 列名='要查询的内容';

-- 2.查询指定列中所有大于<规定值>(不包括规定值)的项:
select * from 表名 where 列名>规定值;

#条件的写法:
id = 6; 等于
id <> 6; 不等于
id <= 6; 小于等于
id in(1,3,4,5,6) 包含
id not in (1,2,3,4,5,6) 不包含
and 与/和
or 或
not 非

-- 3.查询指定列在指定区间内的值:(所有该列10~20之间的项<包含>)
-- 写法1:select * from 表名 where 列名>=10 and 列名<=20;
-- 使用(关键字:between)要求"<and前面的值必须要小于后面的值>"
-- 写法2:select * from 表名 where 列名 between 10 and 20;

-- 4.查询指定列中所有10,11,19的项:
select * from 表名 where 列名=10 or 列名=11 or 列名=19;
-- ↓
-- 优化,改造成in方式:(in为包含,not in为排除)
selcet * from 表名 where 列名 in (10,11,19);

-- $模糊查询(关键字:like) 配合通配符使用:
-- %:表示多个字符;
-- _:(下划线)表示一个字符;
-- 1.查询含有指定内容的单元数据:(显示出了该列中所有所有'指定字符'的数据)
select * from 表名 where 列名 like '%指定字符%';

-- 指定字符% :显示出该列中以指定字符开头的数据;
-- %指定字符 :显示出该列中以指定字符结尾的数据;

-- 2.查询指定长度的单元数据:(五个下滑线表示长度为5的单元数据)
select * from 表名 where 列名 like '_____';

-- 3.查询不为空的数据:
select * from 表名 where 列名  is not null;
-- 或
select * from 表名 where not (列名 is null);
-- ↓扩展:
select * from 表名 where not (列名1 is null and 列名2 is null);

-- 注:条件组装也就是用and,or来组装条件,条件组装是有优先级的,可以用小括号()来括起来.
代码语言:javascript
复制
-- $排序查询(关键字:order by)
-- 1.根局规定列的值升序排序查询;
-- ↓默认是升序(或者asc关键字)
select * from 表名 order by 列名;

-- 2.根局规定列的值降序排序查询;
-- ↓降序排序(desc)
select * from 表名 order by 列名 desc;

-- 结合排序查询与条件查询
-- 先过滤条件,再进行排序:
-- 查询列1中所有包含'张三'的字段信息,并根局列2中值的大小进行降序排序;
select * from 表名 where 列名1 like '%张三%' order by 列2 desc;
-- 注:尽量不要对中文进行排序,很迷~

-- 聚合函数:(对一列的值进行计算,返回单一的一个值!)
-- count :统计个数.(null 不计)
-- sum: 求和
-- max: 最大值
-- min: 最小值
-- avg: 平均值

-- ===count,求和,对指定列的[数据个数]求和 count(列名).就是看该列有多少条数据.
-- select count(*) from 表名;(查询该表中一共有多少条数据)
-- ↑其中*代表所有列

select count(*) as 'a' from 表名;
-- ↑返回的数据名'a'默认为函数名,在此处也就是count(*),可以进行修改↑;

-- ===sum,求和,对指定列的[数据值]求和 sum(列名),就是看该列中所有值相加的和.
select sum(列名) from 表名;
-- 注意:列的类型:汉字不能求和;若有汉字,按0计算,对不是数据类型的数据,计0运算.

-- 可以与条件查询结合↓  (查询列2中所有包含'张三'的字段,并求出其中所有列1的值的和).
select sum(列1) from 表名 where 列2 like '%张三%';

-- ===max/min,最大值/最小值
select max(列名) from 表名;(获取到该列最大值)

-- ===avg,计算指定列中所有数据的平均数
select avg(列名) from 表名;(获取到该列平均值)

-- 注意:空值在计算时直接忽略
-- 结:聚合函数的返回值,只有一个值.
--    对数据类型有要求

-- $分组查询(关键字:group by)
-- 跟随聚合函数使用:group by(被分组的列名);
-- select查询时,被分组的列要出现在select选择列后面;
-- ↓按照列2的相同内容对列1进行求和并显示
select sum(列1),列2 from 表名 group by 列2;

-- +:结合条件查询时,条件在前↓:
select sum(列1),列2 from 表名 where 列2 like '%张三%' group by 列2;
-- 按照列2中的'张三'内容对列1进行求和并显示;

-- +增加排序,排序要加在最后
select sum(列1),列2 from 表名 where 列2 like '%张三%' group by 列2 order by sum(列1) desc;
-- 按照列2中的'张三'内容对列1进行求和并按降序显示;

-- +可以用as临时命名一个函数[sum(列1)],但后面的函数就要相应做出改变;
select sum(列1) as 'a',列2 from 表名 where 列2 like '%张三%' group by 列2 order by a desc;
代码语言:javascript
复制
-- 修改指定列数据:
update 表名 set 列1=值1,列2=值2,...  where 条件;
-- 在原来的基础上添加前缀或后缀;
update 表名 set 列1=concat('qf',列1) where 条件;

-- 删除:
delete from 表名 where 条件;

-- 效率高,速度快,无法回滚数据.
truncate table 表名;
代码语言:javascript
复制
-- $ having
-- 作用类似于where条件;
-- having于where的区别:
-- having 是在分组后对数据进行过滤
-- where 是在分组前对数据进行过滤

-- 在之前的例子中:我们要对已经得到的数据再进行一个筛选:
-- 比如说在得到的数据中,我们只需要列1大于18的所有值,这是在代码后再加一个where是行不通的,在前一个where后加条件
-- 也不行!这时就要用到having;

select sum(列1),列2 from 表名 where 列2 like '%张三%' group by 列2 having sum(列1) > 18;
-- 按照列2中的'张三'内容对列1进行求和并按降序显示且只显示 sum(列1) 的值大于18的内容;

-- $分组查询:(关键词:limit x,y)
-- x:表示从第几行开始显示(不包括x行,x为0时,可省略不写)
-- y:表示一次显示及行(y为-1时,表示表末位)
select * from 表名 order by 列1 desc limit 2,5;

合并查询:(关键字:union)

1.(查询语句1) union (查询语句2)#:重复数据只显示一遍

作用:将两条查询语句返回的结果合并到一起

2.(查询语句1) union ALL (查询语句2)#:显示所有数据

要求:被合并的两个结果集,列数.类型必须相同

连接查询:(关键字:xxx join on)

1.左连接:left join 表名 on (表1列 = 表2列)

2.右连接:right join on

3.内连接:inner join on

select * from 表1 left join 表2 on (表1和表2共同的条件)

4.外连接:outer join on

连接不仅限于2张表,也可以是多张表

子查询:

一个语句包含另一个语句

where后

from后

子查询也不仅限于2条语句,也可以是多条sql语句

代码语言:javascript
复制
-- $日期函数:

-- 获取日期是本年的第几天, 值在1到366之间
SELECT DAYOFYEAR('1998-02-03');

-- 获取日期是本月的第几天, 值在1到31之间
SELECT DAYOFMONTH('1998-02-03');

-- 获取日期是本周的第几天, 值在1到7之间
SELECT DAYOFWEEK('1998-02-03');

-- 获取日期的星期索引
SELECT WEEKDAY('1999-03-16 13:23:00');

-- 获取日期的月份英文名
SELECT MONTHNAME('1998-02-09');

--  获取日期是星期几
SELECT DAYNAME('1987-09-07');

-- 获取日期是本年的哪一季度,取值1到4
SELECT QUARTER('1999-09-03');

-- 将日期时间转换成对应的字符串(大小写)
SELECT DATE_FORMAT(NOW(),'%Y%m%d');
SELECT DATE_FORMAT(NOW(),'%Y%m%d%H%I%S');


-- $字符串函数
-- LOWER(column|str):将字符串参数值转换为全小写字母后返回
SELECT LOWER('ZHANG you JUN');

-- UPPER(column|str):将字符串参数值转换为全大写字母后返回
SELECT UPPER('ZHANG you JUN');


-- CONCAT(column|str1, column|str2,...):将多个字符串参数首尾相连
-- 后返回(如果有任何参数为null,则函数返回null,数字将自动转化为字符串)
SELECT CONCAT('zhang',' you',' jun');


-- CONCAT_WS(separator,str1,str2,...):将多个字符串参数以给定的分隔符separator首尾相连后返回
-- 也就是函数圆括号里的第一个项目用来指定分隔符
-- 如果有任何参数为null,则函数不返回null,而是直接忽略它
SELECT CONCAT_WS(';','zhang','wang','李','赵');

-- SUBSTR(str,pos[,len]):从源字符串str中的指定位置pos开始取一个字串并返回
-- ①len指定子串的长度,如果省略则一直取到字符串的末尾;len为负值表示从源字符串的尾部开始取起
-- ②函数SUBSTR()是函数SUBSTRING()的同义词
SELECT SUBSTRING('hello world',5);
SELECT SUBSTR('hello world',5,3);
SELECT SUBSTR('hello world',-5);

-- LENGTH(str):返回字符串的存储长度
SELECT LENGTH('text'),LENGTH('你好');
-- 注意:编码方式不同字符串的存储长度就不一样(‘你好’:utf8是6,gbk是4)

-- CHAR_LENGTH(str):返回字符串中的字符个数
SELECT CHAR_LENGTH('text'),CHAR_LENGTH('你好');

-- INSTR(str, substr):从源字符串str中返回子串substr第一次出现的位置
SELECT INSTR('foobarbar','bar');

-- LPAD(str, len, padstr):在源字符串的左边填充给定的字符padstr到指定的长度len,返回填充后的字符串
SELECT LPAD('hi',5,'??');

-- RPAD(str, len, padstr):在源字符串的右边填充给定的字符padstr到指定的长度len,返回填充后的字符串
SELECT RPAD('hi',6,'??');

-- TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str):
-- 从源字符串str中去掉两端、前缀或后缀字符remstr并返回;
-- 如果不指定remstr,则去掉str两端的空格;
-- 不指定BOTH、LEADING、TRAILING ,则默认为 BOTH
SELECT TRIM('  bar  ');
SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');

-- 替换REPLACE(str, from_str, to_str):在源字符串str中查找所有的子串form_str(大小写敏感),
-- 找到后使用替代字符串to_str替换它。返回替换后的字符串
SELECT REPLACE('www.mysql.com','w','CC');

-- REPEAT(str, count):将字符串str重复count次后返回
SELECT REPEAT('MySQL',3);

-- REVERSE(str):将字符串str反转后返回
SELECT REVERSE('abcdef');


-- $数学函数:

-- ABS(X),绝对值函数,返回数字X的绝对值
SELECT ABS(2),ABS(-2.2),ABS(-22);

-- PI(),圆周率函数,返回圆周率
SELECT PI();

-- SQRT(X),平方根函数,返回数字X的平方根
SELECT SQRT(9),SQRT(40.3),SQRT(-3);

-- MOD(X,Y),求余函数,返回X % Y的值
SELECT MOD(92,3),MOD(40,32),MOD(9.9,3);

-- CEIL(X),CEILING(X),向上取整函数,获取比X大的最小整数
SELECT CEIL(3.3),CEILING(-3.3);

-- FLOOR(X),向下取整函数,获取比X小的最大整数
SELECT FLOOR(4.6),FLOOR(-4.6);

-- RAND([X]),随机数函数,在 0 - 1.0 产生一个随机浮点数,X值可选,同一X值产生的随机数是相同的
SELECT RAND(),RAND(),RAND(1),RAND(1),RAND(5);

-- ROUND(X,[Y]),四舍五入函数, 数字X四舍五入,保留Y位小数,Y值可选,不填写取整
SELECT ROUND(10.5),ROUND(3.4),ROUND(3.141592654,2);

-- TRUNCATE(X,Y),截取函数,截取数字X,保留Y位小数
SELECT TRUNCATE(3.141592654,2),TRUNCATE(-3.141592654,2);

-- ...等等
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 合并查询:(关键字:union)
  • 连接查询:(关键字:xxx join on)
  • 连接不仅限于2张表,也可以是多张表
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档