MYSQL–>SQL语法

注:
DDL(Data definition Language)数据库定义(比如说表,数据库)
DML(Data Mainpulation Language)数据库 的增删改查
DQL(Data Query Language)数据库 数据的查询
DCL(Data control Language)数据库 权限的设置

数字类型

整型类型 占用字节 tinyint 1 smallint 2 mediumint 3 int 4 bigint 8 浮点数类型 占用字节 float 4 double 8 dectmal 自定义

注:
浮点数写成
float(精度,标度)这种
123.45这个数的精度是5,标度是2
dectmal的大小取决于我们自己定义的精度和标度

字符串类型

字符串类型 占用字节 char 自定义 varchar 自定义

注:
字符串的写法是:
char(字节数)
其中char和varchar的区别
char(10)即使你本身数据占用了1个字符其他会用空格补成10个字符的
varchar(10)如果存储1个字符的他就占用一个字符
char的性能会高一些,varchar的性能会低一些因为varchar使用的时候要计算一些大小

二级制数据类型 文本数据类型 tinyblob tingtext mediumblob mediumtext blob text longblob longtext

注:
blob数据类型一般用来存储二进制数据比如说安装包,视频,音乐等
text数据类型一般用来存储长文本内容

日期类型

日期数据类型 占用大小 描述 date 3 年-月-日 time 3 时-分-秒 datetime 8 年-月-日-时-分-秒- year 1 年 timestamp 4 年-月-日-时-分-秒

注:
timestamp最大是2038年-1月-19号

1.对数据库的操作

创建数据库

Create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

删除数据库

Drop database [if exists] 数据库名;

查询数据库
查询所有数据库

show databases;

查询当前所处的是哪个数据库

select database();

进入数据库

Use 数据库名;

2.对表的操作

查询表内有哪些字段

Desc 表名;

显示数据库内的所有表

Show tables;

查询表的创建语法是什么

Show create table;

创建表

Create table 表名(
    字段1 数据类型 [comment 注释内容] [约束条件],
    .......
    字段n 数据类型 [comment 注释内容] [约束条件]
)[comment 注释内容] [charset 字符集] [engine=引擎名];

删除表

Drop table [if exists] 表名;

对表字段的添加

Alter table 表名 add 字段名 数据类型 [comment 注释] [约束条件];

对表字段的删除

Alter table 表名 drop 字段名;

对表字段的修改

Alter table 表名 change 旧字段 新字段 类型 [comment 注释] [约束条件];

对表的名字修改

Alter table 表名 rename to 新表名;

Insert(插入数据)

insert into 表名(字段列表) values(值列表),(值列表),(值列表).....;

如果要给全部字段添加值那么,字段列表可以不加

insert into 表名 values(值列表);

注:
符串和日期要加引号,字段和值要一一对应

Update(更新数据)

Update 表名 set 字段=值,字段=值.... [where 条件];

注:
如果不加where条件就会对整个字段进行修改

Delete(删除数据)

Delete from 表名 [where 条件];

注:

  1. 如果不加where条件就会删除全部数据
  2. delete是对表的整行进行删除
  3. 要删除一行内的某个字段数据,用update将其设置为none即可

基本查询

select 字段列表 from 表名;

注:
可以代表所有字段,一般不用因为可能触发回表查询(详见索引应用)

条件查询

select 字段列表 from 表名 where 条件;

一些条件:

符号 描述 > 大于 < 小于 = 等于 >= 大于等于

注:
关于is null和is none涉及到mysql特有的三值逻辑

三值逻辑和null(重要!!)

NULL 用于表示 缺失的值遗漏的未知数据,不是某种具体类型的值。
数据表中的 NULL 值表示该值所处的字段为空,值为 NULL 的字段没有值,尤其要明白的是: NULL 值与 0 或者空字符串是不同的。

在SQL中虽然只存在一种null但是我们讨论的时候将其分为俩种null
分别是

主流语言(c,c++,php等)只有true和false的俩个 逻辑值,但是在SQL中还存在另外一个 逻辑值unknown
就类似。 对(true),错(false),不知道(unknown)

故unknown分为:
逻辑值unknown,作为null的unknown

逻辑值unknown是一个明确的布尔值
作为null的unknown既不是值也不是变量
例如x=x,当x是逻辑值unknown的时候返回true,如果是作为null的unknown的时候返回的是unknown

