2021-10-06 全面,详细,MySQL命令语句,值得收藏

<!--DOS窗口登录数据库-->

mysql -h 服务器主机地址 -u 用户名 -p 密码

  • 如果在本机操作,可省略 -h 参数

  • -p 后面可以不写密码,按Enter键后可输入密码。如果写密码,-p和密码间没有空格。

<!--创建数据库-->

CREATE DATABASE 数据库名;

<!--查看数据库列表-->

SHOW DATABASES;

<!--选择数据库-->

USE 数据库名;

<!--删除数据库-->

DROP DATABASE 数据库名;

<!--创建表-->

CREATE TABLE [ IF NOT EXISTS ] 表名(

字段1 数据类型 [ 字段属性 | 约束 ] [索引] [注释],

................

字段n 数据类型 [ 字段属性 | 约束 ] [索引] [注释]

)[表类型] [表字符集] [注释];

<!--单字段主键-->

CREATE TABLE [ IF NOT EXISTS ] 表名(

字段1 数据类型 PRIMARY KEY,

..........

)

<!--在定义完所有字段之后指定主键-->

CREATE TABLE [ IF NOT EXISTS ] 表名(

字段1 数据类型,

..........

[CONSTRAINT<约束名>] PRIMARY KEY [ 列名 ]

)

<!--多字段联合主键-->

CREATE TABLE [ IF NOT EXISTS ] 表名(

PRIMARY KEY [字段1,字段2.......]

)

<!--注释使用COMMENT关键字来添加,下面是举例-->

CREATE TABLE test(

'id' int(11) UNSIGNED COMMENT ' 编号 '

)COMMENT=' 测试表 '

<!--编码格式设置使用CHARSET关键字来添加,下面是举例(默认是utf-8)-->

CREATE TABLE test(

'id' int(11) UNSIGNED COMMENT ' 编号 '

)CHATSET= 字符集名

<!--查看表(必须要先选择数据库)-->

SHOW tables;

<!--查看表定义-->

DESCRIBE 表名; 或 DESC 表名;

<!--删除表-->

DROP TABLE [ IF EXISTS ] 表名;

<!--修改表-->

ALTER TABLE <旧表名> RENAME [TO] <新表名>

<!--添加字段-->

ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

<!--修改字段-->

ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

<!--删除字段-->

ALTER TABLE 表名 DROP 字段名;

<!--查看所有修改表结构的SQL语句-->

HELP ALTER TABLE;

<!--添加主键约束-->

ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名 (主键字段)

<!--添加外键约束-->

ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 关联表名 (关联字段)

<!--查看帮助文档目录列表-->

HELP contents;

<!--查看所支持的数据类型-->

HELP Data Types;

<!--进一步查看某一数据类型-->

HELP INT;

<!--查询某命令,以下示例查询CREATE TABLE命令-->

HELP CREATE TABLE;

<!--查看默认存储引擎-->

SHOW VATIABLES LIKE 'storage_engine%';

<!--指定表的存储引擎使用ENGINE关键字-->

CREATE TABLE 表名(

#省略代码

)ENGINE=存储引擎;

<!--插入单行数据-->

INSERT INTO 表名 [(字段名列表)] VALUES (值列表);

<!--插入多行数据-->

INSERT INTO 新表 (字段名列表) VALUES (值列表1),(值列表2),.......,(值列表n);

<!--将查询结果插入到新表中-->

CREATE TABLE 新表 (SELECT 字段1,字段2,.......FROM原表);

<!--更新表中某行数据-->

UPDATA 表名 SET 列名=更新值 [ WHERE 更新条件 ]

<!--删除表中的数据-->

DELETE [FROM] 表名 [WHERE <删除条件>]

<!--删除表中所有信息(不建议使用,删除的数据不能恢复)-->

TRUNCATE TABLE 表名

<!--查询数据(ASC是升序DESC是降序,默认升序,排序列名可以多个,用“,”隔开,可以分开指定)( * 表示所有)-->

SELECT <列名 | 表达式 | 函数 | 常量>

FROM <表名>

[WHERE <查询条件表达式>]

[ORDER BY <排序的列名>[ASC 或 DESC]]

<!--查询总成绩-->

SELECT SUM (列名) FROM 表名;

<!--查询平均成绩-->

SELECT AVG (列名) FROM 表名;

<!--首字母大写-->

SELECT UPPER (列名) FROM 表名;

