Mysql常用命令

  • 启动MySQL服务 sudo service mysql start 
    mysql -u root
  • 查看数据库 show databases;
  • 链接数据库 use <数据库名>
  • 查看表 show tables;
  • 退出 quit 或者 exit 或者\q

Mysql创建数据库和插入数据

  • 创建数据库 CREATE DATABASE <数据库名字>;
  • 查看表 show tables;
  • 新建数据表 CREATE TABLE 表的名字 

    列名a 数据类型(数据长度), 
    列名b 数据类型(数据长度), 
    列名c 数据类型(数据长度) 
    );
  • 导入执行.sql文件 source .sql文件
  • 插入数据 INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);
  • 查询 一张表 SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;
  • or / between and 包含边界;
  • in /not in
  • like _代表一个为指定字符;%代表不定个字符;
  • 结果排序 order by 默认为升序;ASC-升序;DESC-降序
  • 内置函数 count(计数);sum(求和);AVG(求平均值);max(最大值);min(最小值);
  • 子查询 查询结果涉及一个表;
  • 链接查询 查询结果涉及两个或者多个;

Mysql数据库表的修改和删除

  • 删除数据名称 DROP DATABASE 数据库名称;
  • 重命名一张表 
    rename table 原名 to 新名字; 
    alter table 原名 rename 新名; 
    alter table 原名 rename to 新名;
  • 删除一张表 drop table 表名字、

对表结构的修改

  • 增加一列 
    ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束; 
    或: ALTER TABLE 表名字 ADD 列名字 数据类型 约束; 
    在指定的列后面使用after 列名称; 
    如果在第一列的位置,就使用first关键字;
  • 删除一列 
    ALTER TABLE 表名字 DROP COLUMN 列名字; 
    或: ALTER TABLE 表名字 DROP 列名字;
  • 重命名一列 
    ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;
  • 改变数据类型 
    ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

对表中一列的修改

  • 修改某一列 
    UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件;
  • 删除某一列 
    DELETE FROM 表名字 WHERE 条件;

索引

  • 建立索引 
    ALTER TABLE 表名字 ADD INDEX 索引名 (列名); 
    CREATE INDEX 索引名 ON 表名字 (列名);
  • 查看表中索引 
    show index from 表名称;

试图

  • 创建视图 
    CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
  • 数据导入 
    LOAD DATA INFILE ‘文件路径和文件名’ INTO TABLE 表名字; 
    拷贝文件命令:cp -a 原目录 新目录
  • 数据导出 
    SELECT 列1,列2 INTO OUTFILE ‘文件路径和文件名’ FROM 表名字;
  • 备份 
    mysqldump -u root 数据库名>备份文件名; #备份整个数据库 
    mysqldump -u root 数据库名 表名字>备份文件名; #备份整个表
  • 恢复 
    source sql文件; 
    另一种恢复的方法:mysql -u root 数据库名称 < .sql(文件)

操作详情

DESCRIBE 表名称;

日期

TIMESTAMPDIFF()计算当前日期

模式匹配

“_”匹配任何单个字符;”%“匹配任意数目字符(包括零字符); 
使用扩展正则表达式:REGEXP和NOT REGEXP,(RLIKE和NOT RLIKE)

保存数据时

ignore是根据表的索引是进行过滤的,包括主键(唯一索引)和自定义的。不反回错误;

数据库的常用函数

mysql_store_result   检查完整的结果存在客服端
 mysql_fetch_fields   返回所有字段结构的数组
 mysql_num_fields   返回结果集的列数
 mysql_field_num    返回上次结果集列的数目
 mysql_fetch_row   从结果集中获取下一行
 mysql_use_result  初始化逐行结果的索引
 mysql_free_result 释放结果集所用的内存

#define BEGIN_TRAN 		"START TRANSACTION"
#define SET_TRAN		"SET AUTOCOMMIT=0"  
#define UNSET_TRAN		"SET AUTOCOMMIT=1"
#define COMMIT_TRAN		"COMMIT"
#define ROLLBACK_TRAN	"ROLLBACK"

int mysql_BeginTran(MYSQL *mysql)
{
	int ret = 0;

	//--执行事务开始SQL
	ret = mysql_query(mysql, BEGIN_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}

	//--设置事务手动提交
	ret = mysql_query(mysql, SET_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}

	return ret;
}
	
	
int mysql_Rollback(MYSQL *mysql)
{
	int ret = 0;
	
	//--事务回滚操作
	ret = mysql_query(mysql, ROLLBACK_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}
	
	//--恢复事务自动提交标志
	ret = mysql_query(mysql, UNSET_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}
	
	return ret;
}

int mysql_Commit(MYSQL *mysql)
{
	int ret = 0;
	
	//--执行事务提交SQL
	ret = mysql_query(mysql, COMMIT_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}
	
	//--恢复自动提交设置
	ret = mysql_query(mysql, UNSET_TRAN);
	if (ret != 0)
	{
		printf("func mysql_query() err: %d\n", ret);
		return ret;
	}
	
	return ret;
}