一.函数
1.字符串函数:
2.数值函数:
3.日期函数:
4.流程函数:
二.约束
当要使两张表之间存在关联,就必须建立外键关联约束,添加后就不能顺便的删除表中的数据啦
实例解析:
添加操作: alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);//本句的意思为dept表与emp表关联,主表是emp表,辅助表是dept表。关联的是id。
删除操作: alter table emp drop foreign key fk_emp_dept_id;
多表查询:
笛卡尔积
select * from emp,dept where emp.dept_id=dept.id;这个语句就可以实现两个表一起对应出现并查询的情况。后面的where语句只是对应的衔接点。注意的是若衔接不上就不会出现在多表查询的结果。
连接查询——内连接
隐式内连接:select * from emp,dept where emp.dept_id=dept.id;
显式内连接select * from emp inner join dept on emp.dept_id = dept.id;(inner这个关键字可以省略。)
外连接:
左外连接:select * from emp left outer join dept on emp.dept_id=dept.id;注意左表的全部会呈现回来,即使有信息没有连接上。outer这个关键字可以省略。
select dept.*,emp.* from emp right outer join dept on emp.dept_id=dept.id;
在实践中,左外连接用的比较多。
自连接:(注意一定要起别名,不然会混淆的)
举例:select a.name, b.name from emp a , emp b where a.nanagerid=b.id;
联合查询:
举例:
select * from emp where age<20 union all select * from emp where salary<20000;
举例说明:
select * from emp where dept_id=(select id from dept where name='总经办');(括号里的就是子查询,放回一条结果,也叫做标量子查询)
select * from emp where entrydate>(select entrydate from emp where name='金庸');
列子查询:
in: select * from emp where dept_id in (select id from dept where name='总经办' or name='市场部');
all:
any:
行子查询:
实例:
表子查询:
四。事务:
开启事务:
用start transaction,事务执行事务再执行rollback
设置异常:
设置手动提交的过程:
但出现异常后,可是使用回滚事务,用rollback;保证数据准确性和完整性
事务的四大特性ACID(了解一下即可)
第四种隔离级别几种问题可以解决。隔离级别最高,性能最差。其他的√表示可以解决。
系统默认的事务隔离级别是repeatbale read
事务的隔离级别越高,数据越安全,但是性能越低。
好啦,关于MySQL基础篇就分享到这啦,