MySQL

一. MySQL安装

  1. 下载MySQL免安装版的压缩包,我用的是5.7.28版本

  2. 将压缩包解压,我解压到了D:\MySql\mysql-5.7.28-winx64

  3. 配置环境变量

    • 此电脑–>属性–>高级–>环境变量
    • 新建一条路径,指向解压缩后的bin目录,我这里是D:\MySql\mysql-5.7.28-winx64\bin
  4. 安装MySQL,打开控制台,执行命令mysqlD install完成安装

  5. 初始化data目录

    • 创建新目录D:\MySql\mysql-5.7.28-winx64\data
  6. 启动服务net start mysql,关闭服务为net stop mysql

  7. 登录mysql -u<用户名>-p 回车输入密码

  8. 修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY "newpassword";

  • 安装过程中没有遇到什么问题,只是由于MySQL默认编码不是UTF-8,之前使用JDBC连接MySQL做项目的时候会有乱码的情况出现,所以可以改一下默认字符集,具体方法图下:

    1. 使用 show variables like '%char%';可以查看数据库的编码方式

    修改之前我的数据库编码方式是这样的

    1. 在MySQL的安装目录下新建一个my.ini的文件,旧版本可能直接会有这个文件,只需要修改,我这个版本需要新建。

      编辑my.ini,添加以下内容,

    [mysql]
    # 修改默认字符集为utf-8
    default-character-set=utf8
    [mysqld]
    #设置3306端口
    port = 3306
    # 设置mysql的安装目录
    basedir=MySQL安装目录
    # 设置mysql数据库的数据的存放目录
    datadir=MySQL安装目录\data
    # 允许最大连接数
    max_connections=200
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 修改默认字符集为utf-8
    character_set_server=utf8
    # sql_mode
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
     
    
    1. 重启MySQL服务quitnet stop mysqlnet start mysql

    2. 重新登录MySQL并查看字符集

至此,MySQL安装完成

二. 用户管理

  1. 创建用户

    CREATE USER '<username>'@'<ipaddress>' IDENTFIED BY 'password';

  2. 修改密码

    ALTER USER '<username>'@'<ipaddress>' IDENTFIED BY 'password';

  3. 授权

    GRANT <操作名称> ON <数据库名>.<表名> TO '<username>'@'ipaddress';

  4. 取消授权

    REVOKE<操作名称> ON <数据库名>.<表名> FROM '<username>'@'ipaddress';

三. DDL:操作数据库和表

1. 数据库相关操作

  1. C:创建
    • 创建数据库:CREATE DATABASE 数据库名称;
    • 不存在时创建数据库:CREATE DATABASE IF NOT EXIST 数据库名称;
    • 指定字符集创建数据库:CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
  2. R:查询
    • 查询所有数据库名称:SHOW DATABASES;
    • 查询某个数据库的字符集:查询某个数据库的创建语句:SHOW CREATE DATABASE 数据库名称;
  3. U:修改
    • 修改数据库字符集:ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
  4. D:删除
    • 删除数据库,可能会报错:DROP DATABASE 数据库名称;
    • 如果数据库存在则删除:DROP DATABASE IF EXISTS 数据库名称;
  5. 使用数据库
    • 使用:USE 数据库名称;
    • 查询正在使用的数据库:SELECT DATABASES();

