第二部分
mysql数据库管理
查看数据库信息
show database
查看数据库中的表信息
use数据库名

切换到书库中

show tables
show tables in mysql

显示数据表的结构(字段)
describe user;

Field:字段名称
type:数据类型
Null:是否允许为空
Key:主键
Type:数据类型
Default:默认值
Extra:扩展属性,例如:标志符列(标识了种子,增量/步长)1 2
id:1 3 5 7

常用的数据类型:
int:整型 用于定义整数类型的数据
float:单精度浮点4字节32位 准确表示到小数点后六位
double:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据。
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位 指定长度数组

Car如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

主键是唯一的,但主键可以由多个字段构成

MySQL数据库的数据文件存放在/usr/1ocal/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个
数据表对应为三个文件,扩展名分别为".frm"、“.MYD"和”.MYI"。

MYD文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个".MYD"文件与之对应,同样存放于所属数据库的文件夹下,和".frm"文件在一起。

“.MYI"文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache的内容主要就是来源于”.MYI"文件中。每一个MyISAM表对应一个".MYI"文件,存放于位置和".frm"以及".MYD"一样。

MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件
(frm,myd,myi)。每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个 .MYI文件中。

另外还有".ibd"和ibdata文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空
间存放存储数据。独享表空间存储方式使用".ibd"文件来存放数据,且每个表一个".ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata文件。

SQL语句概述
■SQL语言
Structured Query Languagel的缩写,即结构化查询语言
关系型数据库的标准语言
用于维护管理数据库:
包括数据查询、数据更新、访问控制、对象管理等功能
■SQL分类
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE

1、
DDL:
数据定义语言,用于创建数据库对象,如库、表、索引等
create
drop
alter

实验操作:

进入数据库:
mysql -uroot -p    输入密码回车

show databases;查看当前所有数据库(末尾命令一定要加“ ;”

use mysql 切换数据库
show tables; 查看当前数据库所有的表,查看当前在哪个数据库

describe user(表名)
或者desc user 
显示数据表的结构(字段)

image-20220805143335504

create database school;创建一个新的数据库
show databases;查看当前所有数据库

image-20220805161420390


#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主名)]);

use school  切换到这个数据库里
show tables;   看看有没有表
create table banji (id int not null,name char(10) not null,score decimal(5,2),passwd char(48) default'',primary key (id));
创建一个表(passwd后面给加密的话,char字节数要给够)
desc banji; 查看表的结构

image-20220805163305775

drop table banji;  删除整个表
drop database school;  删除整个数据库
show tables;   查看一下

image-20220805163728412

#向数据表中插入新的数据记录
insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);

insert into banji (id,name,score,passwd) values (1,'zyzy',100,123456);   向表中添加数据(数字不用加引号,字符串需要加引号)
添加密码是明文
select * from banji;   查看表中内容

image-20220805172634814

insert into banji (id,name,score,passwd) values (2,'wq',98,password('123456'));
添加密码以密文的形式

image-20220805173040623

insert into banji values (3,'lyy',89,456213);
虽然不用写字段,直接插入值,但是需要每个字段都赋值
 update banji set name='zdy' where id=1;
把名字这一列的ID为1的名字换了

image-20220807170927197

delete from banji where id=3;
删除ID号为3的所有信息,(删除整行信息只能是ID,不能为其他列表名)
 select id from banji\G
以列表的形式竖向显示ID号,(id可以换成其他信息,例如name、score)

image-20220807174942536

 select * from banji where id=2\G
查询班级列表id为2的信息,以竖向显示

image-20220807175404516

select * from banji limit 3;显示前三行,

image-20220807184844984

 select * from banji limit 3,2;
查看第三行后的两行,不包括第三行

image-20220807190840778

alter table banji rename ky20;
表名更换,把banji更换为ky20

image-20220807192229942

 alter table  banji add address char(100) default 'china'
 在班级这个表里添加扩展字段为,address  默认值为chaina  
create table banji_bak like banji;
给banji这个表做一个备份名为banji_bak的表,(没有内容 

insert into banji_bak select * from banji;
将原来的表内容克隆到备份的表中
create table banjiji (select * from banji);

image-20220807200503876

if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建

int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001

auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次

unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键
Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)

not null:表示此字段不允许为NULL
create table if not exists test (id int(4) zerofill primary key auto_increment,name char(10) NOT NULL);

 insert into test(name) values ('zz');
 插入记录时,可以不用写id,它会自定叠加
 

image-20220807205033326

小结:
#删除类型
drop table table_name
1)属于DDL
2)不可回滚(无法恢复)
3)不可带where
4)表内容和结构删除
5)删除速度快

truncate table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容删除
5)删除速度快

delete from table_name
1)属于DML
2)可回滚(可恢复)
3)可带where
4)表结构在,表内容要看where执行的情况
5)册删除速度慢,需要逐行删除

不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate

image-20220808134751219

创建临时表

临时表创建成功之后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。

如果在退出连接之前,也可以可执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。
PS:无法创建外键
临时表的作用就是查新东西快,需要把需要查询的资料导入临时表,因为临时表是在内存中运行的,所以快。
CREATE TEMPORARY TABLE表名(字段1数据类型,字段2数据类型[,·,,,PRIMARY KEY(主键名)]):

sg1写入一》数据表中-》先把数据保存在内存中-》写入到磁盘
insert into info一》info这张表,会先复制一份表数据到内存里面,给我们进行修改--》敲完回车之后,确定提了,才会写入数据表中-》再保存在磁盘里面

create table
test01-》只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉

示例:

create temporary table qqq (id int(3) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(50));

 insert into qqq values (1,'zy',12313456,'黑丝');

临时表不在目录当中,只能用select * from qqq;查询

不会保存在磁盘里面,退出连接后,临时表会释放掉


示例:

create temporary table qqq (id int(3) zerofill primary key auto_increment,name varchar(10) not null,cardid int(18) not null unique key,hobby varchar(50));

insert into qqq values (1,‘zy’,12313456,‘黑丝’);

临时表不在目录当中,只能用select * from qqq;查询


![image-20220808140838242](https://img-blog.csdnimg.cn/img_convert/bbde6120dd7d867061adc88969b74b48.png)
Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