假定x和y是unknown
故 not x 也为unknown
其他的记住优先级即可

对于null如果使用=,>,

NULL 既不是值也不是变量。NULL 只是一个表示 没有值的标记,而比较谓词只适用于值。
故使用比较词给null是没有意义的!

聚合函数

名字 描述 count(字段A) 统计数量 max(字段A) 最大值 min(字段A) 最小值 avg(字段A) 平均数 sum(字段A) 求和

用法:select 聚合函数 from 表名;
一般配合分组查询使用

分组查询

select &#x5B57;&#x6BB5;&#x5217;&#x8868; from &#x8868;&#x540D; where &#x6761;&#x4EF6; group by &#x8981;&#x5206;&#x7EC4;&#x7684;&#x5B57;&#x6BB5; having &#x6761;&#x4EF6;;

注:

  1. 如果不用group by分组的话就是把全部数据放到同一组的意思
  2. where是分组前的过滤。Having是分组后的过滤
  3. 比如说以男,女分组并统计男女的年龄的平均数
  4. 查询的函数一般为分组的字段和聚合函数,查询其他的无意义
  5. 执行顺序是 where->聚合函数->having
  6. 分组查询就好比将一个父表根据字段分成多个子表然后进行查询操作

排序查询

select &#x5B57;&#x6BB5;&#x5217;&#x8868; from &#x8868;&#x540D; order by &#x5B57;&#x6BB5;&#x540D; &#x6392;&#x5E8F;&#x65B9;&#x6CD5;&#xFF0C;&#x5B57;&#x6BB5;&#x540D;,&#x6392;&#x5E8F;&#x65B9;&#x6CD5;....;

名子 描述 Desc 降序 Asc (默认)升序

注:
如果第一个字段值相同就按第二个字段进行排序

分页查询

select &#x5B57;&#x6BB5;&#x5217;&#x8868; from &#x8868;&#x540D; limit &#x8D77;&#x59CB;&#x7D22;&#x5F15; &#x8981;&#x67E5;&#x8BE2;&#x8BB0;&#x5F55;&#x6761;&#x6570;&#xFF1B;

起始索引值=(要查询的页数–1) _查询记录数
例如第二页有10条记录数,起始索引就是(2-1)_10=10
如果查询第一页数据直接 limit 10,不需要写起始索引

执行顺序

select &#x5B57;&#x6BB5;&#x5217;&#x8868; from &#x8868;&#x540D; where &#x6761;&#x4EF6; group by &#x5206;&#x7EC4;&#x5B57;&#x6BB5;&#x540D; having &#x6761;&#x4EF6; order by &#x6392;&#x5E8F;&#x5B57;&#x6BB5; &#x6392;&#x5E8F; limit &#x8D77;&#x59CB;&#x7D22;&#x5F15; &#x67E5;&#x8BE2;&#x8BB0;&#x5F55;&#x6570;;

管理用户

查询用户
在mysql中所有的用户都存在系统mysql数据库中,故查询用户就查询mysql的user表即可

Use mysql;&#x8FDB;&#x5165;
Select * from user;&#x67E5;&#x8BE2;&#x7528;&#x6237;

创建用户

Create user '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;' identified by '&#x8BBF;&#x95EE;&#x5BC6;&#x7801;' ;

其中 主机名一般为一段ip地址,也可以写localhost代表本机
%代表任意主机
修改访问密码

Alter user '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;' identified with mysql_native_password by '&#x65B0;&#x5BC6;&#x7801;';

删除用户

Drop user '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;' ;

设置权限

显示用户有哪些权限

Show grants for '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;'&#xFF1B;

给予用户权限

Grant &#x6743;&#x9650;&#x5217;&#x8868; on &#x6570;&#x636E;&#x5E93;.&#x8868; to '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;';
Grant all on &#x6570;&#x636E;&#x5E93;1.* to '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;';      #&#x5C06;&#x6570;&#x636E;&#x5E93;1&#x4E2D;&#x6240;&#x6709;&#x8868;&#x7684;&#x6743;&#x9650;&#x7ED9;&#x7528;&#x6237;

撤销用户权限

revoke &#x6743;&#x9650;&#x5217;&#x8868; on &#x6570;&#x636E;&#x5E93;&#x540D;.&#x8868;&#x540D; from '&#x7528;&#x6237;&#x540D;'@'&#x4E3B;&#x673A;&#x540D;'&#xFF1B;

