目录

一、Mysql基础操作

    1.1 mysql 表复制

    1.2 mysql索引

    1.3 mysql视图

    1.4 mysql内置函数

    1.5 mysql预处理语句

    1.6 mysql事务处理

    1.7 mysql存储

    1.8 mysql触发器

    1.9 重排auto_increment值


 

    1.1 mysql 表复制

        1、创建新表并复制

        > create table t2 select * from t1;

        2、只复制表结构到新表两种方法

        > create table t2 select * from t1 where 1=2;

        > create table t2 like t1;

        3、复制旧表的数据到新表(假设两个表结构一样)

        > insert into t2 select * from t1;

        4、将表1的内容全部复制到表2

        > select * into t2 from t1;

        5、查看表结构创建语句,复制语句创建表结构

       > show create table t2;

       6、表不同同一数据库中如(db1.t1,db2,t2)

       > insert into db1.t1 select * from db2.t2    // 完全复制

       > insert into db1.t1 select  distinct * from db2.t2    // 不复制重复记录

       > insert into db1.t1 select top 5 * from db2.t2    // 复制前五条记录

       7、复制酒店的数据到新表,两个表结构不一样

       > insert into t2(new1,new2) select old1,old2 from t1;

 

    1.2 mysql索引

       1、显示索引信息

       > show index from table_name;\G

       备注:table_name 表明,\G格式化数据将每行数据显示单独显示,方便阅读

       普通索引操作

       > create index idnexName on table_name (column_name);

       备注:创建索引,index为索引 indexName为索引名字,table_name为表名,括号为索引字段

       > drop index indexNmae on table_name;    // 删除索引

       > create unique index indexName on table_name(username(length));    // 唯一索引

       备注:table_name表中字符串唯一索引username长度为length建立

       ALTER索引操作

       > alter table table_name add primary key (column_list);    // 添加唯一主键索引,且不能为null

       > alter table talle_name add unique index_name (column_list);    // 添加唯一索引,null可重复

       > alter table table_name add index index_name(column_list);    // 添加普通索引,可重复

       > alter table table_name add fulltext index_name(column_list);    //指定索引为fulltext,用于全文索引

       > alter table table_name drop index column_list;    // 删除索引

       推荐使用alter方式创建索引,详见:https://www.runoob/mysql/mysql-index.html

 

    1.3 mysql视图

        视图是一个虚拟表,sql的实时查询结果同时数据同步实时更新

        > select * from t1 where age=10;    // 查询age=10的数据

        > create view new_t1 as select * from t1 where age=10;    // 将实时查询出的数据同步到new_1表中

        > alter view new_t1 as select 语句;    // 修改视图

        > alter view new_t1 as select 视图;    // 修改视图

        > show create view new_ti;    // 查看视图创建语句

        > show tabls;     // 查看视图

        > drop view new_t1;    // 删除视图

        > rename table new_t1 to new_new_t1;    // 更改视图名

 

    1.4 mysql内置函数

        1、数学函数

        2、字符串函数

        3、日期和时间函数

        4、条件判断函数

        5、系统系统函数

        6、加密和压缩函数

        7、聚合函数

        8、格式或类型转化函数

 

    1.5 mysql预处理语句

        预处理语句,仅单会话使用,防止预处理语句过多需及时释放清理,退出会话预处理消失

        > set @sqltest ="select * from t1 where age=?";    // 设置sql变量语句

        > set @age=2;    //设置变量

        > prepare stmt from @sqltest;    // 减少执行sql的语法分析

        > execute stmt using @age;    // 执行预处理语句并使用设置的变量

        > deallocate prepare stmt;    // 释放分配

 

    1.6 mysql事务处理

        事务处理两种开启方式,begin、rollback、commit或 set autocommit=0禁止自动提交,1开启自动提交,方法二可配合保存点使用

        方法1:

        > select * from t1;

        > begin;    // 开始事务

        > insert into t1 values("C",6);    // 插入数据

        > rollback;    // 回滚插入数据

        > insert into t1 values("D",7);    // 插入数据

        > commit;    // 提交,提交后不可再进行回滚

        方法2:

        > select * from t1;

        > set autocommit = 0;    // 禁止自动提交

        > insert into t1 values("G",8);

        >  savepoint g;    // 保存点g

        >  insert into t1 values("H",9);

        > savepoint h;    // 保存点h

        > select * from t1;

        > rollback to savepoint g;    // 回滚到保存点g,此时保存点h不可再用

        > select * from t1;

        > commit;    // 提交事务,提交后单次不能再进行回滚

 

    1.7 mysql存储

        存储可理解为封装代码函数方法,可封装参数、调用方法等过程

        > \d //

        > create procedure p1()

        > begin

        > set @i=0;

        > whild @i<10 do

        > select @i;

        > set @i=@i+1;

        > end whild;

        > end;//

        > /d;

        > // 上面为创建存储过程的代码

        > call p1();    // 执行存储p1()

        > show procedure status;\G    // 查看procedure p1()的status信息

        > show create procedure p1;/G    // 查看procedure p1()的具体信息

        备注:1、修改delimiter为//, 2、如何给方法传参实现增、删、改、查?

 

    1.8 mysql触发器

        触发器可实现多表联动的增、删、改,操作t1表可实现t2标的数据同步修改,无需手动调用程序自动调用

        > \d //

        > create trigger table_name_2 before delete on table_name_1 for each row

        > begin delete from t2 where name=old.name;

        > end//

        > \d;

        > delete table_name_1 where name="user1";    // 删除表1中的user1

        > select * from table_name_2;    // 查看表2的数据

        备注:new.name, old.name 新值、老值

 

    1.9 重排auto_increment值

        > truncate tableName;    // 清空表,auto_increment自动化恢复成1

        > alter table table_name auto_increment=1;     // 清空归档为1

        > delete from table_name;     // 清空表,不建议次按时操作慢且auto_increment没有恢复成1

 

 

更多推荐

Mysql 基础操作知识专题