<!--出生年份统计-->

SELECT YEAR (列名) FROM 表名;

<!--分数取整-->

SELECT CEIL (列名) FROM 表名;

<!--查询指定位置和指定行数(ASC是升序DESC是降序,默认升序,排序列名可以多个,用“,”隔开,可以分开指定)( * 表示所有)(位置偏移量指从结果集中第几条数据开始显示(第一条记录的位置偏移量是“0”,第二条是“1”。。。。。)此参数可选,当省略时默认从第一条记录开始)(行数指显示记录的条数)-->

SELECT <字段名列表>

FROM <表名或视图>

[WHERE <查询条件表达式>]

[GROUP BY <分组的字段名>]

[ORDER BY <排序的列名>[ASC 或 DESC]]

[ LIMIT [位置偏移量],行数 ]

<!--子查询在where语句中的一般用法(外层查询称为父查询,圆括号中嵌入的查询称为子查询,先执行子查询,求出子查询的值,在执行整个父查询,返回最后结果)-->

SELECT.....FROM 表名 WHERE 字段 比较运算符 (子查询)

<!--IN子查询(圆括号里的子查询可以嵌套多层)-->

SELECT.....FROM 表名 WHERE 条件字段 IN (子查询)

<!--NOT IN子查询(圆括号里的子查询可以嵌套多层)-->

SELECT.....FROM 表名 WHERE 条件字段 NOT IN (子查询)

<!--EXISTS子查询(确认后边的查询是否继续,返回值是true或false)(以下语句的意思是:如果存在数据表,则先删除它,在重新创建)-->

DROP 表名 IF EXISTS 数据表;

<!--EXISTS作为WHERE语句的子查询(以下语句的意思是:EXISTS 关键字后面的参数是一个任意的子查询,如果该子查询有返回行,则结果为true,此时再执行外层查询语句。反之,没有返回行,则结果为false,此时不再执行外层查询语句)-->

SELECT......FROM 表名 WHERE EXISTS (子查询)

<!--NOT EXISTS子查询(实现反操作,表示不存在对应查询条件的记录)-->

SELECT......FROM 表名 WHERE NOT EXISTS (子查询)

<!--设置自动提交关闭或开启事务(值为:0 关闭自动提交,值为:1 开启自动提交)-->

SET autocommit = 0 | 1;

<!--以下是默认设置下流程(默认下,每条SQL语句就是一个事务,即执行SQL语句后自动提交)-->

//选择数据库

USE mybank;

//设置结果集以GBK编码格式显示

SET NAMES gbk;

//开启事务,指定事务从此处开始,后续的SQL语句是一个整体

BEGIN;

//转账:张三的账户减少500元,李四的账户增加500元

UPDATE 'bank' SET 'currentMoney' = 'currentMoney' - 500 WHERE 'customerName' = '张三';

UPDATE 'bank' SET 'currentMoney' = 'currentMoney' + 500 WHERE 'customerName' = '李四';

//提交事务,写入硬盘,永久的保存

COMMIT;

<!--以下是设置手动自动提交关闭或开启事务流程-->

//关闭事务自动提交,该语句之后为事务开始

SET autocommit = 0 ;

//转账:张三的账户减少500元,李四的账户增加500元

UPDATE 'bank' SET 'currentMoney' = 'currentMoney' - 500 WHERE 'customerName' = '张三';

UPDATE 'bank' SET 'currentMoney' = 'currentMoney' + 500 WHERE 'customerName' = '李四';

//提交事务,写入硬盘,永久的保存

COMMIT;

UPDATE 'bank' SET 'currentMoney' = 'currentMoney' - 1000 WHERE 'customerName' = '张三';

//回滚事务

ROLLBACK;

//恢复自动提交

SET autocommit = 1 ;

<!--创建视图-->

CREATE VIEW 视图名 AS <SELECT 语句>;

<!--删除指定视图-->

DROP VIEW [ IF EXISTS ] 视图名;

<!--查看视图数据-->

SELECT 字段1,字段2,........FROM view_name;

<!--通过views来查看所有视图(“\G,表示将结果集按列显示”)-->

USE information_schema;

SELECT * FROM views\G;

