MySQL 管理工具
DAY 2 学习笔记:通过**“2024版MySQL数据库基础+进阶全套视频教程完整版”, 作者:一名00后程序媛,Bilibili.com **学习
MySQL以服务形式运行在window,用户通过DBMS操作MySQL。完成安装之后,默认安装了mysql Command Line Client,此工具是一个命令行形式的工具,通常会单独安装可视化DBMS工具:
- SQLyog
- Navicat for MySQL
1. MySQL Command line Client 使用
- 打开 mysql 8.0 Command Line Client
- 密码登录,建立与mysql的连接(ip/ port 3306/password) 密码错误或者mysql服务没有启动会闪退
- 退出 mysql Command Line Client:输入exit+回车
2. 可视化工具Navicat使用
- Navicat与MySQL建立连接(ip/ port 3306/password)
- 点击连接
- 选择MySQL
- 输入连接名(可以自定义,非必须)
- 输入主机:数据库所在计算机IP
- 端口:默认3306
- 用户名+密码
- 点测试连接
- 点确定
MySQL逻辑结构
MySQL可以存储数据,但是存储的数据举要按照特定结构来存储。
1. 逻辑结构
数据库软件–数据库–数据表–字段(列)[年龄,姓名,地址]
2. 记录/元组
表格中的行—一条记录(元组)
(101,小美,女,21,170,64)
SQL
SQL(Structured Query Language)结构化查询语言,用于存取,查询,更新,数据并管理关系型数据库系统。
数据库产品(如MySQL)遵循SQL的通用规范,但形成了一些数据库专有指令。
1. SQL分类
- DDL Data Definition Language
- 用于完成对数据库对象(数据库,数据表,视图,索引)的创建,删除,修改,管理。
- DML Data Manipulation Language
- 用于完成对数据表中的数据的添加,删除,修改
- 添加:数据存储到数据表
- 删除:数据从数据表移除
- 修改:数据表中数据修改
- 用于完成对数据表中的数据的添加,删除,修改
- DQL Data Query Language
- 将数据表中的数据查询出来
- DCL Data Control Language
- 完成事务管理等控制性操作
2. SQL基本语法
在MySQL Command Line Clienct/Navicat(新建查询)操作。
-
SQL指令不区分大小写
-
指令结束后都以英文**;**结束
-
SQL关键字以空格分隔
- e.g. show database
-
SQL不限制换行(可以有空格的地方就可以有换行)
创建数据库—创建数据表—添加数据
3. DDL
3.1 DDL-数据库操作
使用DDL语句创建,查询,修改,删除数据库
-
创建数据库
dbNAME是自定义的名字
create database <dbNAME>;
create database if not exist <dbNAME>;
#在创建数据库同时指定字符集(数据存储在数据库中采用的编码格式(utf8,gbk) create database <dbNAME> character set utf8;
-
查询数据库
显示当前mysql所有数据库
show databases; #显示指定的创建的数据库的SQL指令 show create database <dbNAME>
-
修改数据库
# 修改数据库字符集 # alter database <dbNAME> character set 改成的字符集; alter database <dbNAME> character set gbk;
-
删除数据库
删除数据库时会删除这个数据库中所有的数据表和表中数据
drop database <dbNAME>; drop database if exists <dbNAME>;
-
使用、切换数据库
use <dbNAME>;
3.2 数据表操作
-
创建数据表
一个表格由多列组成,每一列成为一个字段
-
创建字段:字段名 数据类型 约束
-
非空约束 not null:不能为空
-
数据类型
- int
- char(字符段长度):定长字符串
- varchar(max长度):变长字符串
-
#在数据库中操作
use database <dbNAME>;
#创造表并创造字段
Create table <tableNAME> (
NAME1 char(8) not null,
NAME2 varchar(20) not null,
NAME3 int,
NAME4 float
)
- 数据表查询
show tables;
查询表结构
desc <tableNAME>;
-
删除数据表
drop table <tableNAME>; drop table if exists <tableNAME>;
-
修改数据表
#修改表名 alter table <tableNAME> rename to <newTName>; #数据表有默认字符集,与数据库字符集一样,修改字符集: alter table<tableNAME> character set utf8; #添加字段 alter table <tableNAME> add <columnName 类型 约束>; #修改字段的名字和类型 alter table <tableNAME> change <columnName> <newcolumnName 类型 约束>; #只修改字段的类型 alter table <tableNAME> modify <columnName> 新类型 新约束; #删除字段 alter table <tableNAME> drop <columnName>
MySQL数据类型
数据表中的列中支持存放的数据类型
1.数值类型
类型 | 内存空间大小(byte) | 范围 | 说明 |
---|---|---|---|
tinyint | 1 | 有符号 (-128,127) 无符号 (0,255) | 特小整数值 |
smallint | 2 | 有符号 (-32768,32767) 无符号 (0,65535) | 小整数值 |
mediumint | 3 | 有符号 (-8388608,8388607) 无符号 (0,16777215) | 中整数值 |
int | 4 | 整数 | |
bigint | 8 | 大整数 | |
float | 4 | 单精度 | |
double | 8 | 双精度 | |
decimal | DECIMAL(M,D) 大小=M+2 | 小数 decimal(10,2)=数值一共十位,小数2位 |
2.日期类型
类型 | 格式 | 说明 |
---|---|---|
date | 2022-02-03 | 年月日 |
time | 11:13:32 | 时分秒 |
year | 2022 | 年 |
datetime | 2022-02-03 11:13:32 | 年月日时分秒 |
timestamp | 20220203 111332 | 日期+时间 |
3.字符串类型
类型 | 字符长度(字节) | 说明 |
---|---|---|
char | 0-255 | 定长字符串,char(n)数据为n个字符长 |
varchar | 0-65536 | 可变长度字符串 |
tinyblob | 0-255 | 二进制字符串 |
blob | 0-65535 | 二进制字符串 |
medium blob | 0-1677215 | 二进制字符串 |
longblob | 0-4294967295 | 二进制字符串 |
tinytext | 0-255 | 文本数据(字符串) |
text | 0-65535 | 文本数据(字符串) |
mediumtext | 0-1677215 | 文本数据(字符串) |
longtext | 0-4294967295 | 文本数据(字符串) |
字段约束
创建数据表时指定对数据表的列的数据限制性的要求
- 保证数据有效性
- 保证数据完整性
- 保证数据正确性
-
非空约束(not null)
此列的值必须提供,不能为null
-
唯一约束(unique)
此列值不能重复
-
主键约束(primary key)
非空+唯一,能够唯一标识数据表中的一条数据(行)
#创建表时添加主键约束
create table books(
ID char(4) primary key,
name varchar(10) not null,
auhor varchar(6)
);
#或者
create table books(
ID char(4),
name varchar(10) not null,
auhor varchar(6),
primary key(ID)
);
#删除数据表主键约束
alter table books drop primary key;
#创建表之后添加主键约束
create table books(
ID char(4),
name varchar(10) not null,
auhor varchar(6)
);
alter table books modify ID char(4) primary key;
-
外键约束(foreign key)
建立不同表之间的关联关系