2. 表的相关操作

  1. C:创建

    1. 语法

      CREATE TABLE table_name(
      	<列名1> <数据类型1> [约束],
          <列名2> <数据类型2> [约束],
          ......
          <列名n> <数据类型n> [约束][主键、外键约束]
      )[存储引擎][字符集];
      
    2. 说明

      • 常用的数据类型包括Int double date datetime timestamp varchar
      • 常见约束
        1. 非空约束NOT NULL,指定该列不能为空,若空则报错
        2. 默认值DEFAULT <default_value>,没有赋值时以默认值填充
        3. 列描述COMMENT,描述列的作用,但是区分于注释
        4. 自动填充0ZEROFILL,作用在无符号整型数据类型上,如果长度未达到要求则在左边补0
        5. 主键约束PRIMARY KEY,要求主键非空且不重复,主键只包含一列时可以再定义列时定义主键,否则只能再定义完所有属性之后定义。
        6. 自增长AUTO_INCREMENT,一般和主键搭配使用
        7. 唯一约束UNIQUE,允许为NULL但不能重复,可以有多个NULL
        8. 外键约束FOREIGN KEY
          • CONSTRAINT <外键名> FOREIGN KEY (主表中的属性) REFERENCES (副表名.副表主键);
          • 外键的一般命名规则位fk_主表名A_副表名B_on_副表主键bid,它的语义为:A表在A表的bid上引用了B表的主键bid
    3. 复制表CREATE TABLE 表名 LIKE 被复制的表名称;

  2. R:查询

    • 查询数据库中所有的表名称:SHOW TABLES;
    • 查询一张表的结构:DESC 表名称;
  3. U:修改

    1. 修改表名:RENAME TO
      • ALTER TABLE <tablename> RENAME TO <newname>;
    2. 修改表的字符集
      • ALTER TALBE <表名> CHARACTER SET <字符集>;
    3. 添加一列
      • ALTER TABLE <表名> ADD <列名><数据类型>[约束];
    4. 修改列
      • ALTER TABLE <表名> CHANGE <旧列名> <新列名> <新数据类型> [约束];
      • ALTER TABLE <表名> CHANGE <列名> <新数据类型> [约束];
    5. 删除列
      • ALTER TABLE <表名> DROP <列名>;
    6. 清空表
      • DELETE FROM <表名>
  4. D:删除

    • DROP TABLE <表明> [IF EXISTS];
    • 注意区分DROP DELETE TRUNCATE的区别

四. DML:增删改表中的数据

  1. 增:insert

    1. 语法:

      INSERT INTO 表名(列名1,列名2,...列名n) VALUES(值1,值2,...值n);

    2. 注意

      • 列名和值要一一对应
      • 如果表名后,不定义列名,则默认给所有列添加值,eg:INSERT INTO 表名 VALUES(值1,值2,...值n);
      • 除了数字类型,其他类型需要使用引号(单双都可以)引起来
  2. 删:delete

    1. 语法

      DELETE FROM 表名 [WHERE 条件];

    2. 注意

      1. 如果不加条件,则删除表中所有记录。
      2. 删除所有记录
        • DELETE FROM 表名;有多少条记录就会执行多少次删除操作
        • TRUNCATE TABLE 表名;效率更高 先删除表,然后再创建一张一样的表。
  3. 改:update

    1. 语法

      UPDATE 表名 SET 列名1 = 值1, 列名2 = 值2,... [WHERE 条件];

    2. 注意

      • 如果不加任何条件,则会将表中所有记录全部修改。

五. DQL:查询表中的记录

  1. 语法

    SELECT
    	要查询的字段列表
    FROM
    	表明列表,可以是一条查询语句的执行结果
    WHERE
    	条件列表
    GROUP BY
    	分组字段
    HAVING
    	分组之后的条件
    ORDER BY
    	排序方式
    LIMIT
    	分页限定
    
    • SELECT FROM外其他都是可选的

MySQL中的数据类型

  1. 数字

    1. 整数

      • <类型>[(m)] [UNSIGNED] [ZEROFILL]
      1. tinyint 8位
      2. int 32位
      3. bigint 64位
    2. 小数

      • <类型>[(M,D)] [UNSIGNED] [ZEROFILL],M位数字位数,D位小数点后位数
      1. float
      2. double
      3. decimal
      • 注意,floatdouble 是不精准的,而decimal时精确的
  2. 字符串

    1. char(m)
      • 定长字符串,最多255个字符,m代表长度,数据不足m时,占用内存仍为m
    2. varchar(m)
      • 变长字符串,最多255个字符,m代表最大允许的长度,可以保存小于等于m个字符的字符串,占用内存小于m
    • vcarchar节省空间,char速度更快,建表时char定义在varchar之前
    1. text mediumtext longtext 更长的字符串
  3. 时间类型

    1. DATE年月日
    2. TIME时分秒
    3. YEAR
    4. DATETIME年月日时分秒
    5. TIMESTAMP年月日时分秒,如果不赋值或赋值null,默认使用系统时间赋值
  4. 枚举类型

    • enum

    • CREATE TABLE shirts (
      	name VARCHAR(40),
      	size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
      );
      INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
      
  5. 集合类型

    • set,插入时可以是set中元素的组合

    • CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
      INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
      
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值