MySQL基础指令整理

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查询可用于检索数据,以便分析和报表生成。这种类型的检索例子有以下几种。

确定表中的行数。
获得表中行组的和。
找出表列的最大值、最小值和平均值。
重点:使用聚集函数的目的是要汇总信息。而不是实际表数据。

聚集函数如下:

函数 说明
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种联合方式如果可以灵活使用,基本上复杂的语句结构也会简单起来。

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

推荐阅读更多精彩内容