多个权限用逗号分割,代表所有权限
常见的权限*

权限 说明 ALL,ALL PRIVILEGES 所有权限 select 查询数据权限 INSERT 插入数据权限 Update 更新数据权限 Delete 删除数据权限 Alter 修改表的权限 Drop 删除,数据库/视图/表的权限 Create 创建数据库/表的权限

Original: https://www.cnblogs.com/wdadwa/p/MYSQL_Learning_02.html
Author: wdadwa
Title: MYSQL–>SQL语法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611870/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • JavaEE知识点思维导图

    posted @2020-12-08 08:39 一方玩 阅读(122 ) 评论() 编辑 Original: https://www.cnblogs.com/tianyuwohu…

    数据库 2023年6月6日
    0123
  • MySQL实战45讲 20

    20 | 幻读是什么,幻读有什么问题? 建表和初始化语句如下 CREATE TABLE t ( id int(11) NOT NULL, c int(11) DEFAULT NUL…

    数据库 2023年6月14日
    070
  • mybatis-plus详解

    旧的代码生成 记得导包,依赖如下 com.baomidou mybatis-plus-boot-starter 3.5.1 com.baomidou mybatis-plus-ge…

    数据库 2023年6月14日
    093
  • JAVA oa 办公系统模块 设计方案

    1.模型管理 :web在线流程设计器、预览流程xml、导出xml、部署流程 2.流程管理 :导入导出流程资源文件、查看流程图、根据流程实例反射出流程模型、激活挂起 、自由跳转 3….

    数据库 2023年6月6日
    089
  • mybatis collection解析以及和association的区别

    1.collection标签 说到mybatis的collection标签,我们肯定不陌生,可以通过它解决一对多的映射问题,举个例子一个用户对应多个系统权限,通过对用户表和权限表的…

    数据库 2023年6月16日
    088
  • 机器学习模型太慢?来看看英特尔(R) 扩展加速 ⛵

    💡 作者:韩信子@ShowMeAI📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41📘 本文地址:https://www.showm…

    数据库 2023年6月14日
    086
  • mapreduce统计单词个数

    WordCount类代码: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Pat…

    数据库 2023年6月11日
    094
  • ArrayList扩容机制

    1.构造函数 有三种 说第一种无参构造,默认初始容量为10 2.add函数 /** * 将指定的元素追加到此列表的末尾。 */ public boolean add(E e) { …

    数据库 2023年6月16日
    096
  • 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了。刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就…

    数据库 2023年6月11日
    096
  • Linux中的grep,sed,find的使用方法

    提取指定文件到指定目录/文件 语法:tar xvf test.tar test1(只提取test.tar 包中的test1文件到当前路径) 语法:tar xvf test.tar …

    数据库 2023年6月16日
    081
  • [springmvc]ajax异步请求数据详细简单

    10.Ajax异步请求 Ajax即 Asynchronous Javascript And XML(异步JavaScript和XML在 2005年被Jesse James Garr…

    数据库 2023年6月16日
    085
  • 代码随想录-数组篇

    上次刷没刷完整,和李哥做字节的题感觉先前刷的题白刷了,故打算从头到尾完整走一遍。 二分法 1-1.二分查找 力扣题目链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一…

    数据库 2023年6月14日
    0111
  • Atlas快速入门

    之前的公司在数据中台的项目上调研决定启用了Atlas作为我们数据血缘管理的工具,让我给大家写了一份Atlas快速入门的文档,所以在这里我将这篇文档以一个纯新手视角的方式再一次优化,…

    数据库 2023年6月11日
    099
  • 安装多个Jdk

    安装 官方下载地址 目录结构: 配置 PATH 修改 注意:此处的操作可能会有其他未知的问题,最好还是理解window的命令查找机制,然后还是需要根据具体问题具体分析解决。 测试 …

    数据库 2023年6月11日
    0100
  • 【黄啊码】MySQL入门—1、SQL 的执行流程

    大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜! 首先我…

    数据库 2023年6月16日
    084
  • 0811JDBC随笔

    1.JDBC体系系统 一组规范:接口 JDBC接口(API)包括两个层次: 面向应用的API:Java API,抽象接口,供应用开发人员使用(连接数据库,执行SQL语句,获得结果)…

    数据库 2023年5月24日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球