Mysql基本操作

数据库复制

#1、创建新的数据库
    mysql -u root -p123456
CREATE DATABASE `new` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
#2、使用mysqldump及mysql组合命令,完成复制
    mysqldump old -u root -p123456  | mysql new -u root -p123456
#3、如果不在同一个mysql服务器上
    mysqldump old -uroot -p123456  | mysql -h 10.1.1.2 new -u root -p123456

--------------------------------------------------------------------------

表复制

#mysql复制表的两种方式:

#第一、只复制表结构到新表
create table 新表 select * from 旧表 where 1=2
#或者
create table 新表 like 旧表 

#第二、复制表结构及数据到新表
create table新表 select * from 旧表 

--------------------------------------------------------------------------

视图

create view stu_course_grade  //表明我们要创建视图并加上视图的名字
as                           //通过查询语句确定视图的主体内容
 select student.sno,xingming,score.fengshu,course.kecheng
 from student,score,course
 where student.sno=score.sno and score.sno=course.sno

--------------------------------------------------------------------------

临时表

#1
CREATE TEMPORARY TABLE tmp_table (
NAME VARCHAR (10) NOT NULL,
time date NOT NULL
);
#2
CREATE TEMPORARY TABLE tmp_table select *from four;

select * from tmp_table;

--------------------------------------------------------------------------

游标

declare productcursor cursor scroll      --第一步:声明游标
for 
select * from productinfo where vendname='上海华测'
GO
open productcursor                       --第二步:打开游标
Go
--读取数据开始                            --第三步:获取数据
fetch next from productcursor --读取当前行的下一行,并使其置为当前行(刚开始时游标置于表头的前一行,即若表是从0开始的,游标最初置于-1处,所以第一次读取的是头一行)
fetch prior from productcursor --读取当前行的前一行,并使其置为当前行
fetch first from productcursor --读取游标的第一行,并使其置为当前行(不能用于只进游标)
fetch last from productcursor  --读取游标的最后一行,并使其置为当前行(不能用于只进游标)
fetch absolute 2 from productcursor --读取从游标头开始向后的第2行,并将读取的行作为新的行
fetch relative 3 from productcursor --读取从当前行开始向后的第3行,并将读取的行作为新的行
fetch relative-2 from productcursor --读取当前行的上两行,并将读取的行作为新的行
--读取数据结束
GO
close productcursor                      --第四步:关闭游标
Go
deallocate productcursor                 --第五步:删除游标
Go

声明

declare 游标名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS]  
  for selet语句   [for  update[of 列名[,列名]]
/* 注:LOCAL 局部游标     GLOBAL 全局游标
     FORWARD_ONLY 仅向前  SCROLL 滚动
     STATIC 静态  KEYSET 键集 DYNAMIC 动态
     READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行*/

打开游标

Open Cursorname

取出数据

 FETCH [[NEXT | PRIOR | FIRST | LAST |   ABSOLUTE{ n | @nvar | RELATIVE { n | @nvar}]
  From ] 游标名 [into 变量]
  /*注:
    NEXT  下一行  PRIOR  上一行  FIRST 第一行
    LAST  最后一行  ABSOLUTE n 第n行
    RELATIVE n 当前位置开始的第n行
    into 变量 把当前行的各字段值赋值给变量
    
ABSOLUTE { n | @nvar }:如果n或@nvar为正,则返回从游标头开始向后n行的第n行,并将返回行变成新的当前行。如果n或@nvar为负,则返回从游标末尾开始向前的n行的
第n行,并将返回行变成新的当前行。如果n或@nvar为0,则不返回行。n必须是整数常量,并且@nvar的数据类型必须为int、tinyint或smallint.

RELATIVE { n | @nvar }:如果n或@nvar为正,则返回从当前行开始向后的第n行。如果n或@nvar为负,则返回从当前行开始向前的第n行。如果n或@nvar为0,则返回当前行,
对游标第一次提取时,如果在将n或@nvar设置为负数或0的情况下指定FETCH RELATIVE,则不返回行,n必须是整数常量,@nvar的数据类型必须是int、tinyint或smallint.
*/

关闭游标

Close Cursorname

删除游标

Deallocate Cursorname

--------------------------------------------------------------------------

存储过程

创建

-- 创建存储过程
DELIMITER $ --声明存储过程的结束符

CREATE PROCEDURE stu_test(in num1 int,out str varchar(20)) --存储过程名称(参数列表)

BEGIN    --开始
    -- 可以写多个sql语句          -- sql语句+流程控制    
END $    --结束 结束符

/*参数:
IN:  表示输入参数,可以携带数据带存储过程中
OUT: 表示输出参数,可以从存储过程中返回结果 
INOUT: 表示输入输出参数,两者结合*/

执行

call stu_testIf(2,@str);
select @st;

删除

drop procedure stu_inout;

--------------------------------------------------------------------------

触发器:

创建

CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
							ON 表名 FOR EACH ROW
							BEGIN
									执行语句列表
							END

查看

SHOW TRIGGERS --语句查看触发器信息

删除

DROP TRIGGER trig_book2 ;

--------------------------------------------------------------------------

表连接

1.外连接
外连接包括三种,分别是左外连接、右外连接、全外连接
对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。

#左连接
 select * from TableA left join TableB on TableA.id=TableB.id
#右连接
 select * from TableA right join TableB on TableA.id=TableB.id
 #全连接 
 select * from TableA full join TableB on TableA.id=TableB.id

二.内连接

#只保留两表符合相等条件的行
select * from TableA JOIN TableB on TableA.id=TableB.id

三.交叉连接

#A表3行, B表4行,交叉连接后3*4=12行
select * from TableA cross join TableB 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值