lizf2019 发表于 2022-6-28 17:39

mysql数据库 相关问题

以下是我对数据库的理解,不知道是否正确:
一个数据库----数据库中可以有很多表(tabel)----表里有字段----然后字段可以自行限制长短进行存储
问题:
1.表中各字段都是对应的吗(比如我查询username中对应的test值是否可以得到对应pass的值)

2.我向yonghu表中增加数据,为什么usrname增加了”test“的值而不是pass
3.null这个选项是什么作用


求助各位大佬解惑{:301_997:}

Piz.liu 发表于 2022-6-28 17:57

本帖最后由 Piz.liu 于 2022-6-28 17:59 编辑

首先mysql 是关系型数据库
关系型数据库这一系列的行和列被称为表,一组表组成了数据库
一般一行数据各字段是相对应的
比如说你新建的一个表,表字段有
id,name,pass,time
对应的第一条数据就是
1,'zhangsan','1111111','2020-01-01'
那么id 为1的这一条数据就是指的是 name为 zhangsan pass为111111的这条数据,就可以根据这个id查询到唯一的一行 (前提是id是唯一主键)

2.这个字段是有顺序的,就是说你表中字段的顺序,如果在插入的时候不指定,则是按默认字段顺序插入

3.null 这个是设置这个字段能不能为空 (注意不是空字符串)除了字符串一类的类型,如果没有值,就是null, 如果具体一条数据这个字段为null,就说明这条数据的这个字段没有值


如有错误 请指正

小年轻在奋斗 发表于 2022-6-28 18:04

你把MySQL当成Excel来看就行了;
你查询的时候有查询字段列,查哪个列就可以得到哪个列的值;
插入的时候也是列值一一对应的。

HA? 发表于 2022-6-28 18:18

1.可以。
通过where条件查询username='test'实际上可以得到username为test的所有记录(记录是指行),你可以选择在查询的时候只查看pass字段(字段是指列)。
select pass from yonghu where username='test';

2.你增加数据的时候没有指定哪项插入哪个数据,就会按照创建字段时的顺序插入
在values前面指定要插入的字段后,后面的括号内跟上对应的数据就行了,字符串尽量使用单引号标起来。
insert into yonghu (username,pass) values ('test','qq');

3.图片太小看不清。
如果你截图的地方是在设计表结构的地方,这个选项的作用是这个字段在增加修改记录后这个字段的值是否能非空。

lizf2019 发表于 2022-6-28 20:40

HA? 发表于 2022-6-28 18:18
1.可以。
通过where条件查询username='test'实际上可以得到username为test的所有记录(记录是指行),你可 ...

还请问大佬3那里,如果字段为空是不是会报错

HA? 发表于 2022-6-29 12:35

lizf2019 发表于 2022-6-28 20:40
还请问大佬3那里,如果字段为空是不是会报错

是的,比方说你设置username的字段不能为null了,在插入一行新的数据时如果没有插入username这个字段对应的数据,数据库就会报错,同理修改数据后该字段的值也不能为null。
需要注意一点,这里不能为空特指的是数值不能为null,而不是空字符串,如果不了解二者的区别可以百度看一下【数据库null和空字符串】。
另外可以自己打勾和取消后测试相关语句,能更好地加深理解

Sights 发表于 2022-7-8 17:23

补充一下问题1,如果用户名不准备重复的话,除了主键ID还可以设置唯一索引,数据量大了后查询更快,根据用户名读取数据库时效率也会有提升
ALTER TABLE YONGHU ADD UNIQUE UK_YONGHU_USER(USERNAME);

moocer 发表于 2022-7-10 10:30

1.表中各字段都是对应的吗(比如我查询username中对应的test值是否可以得到对应pass的值)
答:如果你存储的username是唯一的,那么你是可以通过username查出对应的pass的,如果不是,那么你有可能查出多条。这取决于你的数据。
2.我向yonghu表中增加数据,为什么usrname增加了”test“的值而不是pass
答:你select *一把,肯定是username字段在前,pass字段在后,这个插入顺序取决于你在定义这个表的时候的字段顺序。
3.null这个选项是什么作用
答:null这个选项是用来设定表中是否允许字段为空值。比如说你用户表有个家庭住址,但是不一定每个人注册的时候都会填写。这时候你就可以通过设定允许这个字段为空(允许null)。而对于用户表中的手机号,你不允许用户手机号是空的,那就可以对这个字段设置(不允许 null)。

moocer 发表于 2022-7-10 11:15

moocer 发表于 2022-7-10 10:30
1.表中各字段都是对应的吗(比如我查询username中对应的test值是否可以得到对应pass的值)
答:如果你存储的 ...

一般我们会对username这列设置唯一的,也就是unique。如果表还没有创建,则在最后添加UNIQUE (username),如果表已经创建使用alter table add unique (user_name);

126xy 发表于 2022-7-23 22:28

1.可以学习select语句加深理解
select * from yonghu
where username=‘一个值’
得到的结果是符合username=‘一个值’ 这个条件的所有元组,一个元组内的username和pass是对应的

2.建议用语句添加数据时,先注明字段顺序
例如 insert into yonghu (username,pass) values ('test','qq');
username和pass为字段名,后面的'test'和'qq'为对应字段的值

3.null就是空值,'没有'的意思
例如有一个表(学号,课程号,成绩)
如果成绩是null,那么可能是这名学生的这门课还没有考试,所以没有成绩


可以使用unique,primary key,not null 等关键字,根据你的实际要求来限定这些数据
页: [1] 2
查看完整版本: mysql数据库 相关问题