MySQL快速入门(上)

前言

参考原文链接,本文是我边看原文学习,边摘抄写出来的。。。
http://mysql.phpxy.com/

看完上篇,看下篇。因为简书有内容长度限制,一篇实在写不完。
MySQL快速入门(下)

不到万不得已就将就着看本文吧,别看原文了.错别字多就算了,到后面还有还多语句的示例代码都张冠李戴了.当然,本文可能亦有错误,可以联系指正,不胜感激。
阅读本文前如果您了解常用的命令行操作会更加得心应手。什么都不会的也不行啊,至少你要会装好MySQL啊。知道怎么在MySQL中输入命令啊。不会的自己去学,上面原文链接里也有讲,自己看看吧。

数据库的连接登录

musql -h localhost -u root -p

参数说明:

参数 说明
-h 表示数据库的连接地址,如果是本机就可以省略
-u 表示指定要登录的用户
-p 表示使用密码登录

注:通常是在回车之后,输入密码。因为,密码输入时的字符是不可见的,输完密码直接回车登录。防止旁边有人把重要的密码看走。

看到命令行出现

mysql>

则说明登录成功,已经进入了MySQL的数据库程序,mysql > 表示等待输入指令。

在登陆成功后有这么一句提示,可能大家不太理解:

Your MySQL connection id is 7

表示第7次连接登陆,每登陆一次这个id为加1。下一次显示的会是第8次。

数据库操作

创建数据库

create database DB_MUMU;

创建一个名为DB_MUMU的数据库,注意语句以;结尾。不出意外的话终端中可以看到:

> mysql> create database DB_MUMU;
Query OK, 1 row affected (0.01 sec)

“Query OK” 表示上面的命令执行成功,所有的 DDL 和 DML(不包 括 SELECT)操作执行成功后都显示“Query OK”,这里理解为执行成功就可以了;“1 row affected” 表示操作只影响了数据库中一行的记录,“0.00 sec”则记录了操作执行的时间。
如果要新创建的数据库已经存在的话,将会提示:

mysql> create database DB_MUMU;
ERROR 1007 (HY000): Can’t create database ‘DB_MUMU’; database exists

查看数据库

show databases;

值得注意的是databases应该是+s的复数形式。用单数还是复数形势具体情况按照英语语法写就行了。比如数据库系统的用户信息就保存在mysql数据库的user表中。
如下图所示,执行本操作后可以看到存在的数据库。有几个是MySQL自己创建的,用来管理数据库系统。

show databases

选中数据库

mysql> use DB_MUMU;
Database changed    

这样就进入到了 DB_MUMU数据库中了。当然你可以使用 use 语句随时切换要操作的数据库,刚刚选中了DB_MUMU ,现在我们切换到mysql内容的 mysql 数据库看看:

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

出现 ” Database changed“ 表示切换成功。

查看数据库中的表

进入到库后我们可以看这个库里面有多少个数据表。

show tables;

使用use 进入到某个数据库后才可以使用show tables

示例,查看mysql数据库的表:

show tables;

这些表里面的内容是关系数据库服务器相关的用户、权限、数据库状态、设置等相关的信息数据。

删除数据库

drop database 库名;

注意:
drop 是汉语可以翻译为指掉下来,不要了的意思
database 是指库
库名 是指要删掉的库的名称
示例:

mysql> drop database liwenkai;
Query OK, 0 rows affected (0.01 sec)

【切记】注:数据库删除后,下面的所有数据都会全部删除,所以删除前一定要慎重并做好相应的备份。

数据表操作

创建表

create table 表名(字段名1 字段类型,…字段名n 字段类型n);              //语法
create table user(username varchar(20),password varchar(32));     //示例
//创建一个表名叫user的表,第一个字段为username、表的字段类型为varchar长度为32个长度。第二个字段为password,类型也为varchar,长度也为32个长度。

可以在类型后接上长度如:varchar(20)。
字符数据类型后面碰到再说吧。

mysql> create table emp(
ename varchar(10),
hiredate date,
sal float(10,2),
deptno int(2)
);
Query OK, 0 rows affected (0.63 sec)
mysql> create table dept( deptno int(4), deptname varchar(20));
Query OK, 0 rows affected (0.12 sec)

查看表字段结构信息

desc 表名;
desc  table;
//查看table表的表结构。

操作显示如下:(好吧,这段操作效果是抄的。)

mysql> desc table;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| ename | varchar(10) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
4 rows in set (0.39 sec)
//出现的不是一模一样的字段结构信息很正常,只是做个示例而已。不必在意。弄懂每个SQL语句的含义和作用就行了。

查看表的创建语句

好吧,看到这个标题我也一知半解的。继续往下看吧。

类别 详细解释
基本语法 show create table 表名 \G;
示例语句 show create table emp \G;
示例说明 查看表emp的创建语句

