常用的MySQL命令大全(完整版、太到位了)

一、连接MySQL

格式: mysql -h主机地址 -u用户名 -p用户密码

1.连接到本机上的MYSQL

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -u root -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的。这里密码输入即可进入MySQL:

G:\>cd G:\mysql_log\bin   --进入目录 mysqlbin
G:\mysql_log\bin>mysql -u root -p    --键入命令mysql -u root -p
Enter password: ******  --输入密码即可
Welcome to the MySQL monitor.  Commands end with ; or \g.
2.连接到远程主机上的MYSQL

假设远程主机的IP为:110.110.110.110,用户名为root,密码为123456。则键入以下命令:mysql -h 110.110.110.110 -u root -p 123456,这里不做演示了。

二、修改密码

格式:mysql admin -u 用户名 -p 旧密码 password 新密码
1.给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令:

mysqladmin -u root -password ab12;//注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2.再将root的密码改为1123123。

`mysqladmin -u root -p ab12 password 1123123;
三、 创建数据库
create database 数据库名;//如create database studentDB;
四、删除数据库
drop database <数据库名>;//如 drop database studentDB;
五、选择数据库
use studentDB;
六、数据类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(integer、smallint、decimal和numeric),以及近似数值数据类型(float、real和double precision)。

1.数值类型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 byte

(-128,127)

(0,255)

小整数值

SMALLINT

2 bytes

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 bytes

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 bytes

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 bytes

(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 bytes

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度 浮点数值

DOUBLE

8 bytes

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度 浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

小数值

2.日期和时间类型

类型

大小 ( bytes)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

‘-838:59:59’/‘838:59:59’

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳


5.字符串类型

类型

大小

用途

CHAR

0-255 bytes

定长字符串

VARCHAR

0-65535 bytes

变长字符串

TINYBLOB

0-255 bytes

不超过 255 个字符的二进制字符串

TINYTEXT

0-255 bytes

短文本字符串

BLOB

0-65 535 bytes

二进制形式的长文本数据

TEXT

0-65 535 bytes

长文本数据

MEDIUMBLOB

0-16 777 215 bytes

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215 bytes

中等长度文本数据

LONGBLOB

0-4 294 967 295 bytes

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295 bytes

极大文本数据

注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

七、创建数据表
create table IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT unsigned auto_increment,--unsigned表示无符号数,即值大于等于0
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )//完整性约束
);

完整性约束包括:not null、auto_increment、primary key、foreign key(外码)referrences 参照表(主码)

、unique、check() 等;

八、删除MySQL数据表
drop table 表名;//如 drop table course;
九、插入数据
insert into 表名 ( field1, field2,...fieldN )
                       values
                       ( value1, value2,...valueN );
十、查询数据
select [all|distinct]<目标列1> 别名[,<目标列2> 别名.....]from <表名1/视图名1>[,<表名2/视图名2>...]|<select 语句> as 别名 [where <条件表达式>][group by <列名>][having <条件表达式>][order by <列名>[desc|asc]];//查询语句的一般格式;
--如:select all name 姓名,sno 学号 from student where sex='男' order by class desc;
1.WHERE 子句

我们知道从 MySQL 表中使用 select语句来查询数据。如需有条件地从表中选取数据,可将 where子句添加到 select语句中,相当于做选择操作。where 子句也可以运用于 SQL 的 delete或者 update命令。

select field1, field2,...fieldN from table_name1, table_name2...
[where condition1 [and|or] condition2.....
 --如:select * from student where sdept='计算机系' and sex='男' and sage>=20;
 --又如 delete from student where sno='23131423';
 --再如 update student set sname='张三' where sno='23403432';
2.like子句

我们知道在 MySQL 中使用 SQL select命令来读取数据, 同时我们可以在 SELECT 语句中使用 where 子句来获取指定的记录。where子句中可以使用= > <等操作符来设定条件,当时有时候我们需要一些模糊的条件查询,例如,查找学生表中学生姓名姓刘的所有学生,这时就需要用SQL like子句中使用百分号 **%**字符来表示任意长度的字符串,_字符代表任意单个字符,通过这两个字符可以达到模糊查询的效果。

select * from student where sname like '刘_' and sno like '2000%';
--上述语句查询学生表中姓名为刘X开头且学号为'2000'开头的学生信息;
3.order by子句排序

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 order by 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

select field1, field2,...fieldN from table_name1, table_name2...
order by field1 [ASC|DESC], [field2...] [ASC|DESC];
--如:select * from student order by sage desc;//查询学生并按年龄降序排序,注意系统默认是asc排序
4.group by 子句分组

group by 语句根据一个或多个列对结果集进行分组,在分组的列上我们可以使用 count, sum, avg等函数。

例如: select class 班级,count(*) 人数 from student group by class;
5.join 和left join多表查询

我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。本章节我们将向大家介绍如何使用MySQL 的 join在两个或多个表中查询数据。你可以在select, update和 delete语句中使用Mysql 的 join 来联合多表查询。left join 与 join 有所不同。 MySQL left join 会读取左边数据表的全部数据,即便右边表无对应数据

select s.sno,s.sname,c.cno,s.score from student s,course c where s.sno =s.cno;//join方式相当于等值连接
select a.tutorial_id, a.tutorial_author, b.tutorial_count from tutorials_tbl a left join tcount_tbl b on a.tutorial_author = b.tutorial_author;//左连接方式,即保留左边悬浮元组
十一、更新数据

如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL update命令来操作。

update 表名 set field1=new-value1, field2=new-value2...[where 子句];
--例如:update student set sname='张三' where sno='23403432';
十二、删除数据

你可以使用 SQL 的 delete from 命令来删除 MySQL 数据表中的记录。

delete FROM 表名 [where 条件子句];
--例如;delete from student where sname='张三';
十三、未完待续。。。