MySQL001:第一次接触与表的相关操作

MySQL 001

第一种登录,直接密码在外,
mysql -h 127.0.0.1 -uroot -p

mysql :mysql数据库命令
-h : 后面加上服务器IP
127.0.0.1: 本地计算机IP地址
-u: 后面接用户名
root: 此处用root用户登录
-p: 后面跟密码
在这里插入图片描述

第二种登录:密码隐藏

mysql -uroot -p
在这里插入图片描述

创建数据库,删除数据库 CREATE TABLE && SHOW && CREATE DATABASE
DROP DATABASE TEST2_DB;

SHOW DATABASES;

CREATE DATABASE TEST2_DB;

在这里插入图片描述

查看新建的数据库与其中的表 USE && SHOW && SHOW COLUMNS FROM && DESCRIBE && DESC
SHOW DATABASES; 

USE TEST_DB;

SHOW TABLES;

SHOW COLUMNS FROM MYTEST_TABLE;

DESCRIBE MYTEST_TABLE;

在这里插入图片描述

CREATE TABLE t_class(
classno INT,
cname VARCHAR(20),
loc VARCHAR(40),
stucount INT);

DESCRIBE t_class

DESC T_CLASS;

DESCRIBE 可以缩写为DESC
在这里插入图片描述

HELP SHOW
HELP SHOW;

在这里插入图片描述

部分SHOW
SHOW TABLES;

SHOW CREATE TABLE MYTEST_TABLE;

在这里插入图片描述

\G显示规范格式

在这里插入图片描述

修改表名 ALTER TABLE && RENAME
ALTER TABLE t_class RENAME tab_class;
desc tab_class;

ALTER TABLE TAB_CLASS RENAME tac_class;
DESC TAC_CLASS;

在这里插入图片描述
在这里插入图片描述

删除表 DROP TABLE
DROP TABLE TAC_CLASS;

在这里插入图片描述

增加字段,在表的最后一个位置增加 ALTER TABLE && ADD
ALTER TABLE TAC_CLASS ADD advisor VARCHAR(20);

在这里插入图片描述

删除字段 ALTER TABLE && DROP
ALTER TABLE TAC_CLASS DROP advisor;

在这里插入图片描述

增加字段,在表的第一个位置增加 ALTER TABLE && ADD
ALTER TABLE TAC_CLASS ADD advisor VARCHAR(20) FIRST;

在这里插入图片描述

增加字段,在指定字段之后添加 ALTER TABLE && ADD && AFTER
ALTER TABLE TAC_CLASS ADD advisor VARCHAR(15) AFTER CLASSNO;

在这里插入图片描述

修改字段—修改字段的名字 ALTER TABLE && CHANGE
ALTER TABLE TAC_CLASS CHANGE CLASSNO CLASSNOID INT;
DESCRIBE TAC_CLASS;

在这里插入图片描述

修改字段—只修改字段类型 ALTER TABLE && MODIFY
ALTER TABLE tac_class MODIFY classno VARCHAR(10);
修改字段—同时修改字段的名字和类型 ALTER TABLE && CHANGE
ALTER TABLE tac_class CHANGE classno classid VARCHAR(25);
DESCRIBE TAC_CLASS;

在这里插入图片描述

修改字段—修改字段顺序
移动到表头 ALTER TABLE && MODIFY && FIRST
ALTER TABLE tac_class MODIFY cname varchar(20) FIRST;

在这里插入图片描述

移动到指定字段之后 ALTER TABLE && MODIFY && AFTER
ALTER TABLE tac_class MODIFY stucount int AFTER cname;

在这里插入图片描述

操作表的约束
完整性约束条件
PRIMARY KEY标识该属性为该表的主键,可以唯一的标识对应的元组
FROEIGN KEY标识该属性为该表的外键,是与之联系的某表的主键
NOT NULL标识该属性不能为空
UNIQUE标识该属性的值是唯一的
AUTO_INCREMENT标识该属性的值是自动增加的
DEFAULT为该属性设置默认值
设置表字段的非空约束 NOT NULL

