MySQL常用操作

作者: 云三木 | 来源:发表于2020-05-16 16:30 被阅读0次

1. 表复制

复制表结构+复制表数据(推荐)
mysql>create table t2 like t1; mysql>insert into t2 select * from t1; 

直接复制表数据,但无索引和约束 
mysql>create table t3 select * from t1; 

2. 函数

数学

ABS(x)               --- 返回x的绝对值 
BIN(x)               --- 返回x的二进制(OCT返回八进制,HEX返回十六进制) 
CEILING(x)           --- 返回大于x的最小整数值 
FLOOR(x)             --- 返回小于x的最大整数值 
GREATEST(x1,x2,...,xn) --- 返回集合中最大的值 
LEAST(x1,x2,...,xn)  --- 返回集合中最小的值 
LN(x)                --- 返回x的自然对数 
LOG(x,y)             --- 返回x的以y为底的对数
MOD(x,y)             --- 返回x/y的模(余数)
PI()                 --- 返回pi的值(圆周率) 
RAND()               --- 返回0到1(不含1)的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 
ROUND(x,y)           --- 返回参数x的四舍五入的有y位小数的值 
SIGN(x)              --- 返回代表数字x的符号的值 
SQRT(x)              --- 返回一个数的平方根 
TRUNCATE(x,y)        --- 返回数字x截短为y位小数的结果

聚合(常用于GROUP BY从句的SELECT查询中)

AVG(col)     --- 返回指定列的平均值 
COUNT(col)   --- 返回指定列中非NULL值的个数 
MIN(col)     --- 返回指定列的最小值 
MAX(col)     --- 返回指定列的最大值 
SUM(col)     --- 返回指定列的所有值之和 
GROUP_CONCAT(col) --- 返回由属于一组的列值连接组合而成的结果

字符串函数

ASCII(char)                     --- 返回字符的ASCII码值 
BIT_LENGTH(str)                 --- 返回字符串的比特长度 
CONCAT(s1,s2...,sn)             --- 将s1,s2...,sn连接成字符串 
CONCAT_WS(sep,s1,s2...,sn)      --- 将s1,s2...,sn连接成字符串,并用sep字符间隔 
LCASE(str)或LOWER(str)          --- 返回将字符串str中所有字符改变为小写后的结果 
LEFT(str,x)                     --- 返回字符串str中最左边的x个字符 
LENGTH(s)                       --- 返回字符串str中的字符数 
LTRIM(str)                      --- 从字符串str中切掉开头的空格 
POSITION(substr,str)            --- 返回子串substr在字符串str中第一次出现的位置 
REPEAT(str,srchstr,rplcstr)     --- 返回字符串str重复x次的结果 
REVERSE(str)                    --- 返回颠倒字符串str的结果 
RIGHT(str,x)                    --- 返回字符串str中最右边的x个字符 
RTRIM(str)                      --- 返回字符串str尾部的空格 
TRIM(str)                       --- 去除字符串首部和尾部的所有空格 
UCASE(str)或UPPER(str)          --- 返回将字符串str中所有字符转变为大写后的结果

日期和时间函数

CURDATE()或CURRENT_DATE()   --- 返回当前的日期 
CURTIME()或CURRENT_TIME()   --- 返回当前的时间 
DATE_FORMAT(date,fmt)       --- 依照指定的fmt格式格式化日期date值 
FROM_UNIXTIME(ts,fmt)       --- 根据指定的fmt格式,格式化UNIX时间戳ts 
HOUR(time)                  --- 返回time的小时值(0~23) 
MINUTE(time)                --- 返回time的分钟值(0~59)
MONTH(date)                 --- 返回date的月份值(1~12) 
NOW()                       --- 返回当前的日期和时间 
WEEK(date)                  --- 返回日期date为一年中第几周(0~53) 
YEAR(date)                  --- 返回日期date的年份(1000~9999)

加密函数

MD5(str)        --- 计算字符串str的MD5校验和 
PASSWORD(str)   --- 返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。 
SHA(str)        --- 计算字符串str的安全散列算法(SHA)校验和

格式化函数

FORMAT(x,y)     --- 把x格式化为以逗号隔开的数字序列,y是结果的小数位数 
INET_ATON(ip)   --- 返回IP地址的数字表示 
INET_NTOA(num)  --- 返回数字所代表的IP地址

系统信息函数

