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 原目录 新目录
注意:
show variables like ‘%secure%’;//导入失败查看Mysql导入文件的指定位置 - 数据导出
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是根据表的索引是进行过滤的,包括主键(唯一索引)和自定义的,不反回错误
函数
SELECT CASE 1 WHEN 1 THEN ‘one’ WHEN 2 THEN ‘two’ ELSE ‘more’ END;
SELECT CASE WHEN 1>0 THEN ‘true’ ELSE ‘false’ END;
IF(expr1,expr2,expr3)
strcmp:
比较规则:
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符 相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
如果两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”,还要特别注意:小写字母比大写字母“大”。
IFNULL(expr1,expr2)
NULLIF(expr1,expr2) <==> CASE WHEN expr1 = expr2 THEN NULL ELSE expr2 END;
- 字符串函数
ASCII(str);
BIN(N);
BIT_LENGTH(str);
CHAR(N,…[USING charset])
CHAR_LENGTH(str); <==> CHARACTER_LENGTH();
CONCAT(str1,str2,…);
SELECT CONCAT(CAST(int_col AS CHAR),char_col);
CONCAT_WS(separator,str1,str2,…);
ELT(N,str1,str2,str3…)
EXPORT_SET(bits,on,off[,number_of_bits]]);
FIFLD(str,str1,str2,str3…);
FIND_IN_SET(str,strlist);
FORMAT(X,D);
HEX(N_or_S);
INSERT(str,pos,len,newstr);
INSTR(str,substr);
LEFT(str,len);
LENGTH(str);
LOAD_FILE(file_name);
LOCATE(substr,str);
LOWER(str);
LPAD(str,len,padstr);
LTRIM(str);
MAKE_SET(bits,str1,str2,…);
OCT(N);
ORD(str);
QUOTE(str);
REPEAT(str,count)
REPLACE(str,from_str,to_str);
REVERSE(str)
RIGHT(str,len);
SOUNDEX(str)
SUBSTRING(str,pos) | SUBSTRING(str FROM pos) | SUBSTRING(str,pos,len) | SUBSTRING(str FROM FOR len)
SUBSTRING_INDEX(str,delim,count)
TRIM([{BOTH | LEADING | TRAILING } [remstr] FROM] str) TRIM(remstr FROM str)