创建时对某些字段加入NOT NULL约束条件,如果用户插入的记录中该字段为空值,直接报错

CREATE TABLE t_class(
classno INT(11) NOT NULL,
cname VARCHAR(20),
loc VARCHAR(40),
stucount INT(11)
);

SHOW TABLES;

SHOW COLUMNS FROM T_CLASS;

在这里插入图片描述

设置表字段的默认值 DEFAULT

向数据库表中插入一条新记录的时候,如果没有为某些字段赋值,数据库系统自动为其写入默认值

 CREATE TABLE x_class(
 classno INT(11) NOT NULL,
 cname VARCHAR(20) DEFAULT 'SDSSD',
 loc VARCHAR(40),
 stucount INT(11)
 );

 SHOW COLUMNS FROM X_CLASS;

在这里插入图片描述

设置表字段唯一约束 UNIQUE

当数据库表中某个字段的内容不允许重复的时候,可以使用唯一约束进行设置,唯一约束在创建的时候为某些字段加入UNIQUE即可实现

INSERT INTO a_class(classno,cname,loc,stucount) VALUES(2,'class_3','loc_4',4);

DESC A_CLASS;

SELECT * FROM A_CLASS;

UNIQUE标识的字段,被重复插入重复值得新记录的时候报错
在这里插入图片描述

设置表字段的主键约束 PRIMARY KEY
什么是主键

主键用来标识每个记录,每个记录的主键值都不同
设置表的主键是指创建表时设置某个字段为该表的主值
主键必须是非空值
主键可以是单一的字段,也可以是多个字段的组合

单字段主键 && 插入新记录 INSERT INTO && VALUES
CREATE TABLE b_class(
stuno INT PRIMARY KEY,
sname VARCHAR(20),
sage INT,
sgender VARCHAR(4)
);

INSERT INTO b_class VALUES(1,'FRAND',25,'D');

INSERT INTO b_class VALUES(1,'Alan',19,'f');

SELECT * FROM B_CLASS;

在这里插入图片描述

多字段主键 CONSTRAINT
CREATE TABLE c_class(
stuno INT,
sname VARCHAR(20),
sage INT(10),
sgender VARCHAR(4),
CONSTRAINT pk_stuno_sname PRIMARY KEY(stuno,sname)
);

DESCRIBE C_CLASS;

INSERT INTO C_CLASS VALUES(1,'JACK',15,'A');
INSERT INTO C_CLASS VALUES(1,'ALAN',19,'F');
INSERT INTO C_CLASS VALUES(2,'LINDA',20,'B');

INSERT INTO C_CLASS VALUES(2,'LINDA',25,'C');

SELECT * FROM C_CLASS;

主键值必须唯一确定
在这里插入图片描述

设置表字段值自动增加 AUTO_INCREMENT

AUTO_INCREMENT是MySQL唯一拓展的完整性约束,当为数据库表插入新记录时,字段上的值会自动生成唯一的ID。一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型,由于生成唯一ID,通常会同时设置为PK约束(主键)

CREATE TABLE d_class(
classno INT(11) PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20),
loc VARCHAR(40),
stucount INT(11)
);

DESCRIBE D_CLASS;

INSERT INTO D_CLASS VALUES(15,'ALAN','F',20);
INSERT INTO D_CLASS VALUES(25,'FRIEND','A',25);

指定前面没有出现过的插入值的时候,不进行自动增长
在这里插入图片描述

插入值为0或者NULL时 使用自动增长列
在这里插入图片描述

设置表字段的外键约束 FOREIGN KEY

外键(FOREIGN KEY,FK),是表的一个特殊字段,外键约束用于保证多个表(通常为两个表)之间的参照完整性,即构建与两个表字段之间的参照关系

