MySQL(1/3)

基本命令行操作

命令行连接

mysql -uroot -p

回车,然后在下一行输入密码,或者直接在p后写密码

修改密码

updata mysql.user set authentication_string=password('原密码') where user='root' and Host = 'localhost';

刷新权限

flush privileges;

查看所有数据库

show databases;

切换数据库

use 数据库名

成功会提示Database changed

查看数据库中所有表

show tables;

显示数据库中指定的表的信息

decribe 表名;

创建一个数据库

create darabase 数据库名;

退出连接

exit;

注意所有语句要用分号结尾,不分大小写

注释

#注释内容 --注释内容 /*注释内容*/

数据库语言

DDL 定义

DML 操作

DQL 查询

DCL 控制

CRUD增删改查

操作数据库

操作数据库>操作数据库中的表>操作数据库中表的数据

1.创建数据库

create database (if not exists) 数据库名

2.删除数据库

drop database (if exists) 数据库名

3.使用数据库

use `数据库名`

如果表明或者字段名是一个特殊字符,就需要带``

4.查看数据库

show database

数据库的列类型

数值

tinyint 十分小的数据 1个字节

smallint 较小的数据 2个字节

mediumint 中等大小的数据 3个字节

int 标准的整数 4个字节

bigint 较大的数据 8个字节

float 浮点数 4个字节

double 浮点数 8个字节

decimal 字符串形式的浮点数 金融计算的时候一般使用

字符串

char 字符串固定大小 0-255

varchar 可变字符串 0-65535 即String

tinytext 微型文本 0-255

text 文本串 0-65535 保存大文本

时间日期

data YYYY-MM-DD,日期格式

time HH:mm:ss,时间格式

datatime YYYY-MM-DD HH:mm:ss 最常用的时间格式

timestamp 时间戳,1970.1.1到现在的毫秒数

year 年份

null

未知数

不要使用null来计算

数据库的字段属性

Unsigned

无符号整数

声明该列不能声明为负数

zerofill

0填充的

不足的位数使用0来填充如5,005

非空 NULL not null

设置后字段不能为(null)

默认(defult)

默认值

自增

用来设计唯一的主键,主键类似于index,必须是整数类型

自动在上一条记录的基础上+1(默认)

创建数据库表

例子

sql 复制代码
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` 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

常用命令

sql 复制代码
SHOW CREATE DATABASE school;  -- 查看创建数据库的语句
SHOW CREATE TABLE student;    -- 查看student数据表的定义语句
DESC student -- 显示表的结构

MylSAM和Innodb的区别

在物理空间存在的位置

所有的数据库文件都在data目录下,本质还是文件存储

·innodb在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件

·MYISAM对应文件

*.frm 表结构的定义文件

*.MYD 数据文件(data)

*.MYI 索引文件(index)

修改和删除数据库表字段

sql 复制代码
-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher rename as teacher1
-- 增加表的字段 alter table 表名 add 字段名 列属性
alter table teacher1 add age int(3)

-- 修改表的字段(重命名,修改约束)
-- alter table 表名 modify 字段名 列属性[]
alter table teacher1 modify age varchar(11)  -- 修改约束
-- alter table 表名 change 新名 列属性[]
alter table teacher1 change age age1 int(1) -- 字段重命名

-- 删除表的字段
alter table teacher1 drop age1

-- 删除表
drop table if exists teacher1

change和modify的区别

数据库级别的外键

第一种添加外键的方式

sql 复制代码
create table if not exists `grade` (
	`gradeid` int(10) not null auto_increment comment '年级id',
	`gradename` varchar(50) not null comment '年级名称',
	primary key(`gradeid`)
)engine=innodb default charset=utf8

-- 定义外键key
	-- 给这个外键添加约束(执行引用) references 引用
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` 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 '邮箱',
	`gradeid` int(10) not null comment '年级id',
	PRIMARY KEY(`id`),
	key `FK_gradeid` (`gradeid`),
	constraint `FK_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

第二种添加外键的方式,推荐

sql 复制代码
create table if not exists `grade` (
	`gradeid` int(10) not null auto_increment comment '年级id',
	`gradename` varchar(50) not null comment '年级名称',
	primary key(`gradeid`)
)engine=innodb default charset=utf8

-- 定义外键key
	-- 给这个外键添加约束(执行引用) references 引用
CREATE TABLE IF NOT EXISTS `student` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pswd` 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 '邮箱',
	`gradeid` int(10) not null comment '年级id',
	PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

alter table `student` add constraint `FK_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`);

公式 alter table 表 add constraint 约束名 foreign key (`作为外键的列`) references 哪个表(哪个字段)

insert语句

语法:insert into `表名` (字段1,字段2....) values (值1)(值2)(.....)

主键自增可以省略

不写字段就会一一匹配

update语句

update 表名 set 列名1=新值,列名2=新值.... where 约束条件

如果没有约束条件默认给全部列替换新值

删除

delete

语法:delete from 表名 (where条件)

无条件全部删除,有条件删除满足条件数据

truncate命令

作用:完全清空一个数据库表,表的结构和索引约束不会变

语法:truncate 表名

二者异同

相同点:都能删除数据,都不会删除表结构

不同:

1.truncate 重置设置 自增列计数器会归零,delete不会

2.truncate 不会影响事务

相关推荐
2302_1114 小时前
java依赖小结
java·运维·数据库
听到微笑4 小时前
Elasticsearch 如何存储与检索海量向量
数据库·elasticsearch
海浪仙人掌5 小时前
速动比率怎么分析?速动比率分析有哪些注意事项?
大数据·数据库·人工智能
企业数字化笔记5 小时前
固定资产历史数据怎么导入系统?Excel模板、字段映射和数据校验
android·java·数据库·后端
还是奇怪5 小时前
OpenAI GPT-5.6 构建指南拆解:创业公司如何用模型选择与 Responses API 降低 Agent 成本
java·数据库·人工智能·gpt
可涵不会debug5 小时前
LangChain 文本分割器详解:字符分割、Token 分割、硬约束递归分割实战
java·前端·数据库
风哥2号5 小时前
数据库教程FGMT21‑Oracle RAC+DG生产实战(1):Oracle19c/26ai for RHEL8/9安装配置+补丁
数据库·oracle
海鸥-w5 小时前
事务四大特性
数据库
旺仔不是程序员5 小时前
致命索引失效:索引列运算与函数索引不匹配
数据库·后端·面试
Htr_5 小时前
Cortex 使用指南:开源 API 知识层
前端·数据库·人工智能·重构·计算机外设