数据库--day6

#外连接
/*
一个表中有 另一个表没有
外连接查询结果为主表中的所有记录
    如果从表中有和他匹配的,则显示匹配的值
    如果没有匹配的,则显示null
左外;主表是left join左边的
右外;主表是right join右边的

*/
#查询没有男朋友的女生
SELECT 
  b.name,
  bo.* 
FROM
  beauty AS b 
  LEFT JOIN boys AS bo 
    ON b.`boyfriend_id` = bo.id 
WHERE bo.id IS NULL ;#用主键判断null

#查询哪个部门没有员工
SELECT d.*,e.`employee_id`
FROM `employees` AS e RIGHT JOIN `departments` AS d
ON e.`department_id`=d.`department_id`
WHERE e.`employee_id` IS NULL

#全外--暂不支持
#------------------------------------------------------#
#------------------------------------------------------#
#-----------------插入法一-----------------------------#
#dml数据操作语言--插入insert修改update删除delete
/*insert
表明 列名 新值
insert into 表名(列名...)
values(值1...);

SELECT * FROM beauty
*/
INSERT INTO beauty (id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(14,'唐艺昕','','1990-4-23','188888888',NULL,  2)
#      int varchar char  datetime     varcher   blob  int
#插入的类型要保持一致
/*
有些字段是nullalbe,可以为null,那么再插入时可以省略,
    或者直接填成null。
有些在省略后,如果在设置字段的时候有设置默认值,
    那么将自动插入默认值。
*/
INSERT INTO beauty (id,NAME,phone)
VALUES(15,'啦啦','188888888')

#可以省略列名,则默认所有列,且顺序不变
INSERT INTO beauty 
VALUES(16,'关晓彤','','1990-4-23','188888888',NULL,  2)
#--------------插入法二------------------------------------#
INSERT INTO beauty
SET id=19,NAME='刘涛',phone='110';
#方法一 支持一次插入多行
INSERT INTO beauty 
VALUES(20,'唐艺昕','','1990-4-23','188888888',NULL,2)
,(17,'唐艺昕','','1990-4-23','188888888',NULL,2)
,(18,'唐艺昕','','1990-4-23','188888888',NULL,2);
#方法一支持子查询

#----------------修改----------------------------------#
#----------------修改----------------------------------#
#----------------修改----------------------------------#
#----------------修改----------------------------------#
/*
修改单表
update 表名
set 列=新值,列=新值
where 筛选条件;//筛选出哪一行修改


修改多表sql92
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件

sql99
update  表1 别名
连接类型  表2 别名
on 连接条件
set 列=值,...
where 筛选条件

*/
SELECT * FROM beauty

#把姓唐的人电话改成110
UPDATE beauty
SET phone='110'
WHERE NAME LIKE'唐%'

#修改多表 修改张无忌的女朋友手机号为120
UPDATE  boys AS b
INNER JOIN beauty AS be
ON b.id=be.boyfriend_id
SET be.phone='114'
WHERE b.boyname='张无忌'

#修改没有男朋友的女生  的男朋友编号 为2号
UPDATE 
  boys 
  RIGHT JOIN beauty 
    ON boys.`id` = beauty.`boyfriend_id` 
    SET beauty.`boyfriend_id` = 2 
WHERE boys.`id` IS NULL 

#--------------删除1------------------------------#
单表的删除
DELETE FROM 表名
WHERE 筛选条件// 筛选出要删除的行

多表的删除

#----------删除2-----------------#
TRUNCATE TABLE 表名//删除整个表


#1、删除手机号9结尾的女生信息
DELETE FROM beauty WHERE phone LIKE '%9'
SELECT * FROM beauty 

多表删除
删除张无忌的女朋友的信息

DELETE beauty 
FROM boys INNER JOIN beauty
ON boys.`id`=beauty.`boyfriend_id`
WHERE boys.`boyName`='张无忌'

删除黄晓明及他女朋友信息
DELETE boys , beauty 
FROM boys INNER JOIN beauty
ON boys.`id`=beauty.`boyfriend_id`
WHERE boys.`boyName`='黄晓明' 

猜你喜欢

转载自www.cnblogs.com/yasina/p/12801356.html