MySQL基础指令整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanjingling_zz/article/details/82774204

1.Mysql登录:mysql –uroot –p –P3306 –h127.0.0.1

2.Mysql退出:mysql > exit;     mysql > quit;

3.修改提示符信息:(此命令是将提示符修改为登录名@主机名 数据库名)

mysql> PROMPT \u@\h \d>

root@localhost (none)>use newone;

Database changed

root@localhost newone>

4.关键字大写,数据库名、表名、字段小写。

5.显示当前服务器版本:select VERSION();

6.显示当前日期时间:select NOW();

7.显示当前用户:select USER();

8.规范:

关键字和函数名称全部大写;

数据库名称、表名称、字段名称全部小写;

SQL语句必须以分号结尾;

9.Mysql数据库指令:

创建数据库:CREATE DATABASE 数据库名;

root@localhost newone>CREATE DATABASE IF NOT EXISTS newone;

如果存在newone数据库,则有提示,显示提示信息:SHOW WARNINGS;

举个例子:创建数据库编码格式为gbk,创建完成后修改为utf-8。

mysql> CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET gbk;

mysql> SHOW CREATE DATABASE t2;

mysql> ALTER DATABASE t2 CHARACTER SET = utf8;

mysql> SHOW CREATE DATABASE t2;

删除数据库:drop database <数据库名>;

10.数据类型:是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。

整型

数据类型

存储范围

字节

TINYINT

有符号:-128到127

无符号:0到255

1

SMALLINT

有符号:-32768到32767

无符号:0到65535

2

MEDIUMINT

 

3

INT

 

4

BIGINT

 

8

浮点型

数据类型

存储范围

FLOAT

有符号:-128到127

无符号:0到255

DOUBLE

有符号:-32768到32767

无符号:0到65535

日期

数据类型

存储需求

YEAR

1

TIME

3

DATE

3

DATETIME

8

TIMESTAMP

4

字符型

数据类型

存储需求

CHAR(M)

定长,例如我们CHAR(ABC),也是占了5个字符

VARCHAR(M)

变长,例如我们CHAR(ABC),只是占了3个字符

TINYTEXT

L<2的8次幂

TEXT

 

MEDIUMTEXT

 

LONGTEXT

 

ENUM(‘value1’, ‘value2’)

从几个选项中选择,只能选一个。

SET(‘value1’, ‘value2’)

一组数值的集合,可以任意选择。

11.数据表

数据表是数据库最重要的组成部分之一,是其他对象的基础。

首先要通过use命令打开数据库,use newone;

创建数据表:

mysql> CREATE TABLE IF NOT EXISTS tb1(

-> username varchar(20),

-> age TINYINT UNSIGNED,

-> salary FLOAT(8,2) UNSIGNED);

查看数据表(不仅可以查看当前数据库还可以查看其它数据库的数据表是否存在):

SHOW TABLES FROM world;

向数据表中写入记录:

给全部列插入数据

INSERT tb1 VALUES('TOM',25,7863.25);

给其中部分列插入数据

INSERT tb1(username,salary) VALUES ('JOIN',4000.29);

设定数据表是否允许为空,即给数据表添加属性,一列为空,一列不为空:

mysql> CREATE TABLE tb2(

-> username VARCHAR(20) NOT NULL,

-> age TINYINT UNSIGNED NULL);

12.Auto_increment的设置:

自动编号,且必须与主键组合使用;

默认情况下,起始值为1,每次的增量为1;

即此字段一定是数值类型。

13.主键:

一张数据表中只有1个主键

主键自动为NOT NULL

举例子:

mysql> CREATE TABLE tb3(

-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

-> username VARCHAR(30) NOT NULL);

创建属性有主键的表后,插入数据:

INSERT tb3(username) VALUES('AMI');

INSERT tb3(username) VALUES('JOIN');

INSERT tb3(username) VALUES('MARK');

INSERT tb3(username) VALUES('cora');

最后查看表,因为id是主键,且是自增的,所以不用赋值,可以保证id为唯一值。

mysql> select * from tb3;

+----+----------+

| id | username |

+----+----------+

|  1 | JOIN     |

|  2 | mark     |

|  3 | ami      |

|  4 | cora     |

+----+----------+

总结:auto_increment必须和主键一起使用,但是主键不一定要和auto_increment一起使用。

14.唯一约束:UNIQUE KEY

唯一约束;唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NUll),每张数据表可以存在多个唯一约束。

15.从外部文件导入到数据库中

从e:\mysql\mydb2.sql中将文件中的SQL语句导入数据库中:

1.从命令行进入mysql,然后用命令CREATE DATABASE mydb2;创建数据库mydb2。

2.退出mysql 可以输入命令exit;或者quit;

3.在CMD中输入下列命令:

c:\>mysql -h localhost -u root -p mydb2 < e:\mysql\mydb2.sql

