MySQL 常用的指令

1.mysql 启动停止

mysql.server start 启动
mysql.server stop 关闭
quit 退出

// 安装包类型
sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop
2.设置root账户和用户密码


(1).mysqladmin -u root password 123456(初始密码)
(2).修改密码输入:mysqladmin -u root -p password XXXX(新密码)会让输入之前的密码来修改
3.链接数据库
(1).终端输入:mysql -u root -p 然后输入刚才设置的密码
(2).如果是登录远程主机上的mysql数据库:mysql -h 主机地址 -u 用户名 -p 用户密码
4.创建用户
CREATE USER <用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>
修改用户账号: RENAME USER <旧用户> TO <新用户>
修改密码:SET PASSWORD FOR 'jack'@'localhost'= PASSWORD('lion');
删除用户: DROP USER 'jack'@'localhost';
授权用户权限:

GRANT
<权限类型> [ ( <列名> ) ] [ , <权限类型> [ ( <列名> ) ] ]
ON <对象> <权限级别> TO <用户>
其中<用户>的格式:
<用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>
[ WITH GRANT OPTION]
| MAX_QUERIES_PER_HOUR <次数>
| MAX_UPDATES_PER_HOUR <次数>
| MAX_CONNECTIONS_PER_HOUR <次数>
| MAX_USER_CONNECTIONS <次数>

查询用户权限:

mysql> GRANT SELECT,INSERT ON .
-> TO 'testUser'@'localhost'
-> IDENTIFIED BY 'testPwd'
-> WITH GRANT OPTION;

删除权限: REVOKE <权限类型> [ ( <列名> ) ] [ , <权限类型> [ ( <列名> ) ] ]…
ON <对象类型> <权限名> FROM <用户1> [ , <用户2> ]…
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user <用户1> [ , <用户2> ]…

mysql> REVOKE INSERT ON .
-> FROM 'testUser'@'localhost';

3.创建数据库,表 等

创建一个名为 test_db 的数据库: CREATE DATABASE test_db; (CREATE DATABASE IF NOT EXISTS test_db)
查看所有数据库: SHOW DATABASES;
查看某些数据库: SHOW DATABASES LIKE 'test_db';
查看包含数据库: SHOW DATABASES LIKE '%test%';
查看db开头数据库: SHOW DATABASES LIKE 'db%';
查看db结尾数据库: SHOW DATABASES LIKE '%db';
查看 test_db 定义声明: SHOW CREATE DATABASE test_db;
创建指定字符集并查看: mysql> CREATE DATABASE test_db
-> DEFAULT CHARACTER SET gb2312
-> DEFAULT COLLATE gb2312_chinese_ci;
mysql> SHOW CREATE DATABASE test_db;

删除数据库test_db_del:DROP DATABASE IF EXISTS test_db_del;
切换数据库: USE test_db;

创建表tb_emp1: CREATE TABLE tb_emp1 ( id INT(11), name VARCHAR(25), daptId INT(11), salary FLOAT );
查看表: SHOW TABLES;
查看表机构: DESCRIBE <表名>; (DESC <表名>;)
查看创表时的语句: SHOW CREATE TABLE <表名>\G;

添加字段: ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
修改字段数据类型: ALTER TABLE <表名> MODIFY <字段名> <数据类型>
删除字段: ALTER TABLE <表名> DROP <字段名>;
修改字段名称: ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
修改表名: ALTER TABLE <旧表名> RENAME [TO] <新表名>;
删除表: DROP TABLE [IF EXISTS] <表名> [ , <表名1> , <表名2>] …
设置主键: <字段名> <数据类型> PRIMARY KEY [默认值]
设置外键: [CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
删除外键: ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
设置唯一约束: <字段名> <数据类型> UNIQUE
修改表时添加唯一约束: ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
删除唯一约束: ALTER TABLE <表名> DROP INDEX <唯一约束名>;
检查约束: CHECK <表达式>
修改表时添加检查约束:ALTER TABLE tb_emp7 ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)
删除检查约束: ALTER TABLE <数据表名> DROP CONSTRAINT <检查约束名>;
设置默认值约束: <字段名> <数据类型> DEFAULT <默认值>;
修改时加默认约束: ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <数据类型> DEFAULT <默认值>;
删除默认值约束: ALTER TABLE <数据表名>CHANGE COLUMN <字段名> <字段名> <数据类型> DEFAULT NULL;
设置非空约束: <字段名> <数据类型> NOT NULL;
修改时添加非空约束: ALTER TABLE <数据表名>CHANGE COLUMN <字段名><字段名> <数据类型> NOT NULL;
删除非空约束: ALTER TABLE <数据表名>CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;
查看表中的约束: SHOW CREATE TABLE <数据表名>;

