其实这个不是⼀定的,有些场景下,⼩系统或者没什么⽤的表,不设置主键也没关系,mysql最好是⽤ ⾃增主键,主要是以下两个原因:如果定义了主键,那么InnoDB会选择主键作为聚集索引、如果没有显 式定义主键,则innodb 会选择第⼀个不包含有NULL值的唯⼀索引作为主键索引、如果也没有这样的唯 ⼀索引,则innodb 会选择内置6字节⻓的ROWID作为隐含的聚集索引。所以,反正都要⽣成⼀个主键, 那你还不如⾃⼰指定⼀个主键,提⾼查询效率!
在mysql中,Int整型的范围(-2147483648~2147483648),约20亿!
因此不⽤考虑⾃增ID达到最⼤ 值这个问题。⽽且数据达到千万级的时候就应该考虑分库分表了
、
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, 当有匹配时, 会返回左边表格和右边表格任意情况下的⾏组合。
Sql是结构化查询语⾔,my sql是⼀个关系型数据库。
Delete是dml,truncate是ddl。
Delete是⽤来删除⼀⾏或者多⾏。Truncate是⽤来删除⼀个表中的所有⾏。
我们可以⽤where跟delete结合使⽤。Truncate不可以。
truncate是删除表中所有的⾏,drop是删除整张表。这两个操作都不可以回撤。
唯⼀标识⼀条记录,不能有重复的,不允许为空。
表的外键是另⼀表的主键, 外键可以有重复的, 可以是空值。
select * from tablename sample 10
1433
SQL(结构化查询语⾔)是⼀种设计⽤于检索和操作数据的数据库。它属于美国国家标准协会(ANSI) 的⼀种标准,可⽤于执⾏Select(选择)、Update(更新)、Delete(删除)和Insert(插⼊)等数据 任务。
它可⽤于设置表中数据类型的限制。在创建或更新表语句时,可以使⽤约束。
⼀些限制是: NOT NULL、PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK、DEFAULT
索引⽤于加速查询的性能。它可以更快地从表中检索数据。可以在⼀组列上创建索引。