MySQL基础教程

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)

你可能感兴趣的:(数据库,github)