Mysql 狂神学习笔记(一)
根据狂神的mysql视频手打笔记,只供参考。
1、分类
- 数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
- 数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
关系型数据库
- Mysql,Oracle,Sql Server,DB2,SQLlite
- 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表…
非关系型数据库
- Redis,MongDB
- 非关系型数据库,数据库管理系统!
2、Mysql(5.7版本和8.0版本)简介
- 关系型数据库管理系统
- Oracle 公司
- 最好的RDBMQ 应用软件之一
- 体积小,速度快,成本低
- 适用于中小型网站
安装建议:尽量不要使用exe,注册表不好卸载。尽可能使用压缩包安装。
3、安装mysql
MySQL安装和配置,看这一篇就够了!-KuangStudy-江湖
-
环境变量 Path—>添加mysql的bin目录
-
创建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
-
管理员打开DOM命令行
-
切到MySQL bin目录下
-
#清空服务,用于重新安装 sc delete mysql
-
执行命令
-
# 安装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 操作数据库(了解)
-
创建数据库
CREATE DATABASE IF NOT EXISTS westos
-
删除数据库
DROP DATABASE IF EXISTS westos
-
使用数据库
– tab 键的上面,如果你的表名或者字段名是一个特殊字符,就需要带‘’
USE ‘school’ -
查看数据库
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大小写不敏感
- 所有符号全英文