MySQL基础学习
一些电脑快捷键:
-
进入电脑自带的计算器(进入即可自行设置程序员专用或其它):
Windows+R 输入calc
-
进入电脑自带的绘图软件:
Windows+R 输入mspaint -
快速回到桌面:
Windows+M -
快速进入我的电脑:
Windows+E -
打开字段查找或替换:
Windows+F -
将所有打开的窗口最小化:
Windows+D -
进入控制面板:
Windows+U
1.初识MySQL
1.1.为什么学习数据库
数据库是所有软件体系中最核心的存在
1.2.什么是数据库
数据库(DB,DataBase)
概念:数据仓库;软件;安装在操作系统(windows,linux,max…)之上的!可以存储大量的数据(500万以下的)
作用:存储数据,管理数据。
1.3.数据库分类
- 关系型数据库:SQL
例子:MySQL,Oracle,SQL Server,DB2,Sqllite
存储方式:通过表和表之间,行和列之间的关系进行数据的存储,比如学员信息表,考勤表等。
- 非关系型数据库:NoSQL(not only sql)
例子:redis,mongdb
存储方式:对象存储,通过对象的自身的属性来决定。
DBMS(数据库管理系统):数据库的管理软件,科学有效的管理我们的数据,维护和获取数据。
1.4.MySQL(关系型数据库管理系统RDBMS)
MySQL是一个关系型数据库管理系统
前世:瑞典MySQL AB公司
今生:属于Oracle旗下产品
MySQL是最好的RDBMS应用软件之一,是一个开源的数据库软件
体积小,速度快,总体拥有成本低,事业单位招人成本比较低。
可以应用在中小型网站或者大型网站,集群
1.5.安装MySQL
详情参照另一篇博客链接:
https://blog.csdn.net/m0_37775931/article/details/112515317
1.6.安装SQLyog
SQLyog是一个快速而简洁的图形化管理MySQL数据库
的工具。
MySQL端口号:3306
基字符集:utf8
数据库排序规则:utf8_general_ci
1.7.连接数据库
-- 启动mysql服务
net start mysql
-- 进入mysql命令行
mysql -u root -p密码
mysql -u root -p后回车然后输入密码
-- 修改用户密码,以密码为123456为例
update mysql.user set authentication_string=password(‘123456’) where user=‘root’ and Host=‘localhost’;
-- 刷新权限
flush privileges;
-- 注意所有的sql语句都以分号(;)结尾
-- ==========================================================================================
-- 查看所有数据库
show databases;
-- 进入或切换到某个数据库
use 库名;
-- 查询该数据库中的表
show tables;
-- 查看某张表的内容
select * from 表名;
-- 注意,可以给表名和字段名两边添加``(键盘tab键上方),防止该表名或字段名与一些敏感词汇冲突。
DDL | 数据库定义语言 |
---|---|
DML | 数据库管理语言 |
DQL | 数据库查询语言(重点) |
DCL | 数据库控制语言 |
2.操作数据库
说明:操作数据库–>操作数据库中的表–>操作数据库中的表的数据
mysql的关键字不区分大小写
[ ]中括号里面的内容代表可选项
2.1.操作数据库
-- 创建数据库
create database [if not exists] 库名;
-- 删除数据库
drop database if exists 库名;
-- 使用数据库
use 库名;
-- 查看所有的数据库
show databases;
2.2.数据库列类型
- 数值型
tinyint | 十分小的数据 | 1个字节 |
---|---|---|
smallint | 较小的数据 | 2个字节 |
mediumint | 中等大小 | 3个字节 |
int | 标准的整数(常用) | 4个字节 |
bigint | 较大的数据 | 8个字节 |
float | 浮点数 | 4个字节 |
double | 浮点数 | 8个字节 |
decimal | 字符串形式的浮点数 | 金融计算的时候,一般使用decimal |
- 字符串
char | 字符串固定大小的 | 0~255 |
---|---|---|
varchar | 可变字符串(常用) | 0到65535 |
tinytext | 微型文本 | 2的8次方-1 |
text | 文本串 | 2的16次方-1 |
- 时间日期
date | YYYY-MM-DD,日期 |
---|---|
time | HH:mm:ss 时间格式 |
datetime | YYYY-MM-DD HH:mm:ss 最常用的 |
timestamp | 时间戳,1970.1.1到现在的毫秒数! |
year | 年份表示 |
- null
没有值,未知
注意:不能使用NULL进行运算。
2.3.数据库的字段属性
unsigned | 无符号的整数 不能声明为负数 |
---|---|
zerofill | 0填充,不足的位数,使用0来填充 |
auto_increment | 自增,可以自定义设计 |
not null | 非空,如果不给赋值,就会报错 |
default | 设置默认的值 |
2.4.创建表的注意事项
表的名称和字段尽量使用``(tab键上面)括起来,comment 后的内容使用单引号。例如:
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
2.5.关于数据库引擎
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为MYISAM两倍 |
常规的使用操作:
MYISAM 节约空间,速度较快
INNODB 安全性高,支持事务的处理以及多表多用户操作
MySQL引擎在物理文件上的区别:
INNODB:在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件。
MYISAM:.frm表结构的定义文件,.MYD 数据文件,.MYI 索引文件
设置数据库表的字符集编码
CHARSET=utf8
不设置的话,会使mysql默认的字符集编码(不支持中文)
总结:所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库,所以说数据库存储的本质还是文件的存储!
2.6.修改删除表
修改表名:ALTER TABLE 旧表名 RENAME AS 新表名;
增加表的字段:ALTER TABLE 表名 ADD 字段名 列属性
修改表的字段类型和约束:ALTER TABLE 表名 MODIFY 字段名 新列属性
修改表的字段名:ALTER TABLE 表名 CHANGE 字段名 新字段名 新列属性
删除表的字段:ALTER TABLE 表名 DROP 字段名
删除表:DROP TABLE IF EXISTS 表名
总结:
change用来字段重命名
modify不用来字段重命名,只能修改字段类型和约束
所有的创建和删除操作尽量加上判断(if exists or if not exists),以免报错
3.MySQL数据管理
3.1.外键(了解即可)
- 方式一:在创建表的时候,增加约束
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2)