.NET/C#汇总 —— 数据库概念知识

发布于:2024-04-26 ⋅ 阅读:(28) ⋅ 点赞:(0)

1 为什么要⼀定要设置主键?

其实这个不是⼀定的,有些场景下,⼩系统或者没什么⽤的表,不设置主键也没关系,mysql最好是⽤ ⾃增主键,主要是以下两个原因:如果定义了主键,那么InnoDB会选择主键作为聚集索引、如果没有显 式定义主键,则innodb 会选择第⼀个不包含有NULL值的唯⼀索引作为主键索引、如果也没有这样的唯 ⼀索引,则innodb 会选择内置6字节⻓的ROWID作为隐含的聚集索引。所以,反正都要⽣成⼀个主键, 那你还不如⾃⼰指定⼀个主键,提⾼查询效率!

2.⾃增主键⽤完了怎么办?

在mysql中,Int整型的范围(-2147483648~2147483648),约20亿!

因此不⽤考虑⾃增ID达到最⼤ 值这个问题。⽽且数据达到千万级的时候就应该考虑分库分表了

3.为什么不直接存储图⽚、⾳频、视频等⼤容量内容?

  • 我们在实际应⽤中,都是⽂件形式存储的。mysql中,只存⽂件的存放路径。虽然mysql中blob类型可以 ⽤来存放⼤容量⽂件,但是,我们在⽣产中,基本不⽤!主要有如下⼏个原因:
  • Mysql内存临时表不⽀持TEXT、BLOB这样的⼤数据类型,如果查询中包含这样的数据,查询效率 会⾮常慢。
  • 数据库特别⼤,内存占⽤⾼,维护也⽐较麻烦。
  • binlog太⼤,如果是主从同步的架构,会导致主从同步效率问题!因此,不推荐使⽤blob等类型!

4.有⼏种不同的join?

Inner join, left join, right join, full join.

Inner join, 就是只要有⼀个列能够匹配, 就简单的返回两个table中所有的对应⾏。

select columnnames from tablename1 inner join tablename2 on columnname1=col
umnname2

Left join也就是left outer join。当有⼀个列能够匹配时就返回左边表中所有的⾏。

select columnnames from tablename1 left join tablename2 on columnname1=colu
mnname2

Right join也就是right outer join,当有列匹配时,返回右边表格中所有的⾏。

select columnnames from tablename1 right join tablename2 on columnname1=col
umnname2

Full join也就是full outer join, 当有匹配时, 会返回左边表格和右边表格任意情况下的⾏组合。

5.Sql和my sql的区别是什么?

Sql是结构化查询语⾔,my sql是⼀个关系型数据库。

6.Delete和truncate的区别是什么?

Delete是dml,truncate是ddl。

Delete是⽤来删除⼀⾏或者多⾏。Truncate是⽤来删除⼀个表中的所有⾏。

我们可以⽤where跟delete结合使⽤。Truncate不可以。

7.Drop跟truncate的区别是什么?

truncate是删除表中所有的⾏,drop是删除整张表。这两个操作都不可以回撤。

8.什么是关系?有⼏种关系?

  • 关系是指多表在数据库中的关联。
  • 有4种关系。
  • 1对1,多对⼀,多对多,⼀对多。

9.什么是主键?

唯⼀标识⼀条记录,不能有重复的,不允许为空。

10. 什么是外键?

表的外键是另⼀表的主键, 外键可以有重复的, 可以是空值。

11.如何随机的从表中取⾏?

select * from tablename sample 10

12.Sql server的TCP/ip端⼝是什么?

1433

13.什么是SQL?

SQL(结构化查询语⾔)是⼀种设计⽤于检索和操作数据的数据库。它属于美国国家标准协会(ANSI) 的⼀种标准,可⽤于执⾏Select(选择)、Update(更新)、Delete(删除)和Insert(插⼊)等数据 任务。

14.SQL中的Constraints(约束)是什么?

它可⽤于设置表中数据类型的限制。在创建或更新表语句时,可以使⽤约束。

⼀些限制是: NOT NULL、PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK、DEFAULT

15.什么是Index(索引)?

索引⽤于加速查询的性能。它可以更快地从表中检索数据。可以在⼀组列上创建索引。

16.Clustered࿰