员工表employee
权限表auth,
中间关系表auth_employee,外键连接employee表和auth表
1. 内连接:
#内连接
SELECT au.`id` AS auid,au.`name` AS auname, ae.`id`,emp.`id` AS empid,emp.`name` AS empname
FROM auth AS au,auth_employee AS ae,employee AS emp
WHERE au.`id`=ae.`authId`
AND ae.`empId`=emp.`id`
内连查询结果:
2. 左外连接
#左外连接
SELECT au.`id` AS auid,au.`name` AS auname,ae.`id` ,emp.`id` AS empid,emp.`name` AS empname
FROM employee AS emp
LEFT JOIN auth_employee AS ae
ON ae.`empId`=emp.`id`
LEFT JOIN auth AS au
ON au.`id`=ae.`authId`
左外连查询结果:
注:
- 在多表连查时,可能会有相同和字段名称,这时必须要明确是哪个表的哪个字段的名称(例:au.id ,au.name,emp.name)
- 为取别名时所用的 AS 是可用空隔替代的,可不写
常规增删改查 (以上表employee为例)
#查询:
SELECT * FROM employee WHERE id='1'
#添加:
INSERT INTO employee VALUE(NULL,'小明')
#删除:
DELETE FROM employee WHERE id='4'
#修改:
UPDATE employee SET `name` = 'Fred' WHERE id = '5'
注:
- 当字段名为关键字时,要用跳脱符跳脱(即!左边的点符号)
- 当主键为自增长时,添加的主键可用null,表示让数据库自动填写
其他:
删除所有行,可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM 表名 或者 DELETE * FROM 表名
使用 DROP 语句,可以删除索引、表和数据库
DROP INDEX 索引名称
DROP TABLE 表名称
DROP DATABASE 数据库名称
truncate (清空表中的数据):不删除表,删除内容、释放空间但不删除定义(保留表的数据结构)。
与drop不同的是,仅是清空表数据而已。
TRUNCATE TABLE 表名称