博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库操作重要知识集锦一
阅读量:6238 次
发布时间:2019-06-22

本文共 2073 字,大约阅读时间需要 6 分钟。

一、多对多连表操作(外键操作)

 1.创建表一:

CREATE TABLE `man` (

`nid` int(11) NOT NULL AUTO_INCREMENT,
`name` char(10) DEFAULT NULL,
PRIMARY KEY (`nid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

 2.创建表二:

CREATE TABLE `women` (

`nid` int(11) NOT NULL AUTO_INCREMENT,
`name` char(10) DEFAULT NULL,
PRIMARY KEY (`nid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

  3.创建表三:

CREATE TABLE `man_to_women` (

`nid` int(11) NOT NULL AUTO_INCREMENT,
`man_id` int(11) NOT NULL,
`women_id` int(11) NOT NULL,
PRIMARY KEY (`nid`),
KEY `to_man` (`man_id`),
KEY `to_women` (`women_id`),
CONSTRAINT `to_man` FOREIGN KEY (`man_id`) REFERENCES `man` (`nid`),
CONSTRAINT `to_women` FOREIGN KEY (`women_id`) REFERENCES `women` (`nid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

man_to_women有2个外键,1,man_to_women.man_id = man.nid   2,man_to_women.women.women_id = women.nid

查找man表中name数据在women表中对应的name数据

SELECT women.name as wname ,man.name as mname from man_to_women

LEFT JOIN man on man_to_women.man_id = man.nid
LEFT JOIN women on man_to_women.women_id = women.nid
where man.name = 'man1';

显示数据:

wname  mname 

wo1      man1

wo2     man2

 

 

二、SQL视图

1.添加视图

create view  view_name as 

select * from XXX_table;

修改视图

alter view test as

SELECT * from man;

删除视图

drop view test;

查询视图

SELECT * from man_to_women_view;

(注意:视图是一张伪表,不是一张真实的表)

 

三、存储过程procedure

1、创建procedure

 

delimiter $$

CREATE PROCEDURE proc_test(
in p1 int ,
inout p2 int ,
out p3 int
)

begin

DECLARE x1 int ;
DECLARE x2 int ;
declare p3 int;
set x1 = p1;
set x2 = p2;
set p3 = x1 + x2 ;

end $$

delimiter ;

delimiter设置mysql的语句标识结束符,运行完成后改成;

procedure 有3类参数,1. in参数是传入的数值,2.inout参数既可以传入参数也可以传出参数 3.out参数为procedure的返回值(传入时需要定义传入的类型)

declare为定义一个变量,set为一个变量设定值,

运行procedure:

set @p=1;

call proc_test(5,@p,@u);
SELECT @p,@u;

三、触发器

创建触发器

create trigger name 操作前后  操作 on table _x  for each row

begin

end

操作前后:before  after  指操作之前执行 begin end代码段

操作:insert  delete  update三种操作会触发触发器

有两个属性,new和old

插入时,插入之前的值为old,插入之后的值为new

删除时,删除之前的值为old,插入之后的值为new

更新时,更新之前的值为old,插入之后的值为new

 

例如 new.属性A   指的是触发操作是属性A的值

 

 

 

 

 

 

 

 

11111

转载于:https://www.cnblogs.com/binpeng/p/8876409.html

你可能感兴趣的文章
Redis 为什么使用单进程单线程方式也这么快
查看>>
JAVA's NIO, Netty And Mina文章推荐
查看>>
《Java从小白到大牛精简版》之第4章 Java语法基础
查看>>
启动文件类型与芯片容量大小区别
查看>>
Ez×××_over_asa
查看>>
聊聊CentOS6的启动过程
查看>>
Python运算符重载
查看>>
redis的数据持久化
查看>>
我的友情链接
查看>>
Zabbix迁移
查看>>
centos设置了fqdn后依然提示unknown host的解决方法
查看>>
京东商城CEO刘强东:下一个马云
查看>>
hadoop官方文档学习笔记(1)——resource manager HA
查看>>
Apache配置禁止访问目录,报403
查看>>
Ubuntu 查看和杀死进程
查看>>
Linux 系统中如何查看日志(常用命令)
查看>>
apache日志记录分析
查看>>
COM2 --- 小例子
查看>>
Cisco 交换机 升级 IOS
查看>>
火狐4浏览器动态下载统计背后的SQL技术
查看>>