设置外键的两个表之间具有父子关系,即字表中某个字段的取值范围由父表确定

班级表和学生表,学生表有一个班级编号classno,其依赖于班级表的主键,这样字段classno就是学生表的外键,通过该字段,班级表与学生表建立了关系

设置FK约束的时候,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以设置为NULL

设置外键时,子表外键的数据类型必须与该外键所依赖的父表的主键的数据类型保持一致

建立存在主键的父表
CREATE TABLE e_class(
classno INT(11) PRIMARY KEY,
cname VARCHAR(20),
loc VARCHAR(40),
stucount INT(11)
);

DESC E_CLASS;

在这里插入图片描述

依赖于此父表设置带外键的子表 CONSTRAINT && FOREIGN KEY && REFERENCES
CREATE TABLE e_student(
stuno INT PRIMARY KEY,
sage INT,
sgender VARCHAR(20),
classno INT,
CONSTRAINT fk_classno FOREIGN KEY(classno) REFERENCES e_class(classno)
);

SHOW COLUMNS FORM E_CLASS;
SHOW COLUMNS FORM E_STUDENT;

INSERT INTO E_CLASS VALUES(15,'CS192','HEBUT',28);
INSERT INTO E_STUDENT VALUES(195779,19,'ALAN',15);
INSERT INTO E_STUDENT VALUES(195778,19,'HANZONG',15);

INSERT INTO E_STUDENT VALUES(195780,20,'ZENGBO',14);

在这里插入图片描述

父表没有任何记录的时候不能直接插入子表的记录

先插入父表的记录(班级),再插入子表的记录(这个班级的一个学生),如果classno不一致(插入的不是这个班级的学生)会报错
在这里插入图片描述

查看mysql支持的存储引擎
SHOW ENGINES;

SHOW ENGINES \G;

engine: 存储引擎名称
support : yes 系统支持该存储引擎 no 不支持
default : 系统默认支持的存储引擎
transactions : 系统引擎是否支持事务 yes 支持, no 不支持
XA: 存储引擎所支持的分布式是否符合XA规范,yes 支持 no 不支持
savepoints : 存储引擎是否支持事务处理的保存点, yes支持,no 不支持

在这里插入图片描述
另一种办法查看所默认支持的存储引擎

SHOW VARIABLES LIKE 'default_storage_engine';

在这里插入图片描述

默认存储引擎: InnoDB存储引擎

MySQL5.6版本之后,除系统数据库外默认存储引擎都从MyISAM改为InnoDB 。MySQL8.0之后在原先的基础上将系统数据库的存储引擎也改成了InnoDB。

InnoDB存储引擎支持自动增长列AUTO_INCREMENT。自动增长列的值不能为空,且值必须唯一

MySQL中规定自动增长列必须为主键

在插入值时,如果自动增长列不输入值,插入的值就为自动增长后的值

如果输入的值为0或空(NULL),插入的值也为自动增长后的值

如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入

InnoDB存储引擎支持外键(FOREIGN KEY)。外键所在的表为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须为主键。当删除、更新父表的某条信息时,子表必须有相应的改变

InnoDB优点:良好的事务管理、崩溃修复能力和并发控制

InnoDB缺点: 读写效率稍差,占用的数据空间相对较大

MyISAM 存储引擎

MyISAM存储引擎的表支持三种存储格式:静态型、动态型、压缩型

优点:占用空间小,处理速度快

缺点:不支持事务的完整性和并发性

MEMORY 存储引擎

使用存储在内存的内容来创建表,而且所有数据都放在内存中,数据处理速度快,但是安全性不高

存储引擎总结

在同一个数据库中,不同的表可以使用不同的存储引擎

如果一个表要求较高的事务处理,就可以选择InnoDB存储引擎

如果一个表会被频繁查询,就可以选择MyISAM存储引擎

如果是一个用于查询的临时表,就可以选择MEMORY存储引擎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值