MySQL 基础常用命令总结

目录
  • 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显示数据进行晒选;

到此这篇关于MySQL 基础常用命令总结的文章就介绍到这了,更多相关MySQL常用命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql常用sql与命令之从入门到删库跑路

    启动与停止 启动mysql服务 sudo /usr/local/mysql/support-files/mysql.server start 停止mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 重启mysql服务 sudo /usr/local/mysql/support-files/mysql.server restart 进入mysql目录文件 cd /usr/local/mysql/support-files 进入

  • mysql的登陆和退出命令格式

    mysql登陆的命令格式为: mysql -h [hostip] -u [username] -p [password] [database] 1.普通登陆mysql数据库 命令格式:mysql -u 用户名 -p 密码,例如: mysql -u root -p root 如果在-p后没有提供密码,则会在执行命令后要求用户输入密码 2.制定端口号登陆,mysql的默认端口号是3306, 命令格式:mysql -u 用户名 -p 密码 -P 端口号 即可,注意指定端口的字母P为大写,而标识密码的p

  • MySQL source命令的使用简介

    一个线上问题的引发的思考 今天上班的时候,开发的同事拿过来一个.zip的压缩包文件,说是要把里面的数据倒入到数据库里面,本来想着是成型的SQL,只需要复制粘贴一下,倒入到数据库中就可以了.拿到的时候,才发现问题没我想的那么简单,我首先看到的是一个压缩包,大概30多M,解压之后,发现里面的内容是个.sql的数据文件,文件的大小是645M左右,这么大的文件,要是手动粘贴上去,那简直太变态了.第一反应这个是不是mysqldump出来的备份数据,要是这样的话,就可以直接在命令行中进行恢复了.于是打开看了

  • MySQL存储过程的查询命令介绍

    如下所示: select name from mysql.proc where db='数据库名'; 或者 select routine_name from information_schema.routines where routine_schema='数据库名'; 或者 show procedure status where db='数据库名'; SHOW CREATE PROCEDURE 数据库.存储过程名; 补充:MySQL存储过程-循环遍历查询到的结果集 1.创建存储过程 根据MyS

  • MySQL命令行操作时的编码问题详解

    1.查看MySQL数据库编码 mysql -u用户名 -p密码 show variables like 'char%'; 2.编码解释 1.character_set_client:MySQL会使用该编码来解读客户端发送来的数据,如果该字段编码为utf8,那么如果客户端发送过来的数据不是utf8,就会出现乱码现象. 2.character_set_results:MySQL会把数据转换成该编码后,再发送给客户端,例如该编码为utf8,那么如果客户端不使用utf8来解读,那么就会出现乱码现象. 3

  • Mysql桌面工具之SQLyog资源及激活使用方法告别黑白命令行

    话不多说,先上资源 我们下载 SQLyog Ultimate V13.1.1 64bit 中文已注册安装版 安装完成以后打开 帮助----更改注册详细信息 然后用户随便填, 注册秘钥填 60c1b896-7c22-4405-9f46-a6bce776ab36 然后就可以使用啦 . 这边填你需要连接的服务器地址,跟ssh差不多,Mysql服务要打开,如果连不上检查3306端口是否开启了. 连上之后就可以使用了, 这边有一些快捷键 然后自己慢慢研究吧 到此这篇关于Mysql桌面工具之SQLyog资源

  • mysql密码中有特殊字符&在命令行下登录的操作

    在服务器上,通常为了快速登录数据库,我们会使用mysql -hhost -uusername -ppassword db的方式登录数据库,如果密码中没有特殊字符&,会直接进入数据库sql命令行下,如果有特殊字符&,那么就会出现如下提示: -bash: syntax error near unexpected token `&' 一般情况,我们可以通过命令mysql -hhost -uusername -p db然后根据提示手动输入密码. 另外,这里可以对特殊字符的密码做处理. 1.

  • mysql利用mysqlbinlog命令恢复误删除数据的实现

    实验环境: MYSQL 5.7.22 开启二进志日志 日志格式MIXED 实验过程: 1.执行:FLUSH LOGS; master-bin.000014 文件就是新生成的文件 刷新日志是为了实验内容更直观,更容易观察到整个实验过程的内容. 我看到网上许多文章有在用REST MASTER;而未说明此命令的严重性 这条命令会删除所有日志文件,并将文件名和记录点进行重置归零,99%的情况下是用不到这条命令的 删除日志可以用PURGE MASTER LOGS...这样保险一点 2.新日志文件已经生成,

  • MySQL数据库自动补全命令的三种方法

    注意:第三种方法要在 XSell 中使用,在 finalsell 中使用不了 方式一:临时使用自动补全功能 方式二:永久使用自动补全功能 vim /etc/my.cnf [mysql] auto-rehash 方式三:使用软件mycli实现自动补全功能 此方法需要使用在线源进行软件包的安装 yum -y install epel-release yum -y install python-pip yum -y install python-devel yum clean all yum -y i

  • MySQL如何使用授权命令grant

    本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_user@'%' grant insert on testdb.* to common_user@'%' grant update on testdb.* to common_user@'%' gr

  • MySQL命令无法输入中文问题的解决方式

    发现问题 近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输入中文的现象, 如下所示: mysql> SELECT 'Chinese characters <> are stripped'; +------------------------------------+ | Chinese characters <> are stripped | +------------------------------------+ | Chinese ch

随机推荐