然后输入密码,就OK了。

16.将数据库导出数据文件:

1.将数据库mydb导出到e:\mysql\mydb.sql文件中:

打开开始->运行->输入cmd    进入命令行模式

c:\>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql

然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。

2.将数据库mydb中的mytable导出到e:\mysql\mytable.sql文件中:

c:\>mysqldump -h localhost -u root -p mydb mytable>e:\mysql\mytable.sql

3.将数据库mydb的结构导出到e:\mysql\mydb_stru.sql文件中:

c:\>mysqldump -h localhost -u root -p mydb --add-drop-table >e:\mysql\mydb_stru.sql

17.运算符优先顺序:

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

在DOS命令下最大化窗口,可以使用wmic指令:单击最大化后,再退出,输入命令quit.

18.聚集函数:

我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。使用这些函数,Mysql查询可用于检索数据,以便分析和报表生成。这种类型的检索例子有以下几种。

  1. 确定表中的行数。
  2. 获得表中行组的和。
  3. 找出表列的最大值、最小值和平均值。

重点:使用聚集函数的目的是要汇总信息。而不是实际表数据。

聚集函数如下:

函数

说明

AVG()

返回某列的平均值

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列的和

AVG()函数举例:

select avg(prod_price) as avg_price from products;

输出prod_price列的平均数。

此avg()函数只能对单独的列操作,不可以对多个列进行操作。

其他函数功能和avg()类似。名不同意义不同。

19.数据分组:

分组是在select语句的group by子句中建立的。使用group by,就不必指定要计算和估值的每个组了。系统会自动完成。

注意:

group by子句可以包含任意数目的列。这是的能对分组进行嵌套,为数据分组提供更细致的控制。

如果在group by 子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算。

Group by子句中列出的每个列都必须是检索列或有效的表达式。如果在select中使用表达式,则必须在group by子句中指定相同的表达式。不能使用别名。

除聚集计算语句外,select语句中的每个列都必须在group by子句中给出。

如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,他们将分为一组。

Group by子句必须出现在where子句之后,order by子句之前。

关系数据库比非关系数据库的可伸缩性要好

20.内联、外联、左联、右联的区别

MySQL联合查询效率较高,以下例子来说明联合查询(内联、左联、右联、全联)的好处:

T1表结构(用户名,密码)

userid(int)   usernamevarchar(20)   passwordvarchar(20)

1   jack  jackpwd

2   owen  owenpwd

 

 

T2表结构(用户名,密码)

userid(int)   jifenvarchar(20)   dengjivarchar(20)

1   20   3

3   50   6

第一:内联(inner join)

如果想把用户信息、积分、等级都列出来,那么一般会这样写:

 

select * from T1, T3 where T1.userid = T3.userid

(其实这样的结果等同于select * from T1 inner join T3 on T1.userid=T3.userid )。

 

把两个表中都存在userid的行拼成一行(即内联),但后者的效率会比前者高很多,建议用后者(内联)的写法。

 

SQL语句:

select * from T1 inner join T2 on T1.userid = T2.userid

 

运行结果

T1.userid   username   password   T2.userid   jifen   dengji

1   jack   jackpwd   1   20   3

第二:左联(left outer join)

显示左表T1中的所有行,并把右表T2中符合条件加到左表T1中;

右表T2中不符合条件,就不用加入结果表中,并且NULL表示。

 

SQL语句:

select * from T1 left outer join T2 on T1.userid = T2.userid

 

运行结果

T1.userid   username   password   T2.userid   jifen   dengji

1   jack   jackpwd   1   20   3

2   owen   owenpwd   NULL   NULL   NULL

第三:右联(right outer join)。

显示右表T2中的所有行,并把左表T1中符合条件加到右表T2中;

左表T1中不符合条件,就不用加入结果表中,并且NULL表示。

 

SQL语句:

select * from T1 right outer join T2 on T1.userid = T2.userid

 

运行结果

T1.userid   username   password   T2.userid   jifen   dengji

1   jack   jackpwd   1   20   3

NULL   NULL   NULL   3   50   6

第四:全联(full outer join)

显示左表T1、右表T2两边中的所有行,即把左联结果表 + 右联结果表组合在一起,然后过滤掉重复的。

 

SQL语句:

select * from T1 full outer join T2 on T1.userid = T2.userid

 

运行结果

T1.userid   username   password   T2.userid   jifen   dengji

1   jack   jackpwd   1   20   3

2   owen   owenpwd   NULL   NULL   NULL

NULL   NULL   NULL   3   50   6

 

总结,关于联合查询,效率的确比较高,4种联合方式如果可以灵活使用,基本上复杂的语句结构也会简单起来。

 

猜你喜欢

转载自blog.csdn.net/lanjingling_zz/article/details/82774204