DATABASE()               --- 返回当前数据库名 
BENCHMARK(count,expr)    --- 将表达式expr重复运行count次 
CONNECTION_ID()          --- 返回当前客户的连接ID 
FOUND_ROWS()             --- 返回最后一个SELECT查询进行检索的总行数 
USER()或SYSTEM_USER()    --- 返回当前登陆用户名 
VERSION()                --- 返回MySQL服务器的版本

以上函数全部使用select调用输出,以下为常用show操作

SHOW CHARACTER SET       --- 显示所有可用的字符集 
SHOW COLLATION           --- 输出包括所有可用的校对字符集 
SHOW COLUMNS             --- 显示在一个给定表中的各列的信息,对于视图,本语句也起作用。 
SHOW CREATE DATABASE     --- 显示用于创建给定数据库CREATE DATABASE语句。 
SHOW DATABASES           --- SHOW DATABASES可以在MySQL服务器主机上列举数据库。 
SHOW ENGINES             --- 检查一个存储引擎是否被支持,或者对于查看默认引擎是什么 
SHOW INDEX               --- 会返回表索引信息。 
SHOW TABLES              --- 列举了给定数据库中的非TEMPORARY表。 
SHOW VARIABLES           --- 列举当前环境变量

3. 预处理

预先处理SQL的语法,通过传值完成SQL。
优势:提高效率(重用),防止SQL注入(安全)。 PDO中的prepare就是调用该方法!!!

1、设置stmt1预处理,传递一个数据作为一个where判断条件 
mysql>prepare stmt1 from 'select * from t1 where id>?'; 
2、设置一个变量 
msyql>set @i=1; 
3、执行stmt1预处理 
mysql>execute stmt1 using @i; 
4、删除预处理 
mysql>drop prepare stmt1;

4. 事务

多个步骤为一个过程的事物(整体),中间有任何一个环节出问题,都会造成事物的回滚
表类型(引擎):innodb

1、 关闭自动提交功能或开启事务 
mysql>set autocommit=0; mysql>begin; 
2、 删除记录 
mysql>delete from t1 where id = 2; 
3、 创建还原点 
mysql>savepoint p1; 
4、 删除记录 
mysql>delete from t1 where id = 3; 
5、 再创建还原点 
mysql>savepoint p2; 
6、 删除记录 
mysql>delete from t1 where id = 4; 
7、 退回还原点 
mysql>rollback to p1; 
mysql>rollback to p2; 
8、 退回起始点 
mysql>rollback; 
9、 确认提交 
mysql>commit;

5. 存储

批量的有规律的mysql操作可以事前存在procedure中,后期调用。

1、 创建一个存储p1() 
mysql>\d // //将结束符修改为”//” 或者delimiter // 
mysql>create procedure p1() 
->begin
->set @i=1; 
->while @i<6 do 
->select * from t1 where id=@i; 
->set @i=@i+1; 
->end while; 
->end// 
2、 执行存储p1() 
mysql>\d ; //将结束符修改回; 
mysql>call p1; 
3、 查看所有procedure的status信息 
mysql>show procedure status\G 
4、 查看procddure p1()的具体信息 
mysql>show create procedure p1\G 
5、 删除procedure 
mysql>drop procedure p1;

6. 触发器

监视某种事件,并触发某种操作。(商品添加,订单消除等连贯表操作时使用)
触发四要素:
1、监视地点(table)
2、触发时间(after/before)
3、监视事件(insert/update/delete)
4、触发事件(insert/update/delete)

1、 修改delimiter为// 
mysql>\d // 
2、 创建一个名为tg1的触发器,当向t1表中插入数据前,就向a表中插入一条数据 
mysql>create trigger tg1 before insert on t1 for each row   #固定写法 
->begin 
-> insert into a values (4); 
->end//
3、 修改delimiter为; 
mysql>\d ; 
4、 插入数据测试 
insert into t1 values (null,'tom');

7. 视图

mysql>insert into t1 (name) select t1.name from t1; 
创建视图: 
  mysql>create view v_t1 as select * from t1 where id>1 and id<5; 
视图帮助信息: 
  mysql>? view 
        ALTER VIEW 
        CREATE VIEW 
        DROP VIEW 
查看视图: 
  mysql>show tables; 
  mysql>select * from v_t1; 
删除视图: 
  drop view v_t1; 
  视图相当于表查询的快捷方式,表数据改变,视图也跟着变。

8. 临时表

仅在当前session有效的存在于内存中的临时表。

create temporary table tmp1 (id int) ;

