二橘的java之始|Mysql 狂神学习笔记(一)

Mysql 狂神学习笔记(一)

根据狂神的mysql视频手打笔记,只供参考。
1、分类
  • 数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
  • 数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
关系型数据库
  • Mysql,Oracle,Sql Server,DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表…
非关系型数据库
  • Redis,MongDB
  • 非关系型数据库,数据库管理系统!
2、Mysql(5.7版本和8.0版本)简介
  1. 关系型数据库管理系统
  2. Oracle 公司
  3. 最好的RDBMQ 应用软件之一
  4. 体积小,速度快,成本低
  5. 适用于中小型网站
安装建议:尽量不要使用exe,注册表不好卸载。尽可能使用压缩包安装。
3、安装mysql
【二橘的java之始|Mysql 狂神学习笔记(一)】MySQL安装和配置,看这一篇就够了!-KuangStudy-江湖
  1. 安装包下载
  2. 环境变量 Path—>添加mysql的bin目录
  3. 创建my.ini配置文件
    [client] # 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 服务端使用的字符集默认为utf8mb4 character-set-server=utf8 # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=C:\学习资料\SQL\mysql\mysql-5.7.19-winx64\mysql-5.7.19-winx64\ # 设置mysql数据库的数据的存放目录 datadir=D:\Developer\DB\Database\mysql-5.7.31\data\ # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 允许最大连接数 max_connections=20 # 允许连接失败的次数。 max_connect_errors=10 # 严格模式 #sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES" # 默认使用“mysql_native_password”插件认证 #default_authentication_plugin=mysql_native_password # 跳过密码验证,设置密码后注释掉 #skip-grant-tables

  4. 管理员打开DOM命令行
    1. 切到MySQL bin目录下
    2. #清空服务,用于重新安装 sc delete mysql

    3. 执行命令
    4. # 安装mysql的服务 mysqld -install

      #初始化数据库文件 mysqld --initialize-insecure --user=mysql

      #启动mysql net start mysql net stop mysql

      #修改密码,不要输入密码进入 mysql -u root -p #修改密码 alter user 'root'@'localhost' identified by 'root'; #刷新权限 flush privileges;

      注释掉ini文件中跳过密码的代码 重启mysql

4、使用数据库
命令行连接!
mysql -uroot -proot --连接数据库show databases; --查看所有数据库 mysql>use school --切换数据库 use 数据库名 Database changed-- show tables; --查看数据库中所有的表 desc或者describe 表名--显示数据库中所有表的信息-- create database 数据库名exit; --退出 -- /**/

5、操作数据库
  • DDL 定义
  • DML 操作
  • DQL 查询
  • DCL 控制
操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写
5.1 操作数据库(了解)
  1. 创建数据库
    CREATE DATABASE IF NOT EXISTS westos
  2. 删除数据库
    DROP DATABASE IF EXISTS westos
  3. 使用数据库
    – tab 键的上面,如果你的表名或者字段名是一个特殊字符,就需要带‘’
    USE ‘school’
  4. 查看数据库
    SHOW DATABASES;
5.2 数据库类型 一个字节,八个二进制位,无符号数0-255
数值
  • tinyint 十分小的数据 1个字节
  • smallint 较小的数据 2个字节
  • mediumint 中等大小的数据 3个字节
  • int 标准的整数 4个字节 常用的 int
  • bigint 较大的数据 8个字节
  • float 浮点数 4个字节
  • double 浮点数 8个字节
  • decimal 字符串形式的浮点数 金融计算的时候使用
字符串
  • char 字符串固定大小 0-255
  • varchar 可变字符串 0-65535 常用的 String
  • tinytext 微型文本 2^8-1
  • text 文本串 2^16-1 保存大文本
时间日期
java.util.Data
  • data YYYY-MM-DD 日期格式
  • time HH:mm:ss 时间格式
  • datatime YYYY-MM-DD HH:mm:ss 最常用的时间格式
  • timestamp 时间戳 1970.1.1到现在的毫秒数!较为常用
  • year 年份表示
null
  • 没有值,未知
  • 不要进行计算,结果为null
5.3 数据库的字段属性
表中必须有的字段:
id 主键
‘version’ 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
Unsigned
  • 无符号的整数
  • 声明该列不为复数
zerofill
  • 0填充
  • 不足的位数,使用0来填充,int(3),5->005
自增
  • 在上一条基础加1
  • 设计唯一的主键~ index,必须整数类型
  • 可以自定义
非空 NULL not NULL
  • NULL 不填写值,默认就是null
  • not NULL 不赋值报错
默认
  • 默认的值
5.4 数据库建表
CREATE TABLE IF NOT EXISTS ’犯得上发射点‘ ( ‘id’ INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', ‘name’ VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名', PRIMARY KEY (‘id’) )ENGINE=INNODB DEFAULT CHARSET=utf8 ;

常用命令:
SHOW CREATE DATABASE school; -- 查看创建数据库的语句 SHOW CREATE TABLE student; -- 查看创建表的语句 DESC student; -- 显示表的结构

5.4.1 数据表类型
-- 关于数据库引擎engine /* INNODB 默认使用 MYISAM 早些年使用 */

MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约为2倍myisam
常规使用操作:
  • MYISAM 节约空间,速度较快
  • INNODB 安全性高,事务的处理,多表多用户操作
物理空间位置
所有的数据库文件都存储在data目录下
本质还是文件的存储!
MYSQL 引擎在物理上的区别
  • INNODB 在数据库中只有一个*.frm文件,以及上级目录的ibdata1文件
  • MYISAM对应文件
    • *.frm 表结构的定义文件
    • *.MYD 数据文件(data)
    • *.MYI 索引文件(index)
数据库字符集编码:CHARSET=utf8
5.5 修改删除表
修改
-- ALTER TABLE 旧表名 RENAME AS 新表名 ALTER TABLE student RENAME AS student1 -- ALTER TABLE 表名 ADD 字段名 列属性 ALTER TABLE student ADD age INT(11)-- 修改表的字段(重命名,修改约束!) -- ALTER TABLE 表名 MODIFY 字段名 列属性[] ALTER TABLE student MODIFY age VARCHAR(11) -- 修改约束 -- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[] ALTER TABLE student CHANGE age age1 INT(1) -- 字段重命名-- 删除表的字段 -- ALTER TABLE 表名 DROP 字段名 ALTER TABLE student DROP age1

删除
-- 删除表 DROP TABLE IF EXISTS student

注意点:
  • 字段名加单引号 ’ ’
  • 注释 – /**/
  • sql大小写不敏感
  • 所有符号全英文

    推荐阅读