SQL语法(四)

1.视图

定义:视图是虚拟的表,本身并不包含数据,只是包含使用时动态检索数据的查询,只是用来查看存储在别处的数据的一种设施

  • 创建与查看视图
mysql> create view prodcusters as select cust_name,cust_contact,prod_id 
       from customers,orders,orderitems where customers.cust_id=orders.cust_id 
       and orders.order_num=orderitems.order_num;#创建视图
mysql> select cust_name,cust_contact from prodcusters where prod_id='TNT2';#使用视图
操作示例
创建视图create view viewname as …(select语句)
显示视图show create view prodcusters;
显示列信息show columns from prodcusters;
删除视图drop view prodcusters;
  • 如果mysql不能正确的确定被更新的基数据,则不允许更新,即当视图的mysql构成中含有group by,having 等子句时
2.存储过程
  • 使用create procedure procedure_name() begin … end;创建一个存储过程
  • 对于存储过程在命令行上创建时要记得使用delimiter //将分隔符设置为;等。
  • 在mysql中的变量名要使用@符号开始。
  • 在使用参数时使用IN/OUT指定是传入还是传出参数
  • mysql中的注释是以–开头的
3.使用游标

设计游标的原因:对检索结果只能成批处理提出的一种优化方法,可用于对检索结果有选择的处理,其本质是存储在mysqsl服务器上的数据库查询,注意mysql中的游标只能用于存储过程(和函数)。
声明游标的具体示例:

create procedure processorders()
BEGIN
    declare ordernums cursor
    for         //创建名字为ordernums的游标
    select order_num from orders;
END;
操作示例
打开游标open ordernums;(会在此时执行查询语句)
关闭游标close ordernumbers;
使用游标数据… fetch ordernums into o;(o为事前声明的变量)
  • 注意declare语句的发布存在特定的次序,用declare语句定义的局部变量必须在定义任意游标和句柄之前,而句柄必须在游标之后定义。
4.触发器

触发器指当某个表发生改动时自动处理或者执行一条sql语句,在mysql中只有以下几条命令可以使用触发器,即在执行以下命令时直接自动执行一条MySQL语句:(其他语句不支持触发器)

  • delete
  • insert
  • update
操作示例
创建触发器create trigger tri_name;
删除触发器drop trigger tri_name;
insert触发器create trigger tname after insert on orders for each row select NEW.order_num;
5.事务管理处理

保证成批的mysql语句被执行,属性是ACID,需要注意的是几个事务处理的术语:

  • transaction , 指一组SQL语句
  • rollback , 指撤销指定SQL语句的过程
  • commit 将结果写入表中
  • savepoint , 常用于事务回退
6.附上几个面试题(心碎。。。)

1.一定注意,条理清晰,组织得当,不要瞎说,要和面试官交谈,问题答案不重要,不要直接告诉答案,要思考为什么。。。欸,没注重和面试官沟通,有些没必要说的都说了。。。

2.static 变量线程安全吗?

不安全,存储位置可见。

3.类里面的静态变量,围绕存储区,初始化讲

独属于类,生命周期,初始化方式,静态成员函数

4.谈一谈对Linux系统的了解

5.read/write系统调用读写文件的过程

通过struct file获取文件的读写指针,然后借由vfs层的接口,调用文件系统层的相关read,write函数实现文件读写。。

6.reactor反应堆模型

为事件源设置事件管理器,让reactor管理器监听fd,当读写事件来临时调用对应的事件源事件管理器的回调函数即可。

7.为什么选择线程池(项目)。。。

8.用时创建线程与线程池的区别(减少申请起源与释放资源的时间,提高了效率)

9.wait与sleep的区别与联系

wait调用时会被阻塞挂起,可以被中断。而sleep则是原子操作,不可以被中断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值