注意: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——常用命令的更多相关文章

  1. MySql 基础知识-常用命令及sql语句

    一.常用mysql命令行命令 1,启动mysql服务 net start mysql.      停止mysql服务 net stop mysql 2,netstart -na|findstr 330 ...

  2. mysql 登录及常用命令

    一.mysql服务的启动和停止 mysql> net stop mysql mysql> net start mysql 二.登陆mysql mysql> 语法如下: mysql - ...

  3. MySQL数据库操作常用命令

    MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...

  4. mysql数据库管理、常用命令及函数(10.10 第十八天)

    数据库管理: MYSQL 轻量级数据库,适用于中小型企业,性能好,开源的(免费的) MSSQL 微软开发的,需要安装在NT系统中,不支持跨平台,适用于中大型企业 ACCESS 小巧方便,适用于小型企业 ...

  5. Docker基础和常用命令

    Docker基础和常用命令 一,Docker 简介 1.1,什么是 Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,nam ...

  6. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  7. 备份与还原mysql 数据库的常用命令。

    一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 ...

  8. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

  9. mysql一些写常用命令

    参见pcttcnc2007博客腾飞 1.mysql的status信息命令: mysql> show global status; 2.可以列出mysql服务器运行各种状态值,另外,查询mysql ...

随机推荐

  1. Qt 入门 ---- 如何在程序窗口显示图片?

    步骤: 1. 选择资源(准备图片) 2. 加载资源(导入图片) 3. 使用资源(显示图片) 具体操作流程: ① 从网上寻找合适的图片素材,下载到本地,在项目根目录下创建一个images文件夹存储程序中 ...

  2. Mysql分区表使用

    一.什么是分区表 分区表就是按一定规则将一张表分割成多个部分,达到和物理分表同样的效果,但操作起来更 简单,不同于物理分表那样使用时还需要指定使用的数据表.对于使用者来说和操作普通表无差别. 二.优势 ...

  3. SpringCloud升级之路2020.0.x版-4.maven依赖回顾以及项目框架结构

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们先来回顾下 m ...

  4. 自建简易FaaS平台

    近些年来,传统的 IaaS.PaaS 已经无法满足人们对资源调度的需求了.各大云厂商相继开始推出自家的 Serverless 服务.Serverless 顾名思义,它是"无服务器" ...

  5. Unix 网络IO模型介绍

    带着问题阅读 1.什么是同步异步.阻塞非阻塞 2.有几种IO模型,不同模型之间有什么区别 3.不同IO模型的应用场景都是什么 同步和异步.阻塞和非阻塞 同步和异步 广义上讲同步异步描述的是事件中发送方 ...

  6. rot位移密码详解(rot5、rot13、rot18、rot47)

    最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来 rot密码 rot密码其实可以看作是凯撒密码的一种变式 本质都是移位运算 rot密码按种类大致分为以下几类 rot ...

  7. (1)用 if语句 区间判断

    /*此例子只做比喻演示*/ 1 #include <stdio.h> 2 int main() 3 { 4 5 int p; 6 scanf("%d",&p); ...

  8. Redis是不是真的变慢了?

    大家好,今天我们来学习一下如何确定Redis是不是真的变慢了. 我们在使用redis时一定会遇到变慢的时候,那我们如何来判断Redis是否真的变慢了呢, 一个最直接的方法就是查看Redis的响应延迟, ...

  9. 《Python Cookbook v3.0.0》Chapter1 数据结构和算法

    感谢: https://github.com/yidao620c/python3-cookbook 如有侵权,请联系我整改. 本文章节会严格按照原书(以便和原书对照,章节标题可能会略有修改),内容会有 ...

  10. CYPEESS USB3.0程序解读之---SPI读写

    前面已经解读了GPIO以及同步FIFO操作,下面我们看一个SPI读写的例子,它是主程序命令从SPI中读写一些数据. SPI传输子程序看一下: 页地址,字节计数,缓冲区,读写标志 因为只能一页一页的读或 ...