目录
一、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 基础操作知识专题
发布评论