一、右连接
右连接和左连接相反,左连接是以左侧表为主,右连接则是以右侧表为主,标识相同的字段,若左表没有右表中对应内容,则返回空值,如下例子:
语法:
SELECT 字段
FROM 表1
RIGHT JOIN 表2
ON 表1.字段=表2.字段
实例:
右表名:per_and_res
左表:person
试查询:
SELECT p.personname,p.age,pr.restaurant,pr.`code`
FROM person p
RIGHT JOIN per_and_res pr
ON p.id=pr.person_id
输出如下图:
二、全连接
全连接结合了” LEFT JOIN” 和”RIGHT JOIN”,若有匹配不到的数据,返回空值。
语法:
SELECT 字段
FROM 表1
FULL OUTER JOIN 表2
ON 表1.字段(相同)=表2.(相同字段)
三、视图
视图包含行和列,就像一个真实的表,视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
语法:
CREATE VIEW view_name AS
SELECT column_name
FROM table_name
WHERE condition
实例:
CREATE VIEW view_one AS
SELECT code,person_id
FROM per_and_res
创建下图:
更新视图语法:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name
FROM table_name
WHERE condition
实例:
CREATE OR REPLACE VIEW view_one AS
SELECT code,person_id,restaurant
FROM per_and_res
如下图:
删除语法(与删除表类似):
DROP VIEW view_name
四、索引
在检索数据的时候,效率更高更快,缺点是更新的时候,由于同时要更新索引数据,会导致更新速度变慢。
创建索引语法有两种方式:
CREATE INDEX indexName ON tablename(columnname(length));
ALTER TABLE tablename ADD INDEX indexname(columnname);
*如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
也可在创建表的时候直接指定,如下:
CREATE TABLE(
id INT NOT NULL,
username VARCHAR(10) NOT NULL,
INDEX [indexname](username(length))
)
修改表结构(添加索引):
ALTER table tableName ADD INDEX indexName(columnName);
删除索引:
DROP VIEW indexname ON table;
使用ALTER 命令添加和删除索引:
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。