插入数据: INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]VALUES (值1) [… , (值n) ];
例:mysql> INSERT INTO tb_courses
-> (course_id,course_name,course_grade,course_info)
-> VALUES(1,'Network',3,'Computer Network');

复制表数据: INSERT INTO…SELECT…FROM 从一个表复制到另一个表
例:mysql> INSERT INTO tb_courses_new
-> (course_id,course_name,course_grade,course_info)
-> SELECT course_id,course_name,course_grade,course_info
-> FROM tb_courses;

修改数据: UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]
例: mysql> UPDATE tb_courses_new
-> SET course_name='DB',course_grade=3.5
-> WHERE course_id=2

删除数据: DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

创建视图: CREATE VIEW <视图名> AS <SELECT语句>
查询视图: DESCRIBE 视图名;
修改视图内容: ALTER VIEW AS 或 UPDATE <> -> SET age=25 WHERE id=1;
删除视图: DROP VIEW <视图名1> [ , <视图名2> …]

4.存储引擎区别

可以根据以下的原则来选择 MySQL 存储引擎:
如果要提供提交、回滚和恢复的事务安全(ACID 兼容)能力,并要求实现并发控制,InnoDB 是一个很好的选择。
如果数据表主要用来插入和查询记录,则 MyISAM 引擎提供较高的处理效率。
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的 MEMORY 引擎中,MySQL 中使用该引擎作为临时表,存放查询的中间结果。
如果只有 INSERT 和 SELECT 操作,可以选择Archive 引擎,Archive 存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive 存储引擎非常适合存储归档数据,如记录日志信息可以使用 Archive 引擎

临时修改默认存储引擎: SET default_storage_engine=< 存储引擎名 >

5.常见的数据类型

在 MySQL 中常见的数据类型如下:

  1. 整数类型
    包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,浮点数类型 FLOAT 和 DOUBLE,定点数类型 DECIMAL。
  2. 日期/时间类型
    包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
  3. 字符串类型
    包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。
  4. 二进制类型
    包括 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。





6.SELECT 基本语法

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

{*|<字段列名>}包含星号通配符的字段列表,表示查询的字段,其中字段列至少包含一个字段名称,如果要查询多个字段,多个字段之间要用逗号隔开,最后一个字段后不要加逗号。
FROM <表 1>,<表 2>…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。
WHERE 子句是可选项,如果选择该项,将限定查询行必须满足的查询条件。
GROUP BY< 字段 >,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
[ORDER BY< 字段 >],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC)。
[LIMIT[<offset>,]<row count>],该子句告诉 MySQL 每次显示查询出来的数据条数。

查询表中指定字段: SELECT < 列名 > FROM < 表名 >;
去重: SELECT DISTINCT <字段名> FROM <表名>;
设置别名: <表名> [AS] <别名>
显示查询行数: <LIMIT> [<位置偏移量>,] <行数> SELECT * FROM tb_students_info LIMIT 3,5;或者SELECT * FROM tb_students_info LIMIT 4;
查询结果排行: ORDER BY {<列名> | <表达式> | <位置>} [ASC|DESC]
条件查询: WHERE <查询条件> {<判定运算1>,<判定运算2>,…}
<表达式1>{=|<|<=|>|>=|<=>|<>|!=}<表达式2>
判定运算有
<表达式1>[NOT]LIKE<表达式2>
<表达式1>[NOT][REGEXP|RLIKE]<表达式2>
<表达式1>[NOT]BETWEEN<表达式2>AND<表达式3>
<表达式1>IS[NOT]NULL

