表连接
表的连接分为内连接和外连接。内连接就是利用 where 子句对两种表形成的笛卡儿积进行筛选,内连接也是开发过程中使用最多的连接查询。
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
外连接分为左外连接和右外连接。即:如果联合查询,左侧的表完全显示就是左外连接,右侧的表完全显示就是右外连接。
select 字段名 from 表1 left join 表2 on 连接条件;
select 字段名 from 表1 right join 表2 on 连接条件;
索引
索引特性:提高数据库的性能,索引可以说是物美价廉的好东西。不用加内存,不用改程序,不用调 sql ,只要执行正确的create index
,查询速度就能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO,所以索引的价值在于提高一个海量数据的检索速度。
在创建表的时候直接在字段名后面指定主键
create table user1(id int primary key, name varchar(32));
在创建表的最后指定某列或某几列为主键索引
create table user2(id int, name varchar(32), primary key(id));
创建好表以后再追加主键
create table user3(id int, name varchar(32));
alter table user3 add primary key(id);
主键索引的特点:
create table user4(id int primary key, name varchar(32) unique);
创建表时,在表的后面指定某列或某几列为唯一属性
create table user5(id int primary key, name varchar(32), unique(name));
创建好表以后再追加
create table user6(id int primary key, name varchar(32));
alter table user6 add unique(name);
唯一键索引的特点:
create table user8(id int primary key,
name varchar(32),
email varchar(32),
index(name));
创建完表以后指定某列为普通索引
create table user9(id int primary key,
name varchar(32),
email varchar(32));
alter table user9 add index(name);
创建一个索引名为 idx_name 的索引
create table user10(id int primary key,
name varchar(32),
email varchar(32));
create index idx_name on user10(name);
普通索引的特点:
show keys from 表名
show index from 表名
desc 表名
alter table 表名 drop primary;
alter table 表名 drop index 索引名;
drop index 索引名 on 表名