总结
多表查询
-
笛卡尔积
- 两个表的连接没有条件就会产生笛卡尔积,要避免这种情况,可以通过等值连接来避免
-
外键约束
- 表的外键是另一个表的主键这就是外键约束
-
内连接
- 隐式内连接:就是没有用join 用的from和where
- 显示内连接(取交集):用了join select e.* from emp e (inner)join dept d on e.deptno = d.deptno
-
外连接
- left join(左连接):以作左边的为主表,右边的表没有的就用null代替
- right join(右连接):以作右边的为主表,左边的表没有的就用null代替
-
自连接
- 就是把自己看成两张表
-
子查询
一个查询语句嵌套了另一个查询语句,内嵌套的查询语句的结果可以作为外查询的条件
- 单列子查询
- 查询语句得到的值可以当作一个整体放在where后面作比较等
- 多列子查询
- 查询语句得到的表可以当作一个整体放在from后面当作另一个表使用
- 单列子查询
DML
- 插入
- insert into 表名(列名)values(值)
- insert into 表名 values(值)
- insert into 表名(列名)values(值)(值)(值)
- 修改
- update 表名 set 列名=值,列名=值 where 判断条件
- 删除
- delete from 表名 where 判断条件(可以恢复,删除的数据)
- drop table 表名 (删除的结构,不能回复)
- 数据的导出和导入(dos窗口中)
- 导出:mysqldump -uroot -p123456 --default-character-set=utf8 test>D:/test.sql
- 导入:mysql -uroot -p666 test<D:/test.sql
函数
- cast函数
- 可以将字符串的值转为想要的类型 select cast(saleprice as decimal)
- 可以通过decimal(p,d)指定小数的范围 select cast(‘123.4’ as decimal(p,d))
- covert函数
- select convert(‘123.4’,signed)
- cast和covert类型都不能四舍五入(字符串,其他类型好像会)
- 类型:
- 二进制,同带binary前缀的效果 : BINARY
- 字符型,可带参数 : CHAR()
- 日期 : DATE
- 时间: TIME
- 日期时间型 : DATETIME
- 浮点数 : DECIMAL
- 整数 : SIGNED
- 无符号整数 : UNSIGNED
- sql的执行顺序
- from
- join
- on
- where
- group by
- select
- having
- distinct
- order by
- limit
视图
-- 创建视图 相当于创建了另一个表
create view v_emp_dept as select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno
select * from v_emp_dept