本来人家资料上,每个语句都是用这种表格解释的,我嫌繁琐。前面的没用,到这里越来越觉得这个表格解释很有必要。从这里开始用这种表格啦。emp是表名,之前上个原文本来也是emp但是被我强行改成了table,结果看吧。到这里如果还用table作表名的话,SQL语句中就会出现两个table单词,容易让大家搞混了。
执行完整示例:

mysql> show create table emp \G;   //别问我这个G什么鬼,后面解释。
Table: emp    //嗯,表名emp,我也不知道为啥叫emp。反正就起了这么个名字。
Create Table: CREATE TABLE emp (
ename varchar(10) DEFAULT NULL,
hiredate date DEFAULT NULL,
sal decimal(10,2) DEFAULT NULL,
deptno int(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;      //这些就是创建这张表的时候的语句。后面的引擎和字符集再说
1 row in set (0.00 sec)
ERROR:
No query specified

可以看到表定义以外,还可以看到表的 engine(存储引擎) 和 charset(字符集)等信息。“\G”选项的含义是使得记录能够按照字段竖着排列,对于内 容比较长的记录更易于显示。那也就是说只要你屏幕足够宽,不觉得看着不舒服的话可以不加 \G 选项咯。
嗯,这个命令可以用来这个表是怎么建的,主要有哪些字段,对应字段的数据类型。

删除表

类别 详解
基本语法 drop table 表名;
语法示例 drop table emp;
示例说明 删除emp这张表
mysql> drop table emp;
Query OK, 0 rows affected (0.34 sec)

注:删除表。表和数据均会丢失,请勿必删除重要表之前备份数据。

指定表引擎和字符集

指定表引擎

什么是表引擎??先不管,有兴趣在谷歌了解吧。
在创建表最后,我们常用MyISAM或者InnoDB引擎。在指定引擎时,我们可以使用:

ENGINE=InnoDB

这还用说吗?上一条命令查看表的创建语句的显示结果代码里就有啊。没看懂?

指定表默认字符集:

DEFAULT CHARSET=utf8

震惊!utf8居然没有-。。。不是UTF-8吗??大小写不照顾也就算了。连-都丢了。

谔谔,这。为什么都用过了删除表命令才介绍指定表引擎和字符集的语句呢。。有点儿马后炮吧。应该放在创建表的时候一起说啊。。
表操作完了。。。下面是数据字段操作。。。

数据字段操作

假设我们存在user表,user结构如下:

mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(10) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
4 rows in set (0.01 sec)
//都看到这一步啦,多余的话也不用说啦。直接上代码应该都懂什么意思吧。要还真不懂说明没好好看。自己从头再来吧。

修改表字段类型modify

类别 详解
基本语法 alter table 表名 modify 字段名 varchar(20);
代码示例 alter table user modify username varchar(20);
示例说明 将user表的username的类型改为varchar(20)

可以把这个alter理解成类似于use把。选定数据库的时候是use 数据库名;
alter就是选定表。

修改表字段类型modify

哈哈哈,用了这么多年还是觉得QQ的截图功能真好用。。
执行结果:

mysql> alter table user modify username varchar(20);
Query OK, 0 rows affected (0.48 sec)
Records: 0 Duplicates: 0 Warnings: 0

不得不说其实这个执行结果没啥好看的,但是还得要有。
再来看一眼,确认这个字段被改过来了。。😄
再用desc看一眼确定改过来没。

mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
4 rows in set (0.01 sec)

增加表字段

类别 详解
基本语法 alter table 表名 add column 字段名 类型;
代码示例 alter table user add column age int(3);
实例说明 添加一个叫做age的字段,类型是长度为3的整型

单词column意思是“列”,嗯,这也没毛病,整个数据库中只要记住column是列,然后“列”是字段即可。int(3):长度为3的整型?那就是说范围只能是-999~999了吧。

mysql> alter table emp add column age int(3);
Query OK, 0 rows affected (0.40 sec)
Records: 0 Duplicates: 0 Warnings: 0

再用desc看一眼,确定改过来了。谔谔,略有点强迫症吧。非要看一眼,系统都说了Query OK了啊。那行,看看吧,看看吧。看看也无妨。

mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
5 rows in set (0.00 sec)

我就觉得这没啥好看的。直接就复制粘贴了。。。
下一个语句:

增加字段时控制字段顺序

类别 详解
基本语法 ALTER TABLE 表名 ADD 字段名 字段类型 AFTER 字段名;
代码示例 ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
示例说明 在user表中,在字段creatip后面增加email字段,类型长度为60的varchar

刚刚学了增加字段。如果你仔细实验发现每次都是增加在最后面,如何在第一个增加或者在指字字段之后增加呢?
嗯,这倒是真的。

类别 详解
基本语法 ALTER TABLE 表名 ADD 字段名 字段类型 AFTER 字段名;
代码示例 ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
示例说明 在user表中,在字段creatip后面增加email字段,类型长度为60的varchar
类别 详解
基本语法 ALTER TABLE 表名 ADD 字段名 字段类型;
代码示例 ALTER TABLE user ADD id INT(10) FIRST;
示例说明 在user表中在开始,就是最开头那一端头子上增加字段id,长度为10的整型。

我说怎么乍一看两个表格,之前都是一个表格啊。原来是分了两种情况啊。嗯,挺合理的。还有,这么怎么莫名其妙改用大写了。

ALTER TABLE user ADD email VARCHAR(60) AFTER createip;
Query OK, 0 rows affected (0.40 sec)
Records: 0 Duplicates: 0 Warnings: 0

老毛病。。。

mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
| email | varchar(60) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
6 rows in set (0.00 sec)

删除表字段

类别 详解
基本语法 alter table 表名 drop column 字段名;
代码示例 alter table user drop column age;
示例说明 删除user表中的age字段
mysql> alter table user drop column age;
Query OK, 0 rows affected (0.27 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
| email | varchar(60) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
5 rows in set (0.00 sec)

表字段改名

类别 详解
基本语法 alter table 表名 change 字段原名 字段新名 字段类型;
代码示例 alter table user change email em varchar(60);
代码详解 把user表里面的email字段改名为em

好吧,刚开始我天真地想,改名?删掉字段,再增加字段不行吗?
不行,那你把数据咋办?也不要啦?
而改名的话数据是不受影响的。

类别 详解
基本语法 alter table 表名 change 字段原名 字段新名 字段类型;
代码示例 alter table user change email em varchar(60);
代码详解 把user表里面的email字段改名为em

详细示例:

mysql> alter table user change email em varchar(60);
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
| em | varchar(60) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
5 rows in set (0.00 sec)

全是这个套路,改一下,desc看一下效果。。。

修改表字段排列顺序

在前的字段增加和修改语句(add/change/modify)中,最后都可以加一个可选项 first|after。
//。。。发现这原文作者老爱放马后炮。啥事都不早说,啥知识点都藏着掖着,生怕你学会了。
增加表字段时我们已经学过了如何调整顺序。我们现在在来看看另外的change或modify如何来调整顺序。
//所以这个调整排列顺序主要是使用change和modify的时候加上first/after选项来实现调整顺利。

那先用first选项试一试吧:

mysql> alter table user modify em varchar(60) first;
Query OK, 0 rows affected (0.41 sec)
Records: 0 Duplicates: 0 Warnings: 0

modify是在修改字段类型,加上first选项在修改字段类型时顺便就把em字段移动到开头了

mysql> desc user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| em | varchar(60) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
5 rows in set (0.00 sec)

今晚(2017年8月3日 00点25分)的最后一个字段操作命令了。完了这个就去睡啦。。

修改表名

别问我为什么把修改表名放在了字段操作里面讲。我也不知道原文作者怎么想的啊。。。真是伤脑筋啊。先敲吧,敲完有必要搬迁的话就搬迁吧。。
;

类别 详解
基本语法 alter table 旧表名 rename 新表名 ;
示例代码 alter table user rename new_user 示例说明 将表user改名为new_user

感觉这个命令真的简单。不难理解啊。英语好的好处吧??
早在前面就早该将啦。

mysql> alter table user rename new_user;
Query OK, 0 rows affected (0.35 sec)
mysql> desc new_user;
±---------±--------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±---------±--------------±-----±----±--------±------+
| em | varchar(60) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
| createtime | int(10) | YES | | NULL | |
| createip | int(10) | YES | | NULL | |
±---------±--------------±-----±----±--------±------+
5 rows in set (0.00 sec)

hahahah,今晚的完啦。。。这些就上篇吧。也写了两天呢。
明天开始写下篇。老规矩,边学边写。
下篇要讲这些内容啦。

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

推荐阅读更多精彩内容

  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 4,028评论 0 19
  • MySQL 数据库常用命令 1、MySQL常用命令 create database name; 创建数据库 use...
    55lover阅读 4,769评论 1 57
  • 不到万不得已就将就着看本文吧,别看原文了.错别字多就算了,到后面还有还多语句的示例代码都张冠李戴了.当然,本文可能...
    Airmole阅读 1,643评论 0 4
  • MySQL5.6从零开始学 第一章 初始mysql 1.1数据库基础 数据库是由一批数据构成的有序的集合,这些数据...
    星期四晚八点阅读 1,133评论 0 4
  • 案例如下:如图所示,某公司的人员名单如下图所示。 现在需要把名单整理为如图所示的结果 大家思考几分钟哈。有没有什么...
    雷哥Office阅读 530评论 0 4