模糊查询: <表达式1> [NOT] LIKE <表达式2>
内连查询: SELECT <列名1,列名2 …>FROM <表名1> INNER JOIN <表名2> [ ON子句]
例 :ELECT id,name,age,dept_name
-> FROM tb_students_info,tb_departments
-> WHERE tb_students_info.dept_id=tb_departments.dept_id;

外连接查询: LEFT OUTER JOIN
例:mysql> SELECT name,dept_name
-> FROM tb_students_info s
-> LEFT OUTER JOIN tb_departments d
-> ON s.dept_id = d.dept_id;

子查询: <表达式> [NOT] IN <子查询>
<表达式> {= | < | > | >= | <= | <=> | < > | != }
{ ALL | SOME | ANY} <子查询>
EXIST <子查询>

分组查询: GROUP BY { <列名> | <表达式> | <位置> } [ASC | DESC]
例:mysql> SELECT dept_id,GROUP_CONCAT(name) AS names
-> FROM tb_students_info
-> GROUP BY dept_id; 根据 dept_id 的不同分别统计了 dept_id 相同的姓名。

指定过滤条件: HAVING <条件>

7.正则表达式查询

REGEXP关键字指定政策表达式


8.自定义函数和存储过程

创建自定义函数: CREATE FUNCTION <函数名> ( [ <参数1> <类型1> [ , <参数2> <类型2>] ] … )
RETURNS <类型>
<函数主体>

调用函数: SELECT <自定义函数名> ([<参数> [,...]])
修改函数: ALTER FUNCTION
删除自定义函数: DROP FUNCTION [ IF EXISTS ] <自定义函数名>

创建触发器: CREATE <触发器名> < BEFORE | AFTER ><INSERT | UPDATE | DELETE > ON <表名> FOR EACH Row<触发器主体>
删除触发器: DROP TRIGGER [ IF EXISTS ] [数据库名] <触发器名>

9.索引

索引的类型和存储引擎有关,1,B-树索引 2,哈希索引
创建索引: CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])
ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)

创建一般索引: INDEX(字段)
创建唯一索引: UNIQUE INDEX(字段)
查看索引: SHOW INDEX FROM <表名> [ FROM <数据库名>]
SHOW INDEX FROM tb_stu_info2\G
删除索引: DROP INDEX <索引名> ON <表名>

10.事务

事务具有4个特性:原子性,一致性,隔离性和持续性

开始事务: BEGIN TRANSACTION <事务名称> |@<事务变量名称>
提交事务: COMMIT TRANSACTION <事务名称> |@<事务变量名称>
撤销事务: ROLLBACK [TRANSACTION][<事务名称>| @<事务变量名称> | <存储点名称>| @ <含有存储点名称的变量名>

11.数据库备份

备份数据库:

mysql> SELECT * FROM test_db.tb_students_info
-> INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/file.txt'
-> FIELDS TERMINATED BY '"'
-> LINES TERMINATED BY '?';

恢复数据库:

mysql> LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/
Uploads/file.txt'
-> INTO TABLE test_db.tb_students_copy
-> FIELDS TERMINATED BY ','
-> OPTIONALLY ENCLOSED BY '"'
-> LINES TERMINATED BY '?';

12.数据库操作工具

MySQL Workbench https://dev.mysql.com/downloads/workbench/,
Navicat Premium,
sqlyog,
phpMyAdmin
等等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 花了3天时间学习MySql,考了个二级MySql 书籍参考:高等教育出版社《全国计算机等级考试二级教程-MySQL...
    如果仲有听日阅读 1,263评论 4 4
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,133评论 0 4
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,028评论 0 19
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,410评论 1 8
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,141评论 0 9