MySQL 基础常用命令总结
作者:zhanglei 发布时间:2024-01-22 16:35:40
目录
MySQL 基础常用命令
1. SQL语句
2. 建表
3.字段属性
4.修改表:alter table
5. 增删改查:字符串全部使用''包起来
5.1 增
5.2 删
5.3 改
5.4 查
6. 子句
7.limit分页
8.去重
9.聚合函数
10.拼接
11.日期函数
12. 数组计算
13.排序
14. group by 分组
MySQL 基础常用命令
注意:MySQL在centos中安装的是5.7版本的,编辑MySQL时会有个报错,需要执行:
set@@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
1. SQL语句
每个命令执行结束加分号结束
查询所有数据库:show databases;
切换数据库:use 库命名;
创建数据库:create database [IF NOT EXISTS] 库名;
删除数据库:drop database [IF EXISTS] 库名;
查询数据库创建:show 建库语句;
指定数据库采用的字符集:CHARACTER SET
修改数据库的编码集:alter database 数据库名 CHARACTER SET 编码集;
注意:不要修改mysql服务器的编码集,表的编码集默认和库一致
2. 建表
格式:
create table [if not exists] 表名(
字段1 数据类型 字段属性,
字段2 数据类型 字段属性,...
字段N 数据类型 字段属性
)engine=引擎 default charset=编码集;
查看当前数据库:select database();
查看建表语句:show create table 表名;
查看表结构:desc 表名;
删除:drop table [if exists] 表名;
3.字段属性
not null:没给值数据为默认值(varchar默认值为空
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
PRIMARY KEY关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔
ENGINE 设置存储引擎,CHARSET 设置编码
default null:没给值数据就是null
default 值:设置字段的默认值
注意:主键不重复的列
这里我们建立一个student表:
create table if not EXISTS student (
id int auto_increment,
`name` VARCHAR(32),
age int,
sex char(1),
clazz VARCHAR(32)) charset utf8;
insert into student values (1001,'zs',18,'男','一班');
insert into student values (1002,'ls',19,'女','二班');
insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
insert into student(`name`,age,sex,clazz) values ('ld',12,'女','二班');
4.修改表:alter table
修改表名:alter(rename) table 旧表名 to 新表名;
rename table student1 TO `student`;
添加字段:alter table 表名 add 字段 字段数据类型 属性;
alter table student add job varchar(32) default '没有工作' ;
insert into student (job) VALUES('a');
insert into student (job) VALUES('b');
insert into student (job) VALUES('c');
insert into student (job) VALUES('a');
insert into student (job) VALUES('b');
修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性;
alter table student change clazz clazz varchar(255);
alter table student change age score double;
修改字段:alter table 表名 modify 字段 数据类型 属性;
alter table student MODIFY varchar(356); #这里不能比之前的空间小
注意:
change:修改所有(字段名,数据类型,属性)
modify:修改一部分(数据类型,属性)
修改数据类型时,varchar->int元数据会变为0
5. 增删改查:字符串全部使用''包起来
5.1 增
格式:
insert into 表名(字段) values(值),(值)...(值);
insert into student values (1001,'zs',18,'男','一班');
insert into student values (1002,'ls',19,'女','二班');
insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
10 insert into student(`name`,age,sex,clazz) values ('ld',12,'女','二班');
5.2 删
-- 删除delete from 表名 where 子句;
delete from student where job='c';
5.3 改
-- 改update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;
update student set job='b'where name ='ls';
5.4 查
-- 查select 字段 from 表名 where 子句;
select * from student ; #查询全部
SELECT id as di,name,job,score from student where score>18; #特定查询,并且展示特定的表 as:表示改字段名称(原来的表不发生变化)
注意:表示所有字段
6. 子句
> < <= >= = <> 大于、小于、大于(小于)等于、不等于
between ...and... 显示在某一区间的值(含头含尾)
in(set) 显示在in列表中的值,例:in(100,200)只能匹配100或200
like '张_' 模糊查询 使用% 和 _(%表示匹配所有 _匹配一个)
Is null 判断是否为空
and 多个条件同时成立
or 多个条件任一成立
not 不成立,例:where not(expection>10000);
-- > < <= >= = != 大于、小于、大于(小于)等于、不等于
SELECT * from student WHERE id>1006;
SELECT * from student WHERE id!=1006;
--between ...and... 显示在某一区间的值(含头含尾)
select id,name,job from student where id BETWEEN 1002 and 1005;
select * from student where job BETWEEN 'a' and 'b';
-- in(set) 显示在in列表中的值,例:in(100,200)只能匹配100或200
select * from student where job in('a','b');
-- like '张_' 模糊查询 使用% 和 _(%表示匹配所有 _匹配一个)
SELECT * from student where name like 'l%';
SELECT * from student where name like 'l_';
select * from student where name is not null;
7.limit分页
格式:
语句 limit 开始下标,长度;
-- limit分页 语句 limit 开始下标,长度;注意:没有where
select * from student LIMIT 1,2;
select * from student LIMIT 0,2;
select * from student LIMIT 2;
注意:
如果数据量不够,显示全部
8.去重
格式:
DISTINCT 字段1,字段2...字段N
-- 去重 DISTINCT 字段1,字段2...字段N
select DISTINCT name from student;
select count(DISTINCT name) from student;
注意:
字段不能在DISTINCT之前,只能在DISTINCT后面
DISTINCT之后有多个字段,按照所有字段进行去重
9.聚合函数
count(字段):求多少行数据
sum(字段):求和
avg(字段):平均数
max(字段):最大值
min(字段):最小值
注意:
varchar能比较大小,不能获取avg(没有任何意义)
如果值为Null不参与计算
sum和avg字段的数据不是数值,结果都是0
-- count(字段):求多少行数据
select count(*) from student;
select count(name) from student;
-- sum(字段):求和
select sum(score) from student;
select sum(job) FROM student;
select name+score as sum FROM student; #score的值
SELECT name*score as cheng FROM student; #0
-- avg(字段):平均数
SELECT avg(score) FROM student;
-- max(字段):最大值
SELECT max(score) FROM student;
SELECT max(job) FROM student; #c
-- min(字段):最小值
SELECT min(score) FROM student;
10.拼接
格式1
concat(str1,str2...)
格式2:
concat_WS(separator,str1,str2,...)
-- 格式一:concat(str1,str2...)
select CONCAT(id,'-',name) as pj FROM student;
-- 格式二:concat_WS(str1,str2...)
SELECT CONCAT_WS('~',id,name,score,job)FROM student; #中间以~隔开
11.日期函数
获取当前日期:
current_timestamp;--所有
current_timestamp();--所有
CURRENT_DATE();-- 年月日
CURRENT_DATE;-- 年月日
CURRENT_TIME();-- 时分秒
CURRENT_TIME;-- 时分秒
-- 获取当前日期:
-- current_timestamp;--所有
SELECT CURRENT_TIMESTAMP from student;
-- current_timestamp();--所有
SELECT CURRENT_TIMESTAMP() from student;
-- CURRENT_DATE();-- 年月日
select CURRENT_DATE() from student;
-- CURRENT_DATE;-- 年月日
select CURRENT_DATE from student;
-- CURRENT_TIME();-- 时分秒
SELECT CURRENT_TIME() FROM student;
-- CURRENT_TIME;-- 时分秒
SELECT CURRENT_TIME FROM student;
时间转str
格式:date_format(date,format)
date:时间
format:格式
str转日期
格式:str_to_date(str,formaat)
SELECT * FROM date;
-- 时间转str
-- 格式:
-- date_format(date,format)
-- date:时间
-- format:格式
select DATE_FORMAT('2021-09-01','%Y~%m~%d');
-- str转日期
-- 格式:
-- str_to_date(str,formaat)
SELECT STR_TO_DATE('2021-09-01','%Y-%m-%d');
日期相减
格式:datediff(expr1,expr2);
注意:只能相减年月日,时分秒参与运算结果为null
datediff(expr1,expr2);
-- 注意:只能相减年月日,时分秒参与运算结果为null
SELECT DATEDIFF('2021-09-09','2021-09-01');
函数向日期添加指定的时间间隔
格式:
DATE_ADD(date,INTERVAL expr unit);
date:时间
INTERVAL:关键字
expr:间隔的数值
unit:年月日时分秒(..,...,day,..,..,..)
SELECT DATE_ADD('2021-09-09',INTERVAL +10 YEAR);
SELECT DATE_ADD('2021-09-09',INTERVAL +10 DAY);
12. 数组计算
round(x,d):四舍五入
x:值
d:保留几位小数点
ceil(x):向上取整
floor(x):向下取整
rand():随机数(0-1之间)
-- 数组计算
-- round(x,d):四舍五入
-- x:值
-- d:保留几位小数点
SELECT ROUND(1.3,2); #2表示保留几位小数
-- ceil(x):向上取整
SELECT ceil(1.2);
-- floor(x):向下取整
SELECT floor(1.2);
-- rand():随机数(0-1之间)
SELECT rand();
13.排序
格式:order by 字段1 asc|desc,字段2 asc|desc...字段n asc|desc;
SELECT * from student ORDER BY score,job;
SELECT * from student ORDER BY score desc, job desc;
注意:
默认升序asc,降序desc
如果有多个字段,按照先后顺序依次排序
14. group by 分组
格式:
group by 字段1,字段2...字段n;
注意:
多个字段,按照所有字段进行分组(一起分组)
有多少组显示多少条数据(默认情况下,没有经过条件筛选)
组显示的数据为每组中默认第一条数据
by 通常和聚合函数一起使用
select max(score) as c from student where score=c;
select max(score) as c from student having score=c;
两个都不能运行
SELECT count(*),job,`name`,id as c from student GROUP BY sex where c>2; #错误
SELECT count(*) as c,job,`name`,id from student GROUP BY sex HAVING c>2;
-- select id,name,sex from student where job='a'; # 可以运行
--select id,name,sex from student having job='a'; #不能运行(显示了之后就没有job)
-- 执行过程是 from-where-select-having
-- select count(*) c from student where c>1; -- 不行
-- select count(*) c from student having c>1;-- 行
select count(*) c,sex from student group by sex where sex='男';
select count(*) c,sex from student group by sex having sex='男';
--where having 一起使用
SELECT count(*)as c,name,id FROM student where sex='男' HAVING c>3;
where 是对表中from到的数据进行筛选;
having是对表中selec显示数据进行晒选;
来源:https://www.cnblogs.com/lmandcc/p/15228773.html
猜你喜欢
- 1._thread.start_new_thread(了解)import threadingimport timeimport _threa
- 本文实例讲述了python使用socket进行简单网络连接的方法。分享给大家供大家参考。具体如下:import socketprint &q
- 前言golang实现定时任务很简单,只须要简单几步代码即可以完成,最近在做了几个定时任务,想研究一下它内部是怎么实现的,所以将源码过了一遍,
- Oracle基本PLSQL的使用实例详解PL/SQL 块是在 SQL 语言之上发展起来的一种应用,可以集中的处理各种复杂的 SQL 操 作。
- 目录[redis 调用Lua脚本](#redis 调用Lua脚本)[redis+lua 实现评分排行榜实时更新](#redis+lua 实现
- 今天群友提出一个问题:给出Word示例如下:对于这种嵌入文件在Word中都属于ole文件。下面我们假设需要读取每个嵌入的Excel文件中的p
- Python 通过pip安装Django详细介绍经过前面的 Python 包管理工具的学习,接下来我们就要基于前面的知识,来配置 Djang
- 代码如下:'个人代码风格注释(变量名中第一个小写字母表表示变量类型) 'i:为Integer型; 's:为Strin
- 本次案例使用OpenCV和selenium来解决一下滑块验证码先说一下思路:弹出滑块验证码后使用selenium元素截图将验证码整个背景图截
- Mysql数据库、数据库表、数据基础操作笔记分享给大家,供大家参考,具体内容如下一、数据库操作1.创建数据库Create dat
- 一、Pycharm安装Django框架二、新建Django项目1、manage.py是个管理角色,拥有的功能包括:(1)创建app: pyt
- 1.超链接<a href="https://www.aspxhome.com" title="asp之家
- 本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要
- python中的email模块可以方便的解析邮件,先上代码#-*- encoding: gb2312 -*-import osimport
- 连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refe
- 这段时间服务器崩溃2次,一直没有找到原因,今天看到论坛发出的错误信息邮件,想起可能是MySQL的默认连接数引起的问题,一查果然,老天,默认
- 使用ghost.py 通过搜搜 的微信搜索来爬取微信公共账号的信息# -*- coding: utf-8 -*-import sysrelo
- array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副
- B-树 1 .B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树
- 前言本系列文章将依据官方文档讲解Webots R2022b的使用教程(Windows10环境)。一、Webots是什么?Webots是一个开