MySQL基础2——常用命令
注意: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表:
1 create table if not EXISTS student (
2 id int auto_increment,
3 `name` VARCHAR(32),
4 age int,
5 sex char(1),
6 clazz VARCHAR(32)) charset utf8;
1 insert into student values (1001,'zs',18,'男','一班');
2 insert into student values (1002,'ls',19,'女','二班');
3 insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
4 insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
5 insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
6 insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
7 insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
8 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 字段 字段数据类型 属性;
1 alter table student add job varchar(32) default '没有工作' ;
2 insert into student (job) VALUES('a');
3 insert into student (job) VALUES('b');
4 insert into student (job) VALUES('c');
5 insert into student (job) VALUES('a');
6 insert into student (job) VALUES('b');
修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性;
1 alter table student change clazz clazz varchar(255);
2 alter table student change age score double;
修改字段:alter table 表名 modify 字段 数据类型 属性;
alter table student MODIFY varchar(356); #这里不能比之前的空间小
注意:
change:修改所有(字段名,数据类型,属性)
modify:修改一部分(数据类型,属性)
修改数据类型时,varchar->int元数据会变为0
5. 增删改查:字符串全部使用''包起来
1)增:
1 格式:
2 insert into 表名(字段) values(值),(值)...(值);
3 insert into student values (1001,'zs',18,'男','一班');
4 insert into student values (1002,'ls',19,'女','二班');
5 insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
6 insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
7 insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
8 insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
9 insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
10 insert into student(`name`,age,sex,clazz) values ('ld',12,'女','二班');
2) 删
1 -- 删除delete from 表名 where 子句;
2 delete from student where job='c';
3)改
1 -- 改update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;
2 update student set job='b'where name ='ls';
4) 查
1 -- 查select 字段 from 表名 where 子句;
2 select * from student ; #查询全部
3 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);
1 -- > < <= >= = != 大于、小于、大于(小于)等于、不等于
2 SELECT * from student WHERE id>1006;
3 SELECT * from student WHERE id!=1006;
4
5 --between ...and... 显示在某一区间的值(含头含尾)
6 select id,name,job from student where id BETWEEN 1002 and 1005;
7 select * from student where job BETWEEN 'a' and 'b';
8
9 -- in(set) 显示在in列表中的值,例:in(100,200)只能匹配100或200
10 select * from student where job in('a','b');
11
12 -- like '张_' 模糊查询 使用% 和 _(%表示匹配所有 _匹配一个)
13 SELECT * from student where name like 'l%';
14 SELECT * from student where name like 'l_';
15
16 -- Is null 判断是否为空
17 select * from student where name is not null;
7.limit分页
格式:
语句 limit 开始下标,长度;
1 -- limit分页 语句 limit 开始下标,长度;注意:没有where
2 select * from student LIMIT 1,2;
3 select * from student LIMIT 0,2;
4 select * from student LIMIT 2;
注意:
如果数据量不够,显示全部
8.去重
格式:
DISTINCT 字段1,字段2...字段N
1 -- 去重 DISTINCT 字段1,字段2...字段N
2 select DISTINCT name from student;
3 select count(DISTINCT name) from student;
注意:
字段不能在DISTINCT之前,只能在DISTINCT后面
DISTINCT之后有多个字段,按照所有字段进行去重
9.聚合函数:
count(字段):求多少行数据
sum(字段):求和
avg(字段):平均数
max(字段):最大值
min(字段):最小值
注意:
varchar能比较大小,不能获取avg(没有任何意义)
如果值为Null不参与计算
sum和avg字段的数据不是数值,结果都是0
1 -- count(字段):求多少行数据
2 select count(*) from student;
3 select count(name) from student;
4
5 -- sum(字段):求和
6 select sum(score) from student;
7 select sum(job) FROM student;
8 select name+score as sum FROM student; #score的值
9 SELECT name*score as cheng FROM student; #0
10
11 -- avg(字段):平均数
12 SELECT avg(score) FROM student;
13
14 -- max(字段):最大值
15 SELECT max(score) FROM student;
16 SELECT max(job) FROM student; #c
17
18 -- min(字段):最小值
19 SELECT min(score) FROM student;
10.拼接:
格式1:
concat(str1,str2...)
格式2:
concat_WS(separator,str1,str2,...)
1 -- 格式一:concat(str1,str2...)
2 select CONCAT(id,'-',name) as pj FROM student;
3 -- 格式二:concat_WS(str1,str2...)
4 SELECT CONCAT_WS('~',id,name,score,job)FROM student; #中间以~隔开
11.日期函数
获取当前日期:
current_timestamp;--所有
current_timestamp();--所有
CURRENT_DATE();-- 年月日
CURRENT_DATE;-- 年月日
CURRENT_TIME();-- 时分秒
CURRENT_TIME;-- 时分秒
1 -- 获取当前日期:
2 -- current_timestamp;--所有
3 SELECT CURRENT_TIMESTAMP from student;
4 -- current_timestamp();--所有
5 SELECT CURRENT_TIMESTAMP() from student;
6 -- CURRENT_DATE();-- 年月日
7 select CURRENT_DATE() from student;
8 -- CURRENT_DATE;-- 年月日
9 select CURRENT_DATE from student;
10 -- CURRENT_TIME();-- 时分秒
11 SELECT CURRENT_TIME() FROM student;
12 -- CURRENT_TIME;-- 时分秒
13 SELECT CURRENT_TIME FROM student;
时间转str
格式:
date_format(date,format)
date:时间
format:格式
str转日期
格式:
str_to_date(str,formaat)
1 SELECT * FROM date;
2 -- 时间转str
3 -- 格式:
4 -- date_format(date,format)
5 -- date:时间
6 -- format:格式
7 select DATE_FORMAT('2021-09-01','%Y~%m~%d');
8 -- str转日期
9 -- 格式:
10 -- str_to_date(str,formaat)
11 SELECT STR_TO_DATE('2021-09-01','%Y-%m-%d');
日期相减
格式:
datediff(expr1,expr2);
注意:只能相减年月日,时分秒参与运算结果为null
1 -- datediff(expr1,expr2);
2 -- 注意:只能相减年月日,时分秒参与运算结果为null
3 SELECT DATEDIFF('2021-09-09','2021-09-01');
函数向日期添加指定的时间间隔
格式:
DATE_ADD(date,INTERVAL expr unit);
date:时间
INTERVAL:关键字
expr:间隔的数值
unit:年月日时分秒(..,...,day,..,..,..)
1 SELECT DATE_ADD('2021-09-09',INTERVAL +10 YEAR);
2 SELECT DATE_ADD('2021-09-09',INTERVAL +10 DAY);
12. 数组计算
round(x,d):四舍五入
x:值
d:保留几位小数点
ceil(x):向上取整
floor(x):向下取整
rand():随机数(0-1之间)
1 -- 数组计算
2 -- round(x,d):四舍五入
3 -- x:值
4 -- d:保留几位小数点
5 SELECT ROUND(1.3,2); #2表示保留几位小数
6
7 -- ceil(x):向上取整
8 SELECT ceil(1.2);
9
10 -- floor(x):向下取整
11 SELECT floor(1.2);
12 -- rand():随机数(0-1之间)
13 SELECT rand();
13.排序
格式:
order by 字段1 asc|desc,字段2 asc|desc...字段n asc|desc;
1 SELECT * from student ORDER BY score,job;
2 SELECT * from student ORDER BY score desc, job desc;
注意:
默认升序asc,降序desc
如果有多个字段,按照先后顺序依次排序
MySQL基础2——常用命令的更多相关文章
- MySql 基础知识-常用命令及sql语句
一.常用mysql命令行命令 1,启动mysql服务 net start mysql. 停止mysql服务 net stop mysql 2,netstart -na|findstr 330 ...
- mysql 登录及常用命令
一.mysql服务的启动和停止 mysql> net stop mysql mysql> net start mysql 二.登陆mysql mysql> 语法如下: mysql - ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- mysql数据库管理、常用命令及函数(10.10 第十八天)
数据库管理: MYSQL 轻量级数据库,适用于中小型企业,性能好,开源的(免费的) MSSQL 微软开发的,需要安装在NT系统中,不支持跨平台,适用于中大型企业 ACCESS 小巧方便,适用于小型企业 ...
- Docker基础和常用命令
Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...
- MySQL基础操作&&常用的SQL技巧&&SQL语句优化
基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t ...
- 备份与还原mysql 数据库的常用命令。
一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 ...
- hbase shell基础和常用命令详解(转)
HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...
- mysql一些写常用命令
参见pcttcnc2007博客腾飞 1.mysql的status信息命令: mysql> show global status; 2.可以列出mysql服务器运行各种状态值,另外,查询mysql ...
随机推荐
- Qt 入门 ---- 如何在程序窗口显示图片?
步骤: 1. 选择资源(准备图片) 2. 加载资源(导入图片) 3. 使用资源(显示图片) 具体操作流程: ① 从网上寻找合适的图片素材,下载到本地,在项目根目录下创建一个images文件夹存储程序中 ...
- Mysql分区表使用
一.什么是分区表 分区表就是按一定规则将一张表分割成多个部分,达到和物理分表同样的效果,但操作起来更 简单,不同于物理分表那样使用时还需要指定使用的数据表.对于使用者来说和操作普通表无差别. 二.优势 ...
- SpringCloud升级之路2020.0.x版-4.maven依赖回顾以及项目框架结构
本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们先来回顾下 m ...
- 自建简易FaaS平台
近些年来,传统的 IaaS.PaaS 已经无法满足人们对资源调度的需求了.各大云厂商相继开始推出自家的 Serverless 服务.Serverless 顾名思义,它是"无服务器" ...
- Unix 网络IO模型介绍
带着问题阅读 1.什么是同步异步.阻塞非阻塞 2.有几种IO模型,不同模型之间有什么区别 3.不同IO模型的应用场景都是什么 同步和异步.阻塞和非阻塞 同步和异步 广义上讲同步异步描述的是事件中发送方 ...
- rot位移密码详解(rot5、rot13、rot18、rot47)
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来 rot密码 rot密码其实可以看作是凯撒密码的一种变式 本质都是移位运算 rot密码按种类大致分为以下几类 rot ...
- (1)用 if语句 区间判断
/*此例子只做比喻演示*/ 1 #include <stdio.h> 2 int main() 3 { 4 5 int p; 6 scanf("%d",&p); ...
- Redis是不是真的变慢了?
大家好,今天我们来学习一下如何确定Redis是不是真的变慢了. 我们在使用redis时一定会遇到变慢的时候,那我们如何来判断Redis是否真的变慢了呢, 一个最直接的方法就是查看Redis的响应延迟, ...
- 《Python Cookbook v3.0.0》Chapter1 数据结构和算法
感谢: https://github.com/yidao620c/python3-cookbook 如有侵权,请联系我整改. 本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有 ...
- CYPEESS USB3.0程序解读之---SPI读写
前面已经解读了GPIO以及同步FIFO操作,下面我们看一个SPI读写的例子,它是主程序命令从SPI中读写一些数据. SPI传输子程序看一下: 页地址,字节计数,缓冲区,读写标志 因为只能一页一页的读或 ...