【无标题】

文章目录

  • mysql 安装 与 启动
    • 安装
    • 启动与使用
    • 数据模型
  • SQL 通用语法 & SQL 分类
    • 通用语法
    • SQL 分类
      • DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)
      • DML:数据操作语言,用来对数据表中的数据进行 增、删、改
      • DQL:数据查询语言,用来查询数据库中表的数据
      • DCL:数据控制语言,用来创建数据库用户,控制数据库的访问权限

mysql 安装 与 启动

安装

1、官网下载对应版本mysql 并 安装
2、配置对应环境变量
3、ps -ef | grep mysqld 查看mysql是否启动

启动与使用

1、启动服务:sudo mysql.server start
2、停止服务:sudo mysql.server stop
3、重启服务:sudo mysql.server restart
4、客户端连接:sudo mysql -u root -p
5、退出:exit

数据模型

使用mysql语言通过 客户端,控制 数据库管理系统,创建数据库(数据表)
客户端->DBMS->数据库->数据表

SQL 通用语法 & SQL 分类

通用语法

  • sql语句可以单行或多行书写,以分号;分隔
  • sql语句可以使用空格和缩进来增加语句的可读性
  • Mysql数据库的语句不区分大小写,但关键字建议大写
  • 注释:
    • 单行注释:-- 或 #(mysql独有)
    • 多行注释:/* 注释内容 */

SQL 分类

DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)

  1. 数据库操作
    • 查询所有数据库:SHOW DATABASES;
    • 查询当前数据库:SELECT DATABASE();
    • 创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [CALLATE 排序规则];
    • 删除数据库:DROP DATABASE [IF NOT EXISTS] 数据库名称;
    • 使用数据库:USE 数据库名;
  2. 表操作——创建&查询
    • 查询当前数据库所有表:SHOW TABLES;
    • 查询表结构:DESC 表名;
    • 查询指定表的建表语句:SHOW CREATE TABLE 表名;
    • 创建表:
      CREATE TABLE 表名(
      字段1 字段1类型 [COMMENT 注释],
      字段2 字段2类型 [COMMENT 注释],

      字段n 字段n类型 [COMMENT 注释]
      )[COMMENT 表注释];
  3. mysql的数据类型
  • 数值类型
MySQL数据类型 含义(有符号)
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(±9.22*10的18次方)
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位
decimal(m,d) 参数m<65 是总个数,d<30且 d
  • 字符串类型
MySQL数据类型 含义
char(n) 定长字符串,最多255个字符 (n是多少就占用多少字节的空间,性能好)
varchar(n) 变长字符串,最多65535个字符 (存储1个字符,定义n为10,占用一个字符的空间,性能较差)
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
tinyblob 不超过255个字符的二进制数据
blob 二进制形式的长文本数据
  • 日期时间类型
MySQL数据类型 含义
date 日期 ‘2008-12-2’
time 时间 ‘12:25:36’
year 1901-2155 年份值
datetime 日期时间 ‘2008-12-2 22:06:44’
timestamp 自动存储记录修改时间
  1. 表操作——修改&删除
    • 修改-添加字段:alter table 表名 add 字段 字段类型 [comment 注释][约束]
    • 修改-修改数据类型:alter table 表名 modify 字段 新数据类型;
    • 修改-修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 数据类型[comment 注释][约束]
    • 删除-删除字段:alter table 表名 drop 字段名;
    • 修改表名:alter table 表名 rename to 新表名;
    • 删除表:drop table [if exists] 表名;
    • 删除表并重新创建该表:truncate table 表名;

DML:数据操作语言,用来对数据表中的数据进行 增、删、改

  1. 添加数据 insert
    • 给指定字段添加数据:insert into 表名 (字段名1,字段名2,…) values (值1,值2,…);
    • 给所有字段添加数据:insert into 表名 values (值1,值2,…);
    • 批量添加数据:
      -insert into 表名 (字段名1,字段名2,…) values (值1,值2,…),(值1,值2,…);
      -insert into 表名 values (值1,值2,…),(值1,值2,…);
  2. 删除数据 delete
    • delete from 表名 [where 条件];
  3. 修改数据 update
    • update 表名 set 字段名1=值1,字段名2=值2[where 条件];

DQL:数据查询语言,用来查询数据库中表的数据

语法:

   select 字段列表 from 表名列表
   where 条件列表
   group by 分组字段列表
   having 分组后条件列表
   order by 排序字段列表
   limit 分页参数
  1. 基础查询
    • 查询多个字段:select 字段1,字段2... from 表名; select * from 表名;
    • 设置别名: select 字段1 [as 别名1], ... from 表名;
    • 去除重复项: select distinct 字段列表 from 表名;
  2. 条件查询
    • 语法: select 字段列表 from 表名 where 条件列表;
    • 条件:
运算符 说明
>,>=,<,<= 大于,大于等于,小于,小于等于
= 等于,NULL不安全,例如NULL=NULL的结果NULL
<=> 等于,NULL安全,NULL<=>NULL的结果是true
<> 或者 != 不等于
between…and… 匹配范围,如果范围是相等的则返回true
in(a1,a2,a3…) 其中任何一个是成立的,都返回true
is NULL 是NULL
is not NULL 不是NULL
LIKE 模糊匹配,%表示任意多个任意字符,_表示任意一个字符
AND 或 && 多个条件必须都为true,结果才是true
OR 或 || 任意一个条件为true,结果就是true
NOT 或 ! 条件为TRUE,结果为FALSE
  1. 聚合函数

将一列数据作为一个整体,进行纵向计算

  • 常见的聚合函数:

AVG():求平均值
SUM()求总和
MAX() :求最大值
MIN():求最小值
COUNT():求个数\

  1. 分组查询 (group by)
   select 字段列表 from 表名列表
   where 条件列表
   group by 分组字段列表
   having 分组后条件列表
   order by 排序字段列表
   limit 分页参数

where与having的区别:

  • 执行时机不同,where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤;
  • 判断条件不同,where不能对聚合函数进行判断,having可以
  1. 排序查询(order by)
   select 字段列表 from 表名列表
   where 条件列表
   group by 分组字段列表
   having 分组后条件列表
   order by 排序字段列表-字段1 排序方式1,字段2 排序方式2
   limit 分页参数

排序方式:

  • ASC:升序(默认值)
  • DESC:降序
  1. 分页查询 (limit)
   select 字段列表 from 表名列表
   where 条件列表
   group by 分组字段列表
   having 分组后条件列表
   order by 排序字段列表
   limit 分页参数-起始索引,查询记录数

注意:

  • 起始索引从0开始,起始索引=(查询页面-1)*每页记录数
  • 分页查询是数据库的方言,不同数据库有不同实现,mysql是limit
  • 如果查询的是第一页的数据,起始索引可以省略,简写为limit 10;
  1. DQL语句的执行顺序

from -> where -> group by -> having -> select -> order by -> limit

DCL:数据控制语言,用来创建数据库用户,控制数据库的访问权限

  1. 用户管理

    • 查询用户:use mysql; select * from user;
    • 创建用户: create user ‘用户名’@‘主机名’ identified by ‘密码’;
    • 修改用户密码:alter user ‘用户名’@‘主机名’ identified with mysql_native_password by ‘新密码’;
    • 删除用户: drop user ‘用户名’@‘主机名’;
    • 任意主机可以用%
  2. 权限控制

    • 查询权限:show grants for ‘用户名’@‘主机名’;
    • 授予权限:grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
    • 撤销权限:revoke 权限列表 on 数据库名.表名 from ‘用户名’@‘主机名’;

你可能感兴趣的:(mysql,mysql)