一、登陆mysql

语法如下: mysql -u用户名 -p用户密码
回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
例如用root用户登录:

mysql -uroot -p

注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP

二、增加新用户

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先
用以root用户连入mysql,然后键入以下命令:

GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。
如果你不想user1有密码,可以再打一个命令将密码去掉。

GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'user1' @'localhost' IDENTIFIED BY '';

三、操作数据库

登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。
1.查看所有数据库

SHOW DATABASES;

2.创建数据库
格式:create database 数据库名称;

CREATE DATABASE db1;

3.查看数据库详情
格式: show create database 数据库名;

SHOW CREATE DATABASE db1;

4.创建数据库指定字符集 utf8或gbk

CREATE DATABASE db2 CHARACTER SET utf8;
CREATE DATABASE db2 CHARACTER SET gbk;

5.删除数据库

DROP DATABASE db2;

6.使用数据库(按回车键出现Database changed 时说明操作成功!)

USE db1;

四、操作表和数据

表的引擎

Myisam: 只支持数据基础的增删改查,不支持高级操作,如:事务、外键等
InnoDB:支持高级操作,默认为InnoDB。
对表操作前必须用use选择数据库

1.创建表
格式: create table 表名 (字段1名 字段1类型,字段2名 字段2类型);

CREATE TABLE person ( NAME VARCHAR ( 10 ), age INT );

2.查看当前数据库下所有表

SHOW TABLES;

3.查看单个表的详细信息
格式:show create table 表名;

SHOW CREATE TABLE person;

4.查看表的字段信息
格式:desc 表名;

DESC table;

5.修改表名
格式:rename table 原名 to 新名;

RENAME TABLE student TO t_stu;

6.修改表属性 引擎和字符集
格式:alter table 表名 engine=引擎名 charset=字符类型;

ALTER TABLE hero ENGINE = myisam charset = gbk;

7.添加表字段
最后位置添加
格式:alter table 表名 add 字段名 字段类型;

alter table hero add age int;

最前面添加
格式:alter table 表名 add 字段名 字段类型 first;

alter table hero add money int first;

在某个字段的后面添加
格式:alter table 表名 add 字段名 字段类型 after 字段名;

alter table hero add gender varchar(5) after name;

8.删除表字段
格式:alter table 表名 drop 字段名;

alter table hero drop money;

9.修改表字段名和类型
格式:alter table hero change 原字段名 新字段名 类型;

alter table hero change name heroname varchar(10);

10.修改表字 段类型和位置
将字段移动到最后
格式:alter table 表名 modify 字段名 字段类型 first;

alter table hero modify age int first;

将字段移动到某字段后面
格式:alter table表名 modify 要移动字段名 字段类型 after 字段名;

alter table hero modify age int after xxx;

11.删除表
格式:

drop table hero;

1.导出数据:

mysqldump --opt test > mysql.test

即将数据库test数据库导出到mysql.test文件,后者是一个文本文件
如:

mysqldump -u root -p123456 --databases dbname > mysql.dbname

就是把数据库dbname导出到文件mysql.dbname中。
2.导入数据:

mysql -u root -p123456 < mysql.dbname

3.将文本数据导入数据库:
文本数据的字段数据之间用tab键隔开。

use test;
load data local infile "文件名" into table 表名;


4:查看现在的数据库中存在什么表

SHOW TABLES;

5:创建一个数据库表

CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6:显示表的结构:

DESCRIBE MYTABLE;

7:往表中加入记录

insert into MYTABLE values ("hyq","M");

8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)

LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

9:导入.sql文件命令(例如D:/mysql.sql)

use database;
source d:/mysql.sql;

10:删除表

drop TABLE MYTABLE;

11:清空表

delete from MYTABLE;

12:更新表中数据

update MYTABLE set sex="f" where name='hyq';

五、常用函数

1.字符串长度LENGTH(str)

SELECT * FROM table WHERE LENGTH( table.url ) > 5

2.时间戳(秒)格式化FROM_UNIXTIME(unix_timestamp,format)

SELECT FROM_UNIXTIME(table.create_time,'%Y-%m-%d %H:%i:%s') create_time FROM table

3.日期格式化DATE_FORMAT(date,format)

SELECT DATE_FORMAT(table.created_date, '%Y-%m-%d') created_date FROM table

4.条件语句

  • 1:IF(expr1,expr2,expr3)
    如果表达式 expr1 成立,返回结果 expr2;否则,返回结果 expr3
  • 2:IFNULL(expr1,expr2)
    如果 expr1 的值不为 NULL,则返回 expr1,否则返回 expr2
  • 3:ISNULL(expr)
    判断表达式expr是否为 NULL
  • 4:NULLIF(expr1, expr2)
    如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
  • 5:COALESCE(expr1, expr2, ...., expr_n)
    返回参数中的第一个非空表达式(从左向右)
  • 6:CASE WHEN ELSE

    CASE case_value
    WHEN when_value1 THEN
    result1
    WHEN when_value2 THEN
    result2
    ...
    ELSE
    result
    END CASE;

CASE 表示函数开始,END 表示函数结束。如果 when_value 成立,则返回 result1, 如果 when_value2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

5.转换数据类型CAST(expr AS type)
CHAR[(N)] 字符型
DATE 日期型
DATETIME 日期和时间型
DECIMAL float型
SIGNED int
TIME 时间型

SELECT CAST("2017-08-29" AS DATE);

6.字符串操作

  • 1:CONCAT(str1,str2,...)
    字符串 str1,str2 等多个字符串合并为一个字符串
  • 2:CONCAT_WS(separator,str1,str2,...)
    合并str1,str2 等多个字符串,并添加分隔符separator
  • 3:INSERT(str,pos,len,newstr)
    返回字符串 str 的前 len 个字符
  • 4:LEFT(str,len)
    返回字符串 str 的前 len 个字符
  • 5:LCASE(str)或LOWER(str)
    将字符串 str 的所有字母变成小写字母
  • 6:UPPER(str)或UCASE(str)
    将字符串 str 的所有字母变成大写字母
  • 7:REPLACE(str,from_str,to_str)
    将字符串 to_str 替代字符串 str 中的字符串 from_str
  • 8:CHAR_LENGTH(str)或CHARACTER_LENGTH(str)
    返回字符串 str 的字符数
  • 9:SUBSTRING(str,index)
    当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空。
  • 10:SUBSTRING_INDEX(str,index,len)
    把字符串str截取,从index开始,截取len长度。
  • 11:SUBSTRING_INDEX(str,delim,count)
    把字符串str按delim为分隔符进行拆分,当count为正数,取第n个分隔符之前的所有字符,当count为负数,取倒数第n个分隔符之后的所有字符。