MySQL知识汇总(第一篇)基本命令+常用类型与属性+外键+DML语言

前言:部分内容学习自B站视频(https://www.bilibili.com/video/BV1NJ411J79W?p=20),
部分内容参考自《MySQL必知必会》
本文用于回顾MySQL知识点

一、MySQL基本命令

1.连接:

进入mysql\bin下,打开cmd

mysql -h 服务器主机地址 -u 用户名 -p[用户密码]
在这里插入图片描述
或利用默认的服务器主机地址,localhost
在这里插入图片描述
2.退出:

exit;或\q;
在这里插入图片描述
在这里插入图片描述
3.寻求帮助:

? 命令关键词;
在这里插入图片描述
4.注释:

(1)--注释内容

(2)/*注释内容*/表示注释

跟在命令后面,具有解释说明的作用

二、基本的数据库操作命令

1.创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名;

具体例子:
CREATE DATABASE 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci;

2.删除数据库:DROP DATABASE [IF EXISTS] 数据库名;

3.显示所有数据库:SHOW DATABASES;

4.修改root用户密码:UPDATE user SET password = password(‘123456’) WHERE user = ‘root’;

5.刷新数据库:FLUSH PRIVILEGES;

6.打开某个数据库:USE 数据库名;

7.显示创建数据库的语句:SHOW CREATE DATABASE 数据库名;

二、数据库中常用的列类型

并不全,例如还有二进制数据类型,此处只列举了常用的,具体可参考《MySQL必知必会》

1.数值:

类型描述占用空间
tinyint十分小的整数1个字节
smallint较小的整数2个字节
mediumint中等大小的整数3个字节
int标准的整数4个字节
bigint较大的整数8个字节
float浮点数4个字节
double浮点数8个字节
decimal字符串形式的浮点数,常用于金融计算字符串形式

2.字符串:

类型描述占用空间
char定长的字符串0~255
varchar可变长字符串0~65535
tinytext微型文本2^8 - 1
text文本2^16 - 1

3.时间日期:

类型描述格式
date日期格式YYYY-MM-DD
time时间格式HH:MM:SS
datetime日期时间格式YYYY-MM-DD HH:MM:SS
timestamp时间戳,1970.1.1到现在的毫秒数数值
year年份数值

三、常用数据字段属性

属性名称描述作用
UnSigned无符号的不允许出现负数
ZeroFill0填充的不足位用0填充,如int(3),5则为005
Auto_InCrement自增在上一条记录的此属性值上加1,也可设置初始值和步长
NULL与NOT NULL允许为空和不允许为空能否不插入此属性的数据
DEFAULT默认的设置默认值

四、基本的表操作命令

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 '密码',
  `birthday` DATETIME DEFAULT NULL COMMENT '生日',
  `gradeid` INT(10) NOT NULL COMMENT '学生的年级',
   PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

格式:

CREATE TABLE [IF NOT EXISTS] `表名` (
	`字段名` 列类型 [属性] [索引] [注释],
	`字段名` 列类型 [属性] [索引] [注释],
	...,
	`字段名` 列类型 [属性] [索引] [注释]
	PRIMARY KEY(`主键名`)
)[表的引擎][表的字符集][注释]

2.查看数据表的定义语句:SHOW CREATE TABLE 表名;

3.显示数据库中所有表:SHOW TABLES;

4.显示某数据库的表中各列信息:
DESCRIBE 表名;

DESC 表名;

6.表的类型:: MyISAM , InnoDB , HEAP , BOB , CSV等…

常用的MyISAM和InnoDB类型比较

MyISAMInnoDB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大

常规使用操作:

  • MYISAM:节省空间,速度较快
  • INNOBD:安全性高,支持事务处理,多表多用户操作

7.数据库在物理空间的存储位置:

所有数据库都存在data目录下,一个文件夹对应一个数据库,本质还是文件的存储
在这里插入图片描述在这里插入图片描述

8.修改表名称:ALTER TABLE 表名 RENAME AS 新表名;

9.增加表的字段:ALTER TABLE 表名 ADD `字段名` 列类型 [属性] [索引] [注释]

10.修改表的字段:

  • 重命名字段:
    ALTER TABLE 表名 CHANGE 字段名 新字段名

  • 修改字段约束:
    ALTER TABLE 表名 MODIFY 字段名 列类型 [属性] [索引] [注释]

  • 删除字段:
    ALTER TABLE 表名 DROP 字段名

11.删除表:DROP TABLE [IF EXISTS] 表名;

五、外键

1.创建表时指定外键:

CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
	`gradedean` VARCHAR(20) NULL DEFAULT 'wait' COMMENT '年级主任',
	PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8



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 '密码',
  `birthday` DATETIME DEFAULT NULL COMMENT '生日',
  `gradeid` INT(10) NOT NULL COMMENT '学生的年级',
  PRIMARY KEY (`id`),
  KEY `FK_gradeid` (`gradeid`),
  CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

2.已创建表后,修改表时指定外键:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 被引用的表名(字段名)

CREATE TABLE `grade`(
	`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
	`gradedean` VARCHAR(20) NULL DEFAULT 'wait' COMMENT '年级主任',
	PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8



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 '密码',
  `birthday` DATETIME DEFAULT NULL COMMENT '生日',
  `gradeid` INT(10) NOT NULL COMMENT '学生的年级',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

注:

  • 删除有外键关系的表时,需先删除有引用的的表(从表),然后再删除被引用的表(主表)
  • 不建议使用外键与级联,一切外键都可在应用层程序中解决
  • 外键过多,每次DELETE或UPDATE时,都必须考虑外键的约束,会造成麻烦与混乱

六、数据操纵语言(DML语言)

(1)增加(INSERT)

1.插入一行:

INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …);

INSERT INTO `grade` (gradename, gradedean) 
VALUES ('a1', 'zlc1'); 

2.插入多行:

INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …), …;

INSERT INTO `grade` (gradename, gradedean)
VALUES ('a2', 'zlc2'),
       ('a3', 'zlc3');

(2)修改(UPDATE)

1.修改一个字段:

UPDATE 表名 SET 字段名 = 新值 WHERE 条件

UPDATE `grade` SET `gradename` = 'b1' WHERE gradeid = 1;

2.修改多个字段:

UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2, … WHERE 条件

UPDATE `grade` SET `gradename` = 'aa1', `gradedean` = 'zzlc1' WHERE `gradeid` = 1;

(3)删除(DELETE)

1.删除表中指定行:

DELETE FROM 表名 WHERE 条件;

DELETE FROM grade WHERE gradeid = 2;

2.删除表中全部行(表的结构和索引约束不变):

TRUNCATE 表名;

TRUNCATE grade;

3.DELETE FROM与TRUNCATE删除整表数据的区别:

相同点:都能删除表的所有行,保留表的结构

不同点:

  • TRUNCATE会重新设置自增列,计数器归零
  • TRUNCATE不会影响事务
  • TRUNCATE删除整表的行时效率高

另一个知识:

DELETE FROM删除整表后,重启数据库

  • InnoDB:自增列会从1开始(因为此计数值是存在与内存中)
  • MyISAM:自增列仍从之前数值延续(因为此计数值存在于文件中)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值