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;
}