`

mySQL学习入门教程——5.常用的高级操作

 
阅读更多

五、mysql常用的高级操作

 

一、MySQL表复制
create table t2 like t1;               #复制表结构,t2可以学习到t1所有的表结构
insert into t2 select * from t1;    #复制表数据,但是这样还是会有缺陷,因为没有考虑到列的对应,因为t1与t2的表结构完全一致,所以此次操作才不会出错!
建议:
insert into t3(name) select name from t1; #指定复制的列

二、MySQL索引
1、直接创建索引
create index index_name on table_name(column_list);                #创建普通索引
create unique index index_name on table_name(colume_list);    #创建唯一索引,请在创建唯一索引之前确保该列没有重复值,不然,创建不成功!

2、直接删除索引
drop index index_name on table_name;

3、修改-创建索引
alter table table_name add index [index_name](colum_list);                #创建普通索引
alter table table_name add unique [index_name](column_list);            #创建唯一索引
alter table table_name add primary key [index_name](column_list);   #创建主键索引,如果不添加index_name,则使用column_list作为默认索引名

4、修改-删除索引
alter table table_name drop index index_name;            #删除普通/唯一索引
alter table table_name drop primary key;                      #删除主键索引

【推荐使用方式3、4】
1、查看索引:show index from t1 \G
2、alter table table_name modify id int not null;(没有查到用modify修改索引,貌似是用add做修改?)

三、MySQL视图
视图:通过一个条件,把一部分数据从一张表里面提取出来,形成一张中间表,这张表就是视图
注意:视图随着主表的改变而改变
1、创建视图
create view view_name as select *from table_naem where id > 4 and id <= 10;

3、查看创建了哪些视图
show tables; #视图就是一个中间表
3、查看视图中数据
select * from view_name; #与查看表数据相同

4、删除视图
drop view view_name;

四、MySQL内置函数补充
查看函数作用及简单示例:function_name
e.g.  lcase;

1、字符串函数
1)lcase(“string”)/ucase(“string”)           #转换成小写/大写,与lower(str)/upper(str)作用相同
2)length(“string”)                                   #返回字符串的长度
3)repeat(“string”,n)                                #将字符从重复n次
4)space(n)                                               #生成n个空格

2、数学函数
1)bin(decimal_number)                          #十进制转二进制
2)ceiling(n)                                             #作用与ceil相同,向下取整
3)sqrt(n)                                                  #开平方
4)max(col)/min(col)                               #取最大/最小值,聚合时使用
5)rand()                                                   #生成随机数
select * from table_name order by rand(); #使用rand函数作为排序基准

3、日期函数
1)datediff(expr1,expr2)                             #返回expr1和expr2相差的天数,如果expr1> expr2,则返回正值

 

 ****************************比较高级部分***********************************

五、MySQL预处理语句
1、设置预处理stmt,传递一个数据作为where的判断条件
prepare stmt from “select * from table_name where id > ?”;

2、设置一个变量
set @i = 1;

3、执行预处理语句
execute stmt using @i;

4、删除预处理指令
drop prepare stmt;

六、MySQL事务处理
【注意】MyISAM存储引擎对事务并不支持,应该使用InnoDB存储引擎

set autocommit = 0;              #关闭自动提交  
delete from t1 where id > 4;  
savepoint p1;                        #设置还原点  
delete from t1;  
rollback to p1;                       #回滚到p1还原点  
rollback;                                #回滚到最原始的还原点  
commit ;                                #提交数据到服务器  
set autocommit = 1;                #开启自动提交,关闭事务处理  

七、MySQL存储
1、创建一个存储p1()

mysql>\d //                             #修改定界符为//  
mysql>create procedure p1()  
        ->begin  
        ->set @i = 0;  
        ->while @i < 100 do  
        ->insert into t2(name) values(concat("user",@i));  
        ->set @i = @i + 1;  
       ->end while;  
       ->end;//  
mysql>\d ;  

 

2、执行p1()
call p1();
3、查看procedure的status信息
show procedure status \G

4、查看procedurep1的具体信息
show create procedure p1 \G

八、MySQL触发器
1、创建触发器
#创建一个名为t1的触发器,当向t1表中插入数据时,就引发动作:向t2表中插入数

mysql>\d //  
mysql>create trigger t1 before inserton t1 for each row  
        ->begin  
        ->insert into t2(name) values(new.name);  
        ->end//  
mysql>\d ;  

 

#创建触发器t2,如果表t1删除数据,则引发触发器,表t2中的数据也相应删除

mysql>\d //  
mysql>create trigger t2 before delete on t1 for each row  
       ->begin  
      ->delete from t2 where id =old.id;  
      ->end//  
mysql>\d ;  

 

#创建触发器t3,如果修改表t1则t2中的记录也相应修改

mysql>\d //  
mysql>create trigger t3 before update on t1 for each row  
        ->begin  
        ->update t2 set id =new.id where id = old.id;  
        ->end//  
mysql>\d ;  

 

2、删除触发器
drop trigger trigger_name;

【附】删除表中所有数据:truncatetable_name; #速度更快,同时也可以清空auto_increment列表

九、重排auto_increment值
MySQL中自动增长的ID如何恢复?
1、清空表的时候,不要用delete from table_name;
而是:truncate [table] table_name;

或者
2、清空内容之后直接使用alter命令修改表
  alter table table_name auto_increment = 1;

 

http://blog.csdn.net/zjf280441589/article/details/20217647

http://blog.csdn.net/zjf280441589/article/details/20230427

分享到:
评论

相关推荐

    Python入门——高级篇

    Python语言入门,高级篇,思维导图格式,精简版(Linux常用命令、多任务编程、网络编程、HTTP协议、Web服务器、HTML+CSS基础、JavaScript、jQuery、MySQL使用、闭包和装饰器、正则、mini-web框架),仅供参考

    mysql面试题,it行业必备知识

    这些资源经过精心整理和筛选,涵盖了从基础入门到高级应用的各个方面,无论您是数据库新手还是资深开发者,都能在这里找到适合自己的学习资料。 一、资源内容 技术文章:收录了众多数据库专家或软件测试行业常用的...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、...

    Java开发详解.zip

    000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA概述及开发环境搭建】_Java开发环境搭建笔记.pdf 010201_【第2...

    java面试题以及技巧

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题目与技巧1

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧4

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧3

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题以及技巧6

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    数据库原理(第5版)

    当然,我们还更新了本书所有其他产品的信息,尤其是本版使用Windows 7操作系统来演示本书中的应用程序,MySQL工作台现在是MySQL数据库开发的GUI。 我们继续保持并改进了本书前几版引入的几个特性: ● 在每章中使用...

    asp.net知识库

    常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN...

    程序员的SQL金典.rar

    最好的sql教程 轻举技术之“纲”,张合用之“目”,锻造SQL高可用性数据库应用指南从理论到实践,凝聚SQL主流数据库最前沿的技术要领,本书将深入浅出讨论。  本书特色:主要介绍SQL的语法规则及在实际开发中的应用...

    Linux程序设计 第4版.haozip01

    16.5.5 gtktreeview 568 16.6 gnome构件 571 16.7 gnome菜单 572 16.8 对话框 576 16.8.1 gtkdialog 577 16.8.2 模式对话框 578 16.8.3 非模式对话框 579 16.8.4 gtkmessagedialog 580 16.9 cd数据库应用...

    Linux程序设计 第4版.haozip02

    16.5.5 gtktreeview 568 16.6 gnome构件 571 16.7 gnome菜单 572 16.8 对话框 576 16.8.1 gtkdialog 577 16.8.2 模式对话框 578 16.8.3 非模式对话框 579 16.8.4 gtkmessagedialog 580 16.9 cd数据库应用...

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    程序员的SQL金典6-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典7-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典3-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典4-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

Global site tag (gtag.js) - Google Analytics