mysql基础

Mysql

1. 什么是mysql

​ MySQL是一个**关系型数据库管理系统****,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

2.安装mysql

2.1.下载地址

MySQL-5.7 64下载

https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip

2.2.安装步骤

  1. 解压zip包,并记住路径

  2. 添加环境变量(与jdk环境变量类似)

  3. 在mysql的安装文件下新建my.ini文件

  4. 编辑my.ini文件,注意路径

    [mysqld]
    basedir=E:\mysql\mysql-5.7.19\
    datadir=E:\mysql\mysql-5.7.19\data\
    port=3306
    skip-grant-tables
    
  5. 启动管理员模式下的CMD,并将路径切换至mysql下的bin目录,然后输入mysql -install

  6. 在输入 mysql -initialize-insecure --user=mysql

  7. 然后再次启动mysql然后用命令 mysql -u root -p进入mysql管理界面(密码可为空)

  8. 进入界面后更改root密码

    update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
    

    (最后输入 flush privileges;刷新权限)

  9. 修改 my.ini文件删除最后一句 skip-grant-tables

  10. 重启mysql即可正常使用

    net stop mysql
    net start mysql
    

2.3出现的问题

  1. 在mysql的bin目录下面执行: mysqld --install

    报错:

    信息如下:

    Install/Remove of the Service Denied


    解决办法:

    打开cmd.exe程序的时候选择“用管理员身份打开”。

  2. 安装MySql是出现: The service already exists! The current server installed;

    【解决方法】

    1. 管理员运行CMD

    2. 执行sc query mysql

    3. 执行sc delete mysql

在这里插入图片描述

  1. 安装MySQL时出现mysqld: Can’t create directory ‘E:\mysql\mysql-5.7\data’ (Error)

    原因:my.ini文件中的basedir(设置mysql的安装目录)、datadir(设置mysql数据库的数据的存放目录)与MySQL解压后的路径不一致

    解决办法:

    将basedir=E:\Software\mysql-5.7.24-winx64 改为 basedir=D:\Software\mysql-5.7.24-winx64 (改为MySQL解压后的路径)

    将datadir=E:\Software\mysql-5.7.24-winx64\data 改为 datadir=D:\Software\mysql-5.7.24-winx64\data (改为MySQL解压后的路径\data)

4.安装MySQL时出现mysql -u root -p Enter password: ** ERROR 2003 (HY000): Can’t connect to MYSQLserver on ‘localhhost’(10061)

​ 原因:上一次net stop mysql 后未开启
​ 以管理员身份启动cmd命令行
​ 输入net start mysql 报错:mysql 服务器无法启动

在这里插入图片描述

​ 解决方案:
​ mysqld --initialize 初始化data目录后重新输入net start mysql命令即可。

3.基本命令操作

在这里插入图片描述

在这里插入图片描述

4. 可视化工具sqlyog的安装

4.1 sqlyog下载链接:

链接: https://pan.baidu.com/s/1D_iRna8V90omfHsKHyeBtg 提取码: bqht

复制这段内容后打开百度网盘手机App,操作更方便哦

4.2 安装步骤

全部下一步,安装路径自己选,证书密匙上网查

5.操作数据库

  1. 创建数据库

    CREATE DATABASE [IF NOT EXISTS] school;
    
  2. 删除数据库

    DROP DATABASE [IF EXISTS] school
    
  3. 使用数据库

    USE school
    
  4. 查看数据

    SHOW DATABASE --查看所有的数据库
    

6.数据类型

数值
  • tinyint 十分小的数据 1个byte
  • smallint 较小的数据 2个byte
  • mediumint 中等大小的数据 3个byte
  • int 标准的整数 4个byte 常用的
  • bigint 较大的数据 8个byte
  • float 浮点数(单) 4个byte
  • double 浮点数(双) 8个byte
  • deciaml 字符串形式的浮点数 金融计算的时候使用

字符串

  • char 定长字符串 0-255 bytes
  • varchar 可变字符串 0-65535 bytes
  • tinytext 短文本串 0-255 bytes
  • text 文本串 0-65535 bytes
  • mediumtext 中长文本串 0-16777215 bytes
  • longtext 超长文本串 0-4294967295 bytes

日期

  • date YYYY-MM-DD 日期格式
  • time HH:mm:ss 时间格式
  • year YYYY 年份
  • datetime YYYY-MM-DD HH:mm:ss 最常用
  • timestamp 时间戳 1970.1.1 到现在的毫秒数 也较为常用

null

  • 没有值,未知
  • 注意,不要使用null进行运算,结果为null

7.表的操作

7.1创建表

属性

在这里插入图片描述

unsigened:

  • 无符号的整数
  • 声明了该列不能声明为负数

zerofill

  • 0填充
  • 不足的数,使用0来填充

自增

  • 通常理解为自增,自动在上一条记录的基础上+1(默认)
  • 通常用来设计唯一的主键~ index, 必须是整数类型
  • 可以自定义设计主键自增的起始值和步长

7.2 语法

CREATE TABLE [IF NOT EXISTS] `表名`(
    `字段名` 列类型 [属性][索引][注释],
    `字段名` 列类型 [属性][索引][注释],
    `字段名` 列类型 [属性][索引][注释],
    ......
    PRIMARY KEY(`字段名`)
    )

示例

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

7.3 查看常用命令

SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TANLE student -- 查看student数据表的定义语句
DESC student -- 查看表的结构

7.4数据库引擎MYISAM和INNODB的区别

MYISAMINNODB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大,约为前者的2倍

常规使用操作

  • MYISAM 节约空间,速度较快
  • INNODB 安全性高,事务的处理,多表多用户操作

7.5 在物理空间的位置

  • 所有的数据库文件都在data目录下,本质还是文件的存储!
  • MYSQL引擎在物理文件上的区别
    • INNODB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
    • MYISAM
      • *.frm 表结构的定义文件
      • *.MYD 数据文件(data)
      • *.MYI 索引文件(index)

7.6 设置数据库的字符集编码

CHARSET=utf8
  • 不设置的话,会是mysql默认的字符集编码~(不支持中文)
  • MYSQL的默认编码是Latin, 不支持中文
  • 在my.ini 中配置默认的编码
character-set-server=utf8

7.7 表的修改与删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cjvmAltO-1596337610214)(C:\Users\吴泉明\Pictures\mysql\微信截图_20200728185103.png)]

-- 删除表
DROP TABLB IF EXISTS teacher1

注意点:

  • 所有是创建和删除操作尽量加上判断,以免报错
  • ``字段名,使用这个包裹!
  • 注释–/**/
  • sql关键字大小写不敏感,建议写小写
  • 所有的符号全部用英文!

7.8添加外键

定义语法

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)

REFERENCES tbl_name (index_col_name, ...)

[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。

ON DELETE、ON UPDATE表示事件触发限制,可设参数:

① RESTRICT(限制外表中的外键改动,默认值)

② CASCADE(跟随外键改动)

③ SET NULL(设空值)

④ SET DEFAULT(设默认值)

⑤ NO ACTION(无动作,默认的)

外键约束

  • 父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;
  • 父表更新时子表也更新,父表删除时子表匹配的项也删除。

建议:

  • 以上的都是物理外键,数据库级别的外键,我们不建议使用!(避免数据库过多造成困扰)

最佳实践:

  • 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
  • 我们想使用多张表的数据,想使用外键(程序去实现)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值