<!--创建索引(使用CREATE INDEX语句在已经存在的表上添加索引)(UNIQUE|FULLTEXT| SPATIAL:分别表示唯一索引,全文索引,空间索引,都为可选参数)(index_name:指定索引名)(table_name:指定创建索引的表名)(column_name:指定需要创建索引的列)(length:指定索引长度,可选参数,只有字符串类型才能指定索引长度)-->

CRERTE [ UNIQUE | FULLTEXT | SPATIAL ] INDEX index_name ON table_name(column_name[length].......);

<!--删除索引-->

DROP INDEX table_name.index_name;

<!--查看索引(Table:表示创建索引的表)(Non_unique:表示索引是唯一,1 代表是非唯一索引,0 代表唯一索引)(Key_name:表示索引名称)(Seq_in_index:表示该列在索引中的位置,如果索引是单列的,该值为1,组合索引为每列在索引定义中的顺序)(Column_name:表示定义索引的列字段)(Sub_part:表示索引的长度)(Null:表示该列是否能为空值)(Index_type:表示索引类型))-->

SHOW INDEX FROM table_name;

<!--使用mysqldump命令备份数据库(mysqldump是DOS系统下的命令,无需进入mysql命令行,否则将无法执行)(username:表示用户名)(host:表示登录用户的主机名称,如本机为主机可省略)(password:表示登录密码)(dbname:表示需要备份的数据库)(tbname:表示需要备份的数据表,可指定多张表,为可选项,如备份整个数据库则此项省略)(filename.sql:表示备份文件的名称)-->

mysqldump -u username -h host -p password dbname[ tbname1[,tbname2......]] > filename.sql;

<!--使用mysqldump命令恢复数据库(username:表示用户名)(dbname:表示数据库名)(filename.sql:为执行数据库备份后生成的文件)-->

mysql -u username -p [ dbname ] < filename.sql;

<!--表数据导出到文本文件(filename:用来指定文本文件的路径和文件名)-->

SELECT [ field_name ] FROM tablename [ WHERE condition ] INTO OUTFILE 'filename' [ OPTION ];

<!--表数据导入到文本文件(filename:用来指定文本文件的路径和文件名)(tablename:用来指定导入表的名称)-->

LOAD DATA INFILE filename INTO TABLE tablename [OPTION];

<!--创建普通用户 (IDENTIFIED BY:用来设置密码,默认时密码为空)(username:表示创建的用户名)(host:表示指定用户登录的主机名,如果只是本地用户可使用“localhost”,如果该用户可登录任何远程主机,可使用通配符“%”)(PASSWORD:表示使用哈希值设置密码,为可选项)(password:表示用户登录时使用的密码)-->

CREATE USER 'username'@'host' [ IDENTIFIED BY [PASSWORD] 'password' ];

<!--执行GRANT语句创建用户并授权 (priv_type:表示设置的用户操作权限,如果授予所有权限可使用ALL。MySQL中的权限很多,以下列出了常用的数据库或表操作权限(CREATE和DROP权限:可以创建数据库和表,或删除已有数据库和表)(INSERT、DELETE、SELECT和UPDATE权限:允许在一个数据库现有的表上实施增,删,查,改操作)(ALTER权限:可以用ALTER TABLE 来更改表的结构和重新命名表))(databasename,tablename:表示所创建用户账号的权限范围,即只能在指定数据库和表上使用此权限,如果给所有数据库和表授权,则可以使用 *.*)(WITH GRANT OPTION:表示对新建立的用户赋予GRANT权限,可选)(其它部分与CREATE USER 语句一致)-->

GRANT priv_type ON databasename,tablename TO username @ host [IDENTIFIED BY [PASSWORD] 'password' ] [WITH GRANT OPTION]

<!--使用mysqladmin命令修改root账户密码 (使用修改密码的用户应为超级管理员,如:root用户)(newpassword:指新密码,使用""括起来)-->

mysqladmin -u username -p password "newpassword";

<!--使用SET命令修改用户密码 ( PASSWORD()函数:用于对密码加密)(newpassword:指新密码,使用""括起来)(如果是普通用户修改密码,可省略FOR子句)-->

SET PASSWORD [FOR username@ host] = PASSWORD ("newpassword");

<!--删除普通用户 (以下语句可以用于删除一个或多个MySQL账户。)(要使用必须拥有数据库的全局CREATE USER权限或DELETE权限,一般由数据库管理员(DBA)来执行此操作)-->

DROP USER username1@host [,username2@host.....];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

〆、会飞的狼ゞ、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值