只对当前会话(连接)有效,断开后,临时表自动清除,也可以自己drop table tmp1;临时表在销毁前,文件暂存/tmp下。

9. 虚拟表

dual 在Oracl中有虚拟表技术,MySQL也效仿设置虚拟表。MySQL中直接查数据或者调用函数可以不用from表,但为了照顾select from 的习惯固设立

虚拟表 dual

mysql>select now(); //实际操作为下句 
mysql>select now() from dual;

10. 重置自增

MySQL数据库自增ID如何恢复

清空表
    delete from tablename //只能清空数据,不能重置ID 
修改表
    alter table tablename auto_increment=1; 
或者 
    truncate table tablename; //推荐

11. 数据导入导出

完整备份:

[root@localhost ~]# /usr/local/mysql/bin/mysqldump -uroot -p -l -F test>'/tmp/test.sql' 

导出一个数据库中每一个表的相关SQL语句,包含建表、增删改查等导入导出速度慢!
完整导入:

create database test2; 
[root@localhost ~]# /usr/local/mysql/bin//mysql -uroot -p123 test2</tmp/test.sql 

单表数据备份:

mysql>select * from t1 into outfile '/tmp/t1.txt'; 

仅仅是导出表数据,查什么就导出什么。
导入数据:

truncate t1;   #准备工作,先清空表,或自己创建一个表 
mysql>load data infile '/tmp/t1.txt' into table t1; 

可以指定某一些列,空置字段为NULL或者默认值 
mysql>load data infile '/test/users.txt' into table users(id,name);

12. 索引操作

什么是索引? 就像是书的目录,能够提高查询速度,降低写入速度,占用磁盘空间

分类:主键、唯一、普通、全文(sphinx等检索引擎代替)
ALTER TABLE ADD //增 
ALTER TABLE table_name ADD INDEX idx_name(column_list) 
ALTER TABLE table_name ADD UNIQUE uk_name (column_list) 
ALTER TABLE table_name ADD PRIMARY KEY (column_list) 
ALTER TABLE DROP //删 
ALTER TABLE table_name DROP INDEX idx_name/uk_name //唯一和普通都用此方式 
ALTER TABLE table_name DROP PRIMARY KEY show index from table_name //查 

注意: 删除主键索引,该字段不能有auto_increment,如果有先修改掉再删。
修改索引:先增再删

13. root密码丢失找回

丢失时的密码重置
1、 停止服务 
    pkill mysqld 
2、 重启服务,但需要跳过授权表限制 
    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql & 
3、 登录 
    mysql -uroot 不用密码即可 
4、 查看现有用户 
    select user,host,password from mysql.user; 
5、 修改密码 
    update mysql.user set password=password('123') where user='root' and host='localhost' 
6、 退出 
    exit 
7、 重启MySQL 
    pkill mysqld /usr/local/mysql/bin/mysqld_safe --user=mysql & 
正常修改密码方式:
方法一: 
  正常登陆mysql后, 
  mysql> set password for root@localhost=password("123"); 

方法二: 
  脚本命令行 
  ./mysqladmin -u root -p password mypasswd(新密码) 
  然后输入旧密码

相关文章

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • MySQL安装

    运行以下命令安装MySQL: 启动和关闭mysql服务器: 进入mysql shell界面: MySQL常用操作 ...

  • Mysql常用操作笔记

    Mysql常用操作笔记 登录 mysql -u用户 -p密码 mysql -hIP地址 -u用户 -u密码 退出 ...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • Mysql 常用操作

    数据库连接 数据库退出 创建数据库 删除数据库 选择表 数据类型 创建数据表 删除数据表 插入数据 查询数据 WH...

  • mysql常用操作

    1.where中字段包含条件 2.字符串截取

  • MySql常用操作

    1、查看数据库状态 及启动停止 /etc/init.d/mysqld status /etc/init.d/mys...

  • mysql 常用操作

    导出数据: 导入数据: 查看外键约束: 全部的表: 去除约束: 添加约束: 主键: 约束不能更改,只能先移除再创建...

  • Mysql常用操作

    1. 查看数据库:show databases; 2. 创建数据库:create database kuname;...

  • MYSQL常用操作

    此篇是为数据库小白入门而写的,介绍使用数据库的最基本也是最常用的一些操作。我也是在日常工作中东一点西一点学到的,难...

网友评论

    本文标题:MySQL常用操作

    本文链接:https://www.haomeiwen.com/subject/bxxrohtx.html