准备工作
首先打开cmd命令窗口,并使用root用户登录:
#使用 root用户登录,并输入密码
mysql -h localhost -u root -p
一、新建数据库
首先,我们创建一个数据库,给它一个名字,比如 mysql_zxl
。
语句格式为 CREATE DATABASE <数据库名字>;
,(注意不要漏掉分号 ;
),前面的 CREATE DATABASE
也可以使用小写,具体命令为:
CREATE DATABASE mysql_zxl;
创建成功后输入命令 show databases;
(注意不要漏掉;
)检查一下:
在大多数系统中,SQL 语句都是不区分大小写的,因此以下语句都是合法的:
CREATE DATABASE name1;
create database name2;
CREATE database name3;
create DAtabaSE name4;
但是出于严谨,而且便于区分保留字和变量名,通常把保留字大写,把变量和数据小写。
二、连接数据库
接下来的操作,就在刚才创建的 mysql_zxl
中进行,由于一个系统中可能会有多个数据库,要确定当前是对哪一个数据库操作,使用语句 use <数据库名字>
:
use mysql_zxl;
如图显示,则连接成功:
输入命令 show tables;
可以查看当前数据库里有几张表,现在mysql_zxl
里还是空的:
三、新建数据表
数据表(table
)简称表,它是数据库最重要的组成部分之一。数据库只是一个框架,表才是实质内容。
而一个数据库中一般会有多张表,这些各自独立的表通过建立关系被联接起来,才成为可以交叉查阅、一目了然的数据库。
在数据库中新建一张表的语句格式为:
CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);
我们尝试在 mysql_zxl
中新建一张表 employee
,包含姓名,ID 和电话信息,所以语句为:
CREATE TABLE employee (id int,name char(16),phone char(11));
如图即为创建成功:
然后再创建一张表 department
,包含名称和电话信息,想让命令看起来更整洁,可以这样输入命令:
这时候再 show tables;
一下,可以看到刚才添加的两张表:
四、数据类型
MySQL 的数据类型和其他编程语言大同小异,下表是一些 MySQL 常用数据类型:
数据类型 | 大小(字节) | 用途 | 格式 |
---|---|---|---|
INT | 4 | 整数 | |
FLOAT | 4 | 单精度浮点数 | |
DOUBLE | 8 | 双精度浮点数 | |
ENUM | – | 单选,比如性别 | ENUM(‘a’,‘b’,‘c’) |
SET | – | 多选 | SET(‘1’,‘2’,‘3’) |
DATE | 3 | 日期 | YYYY-MM-DD |
TIME | 3 | 时间 | HH:MM:SS |
YEAR | 1 | 年分值 | YYYY |
CHAR | 0~255 | 定长字符串 | |
VARCHAR | 0~255 | 变长字符串 | |
TEXT | 0~65535 | 长文本数据 |
CHAR 和 VARCHAR 的区别: CHAR 的长度是固定的,而 VARCHAR 的长度是可以变化的,比如,存储字符串 “abc",对于 CHAR(10),表示存储的字符将占 10 个字节(包括 7 个空字符),而同样的 VARCHAR(12) 则只占用4个字节的长度,增加一个额外字节来存储字符串本身的长度
,12 只是最大值,当你存储的字符小于 12 时,按实际长度存储。
五、插入数据
通过 INSERT 语句向表中插入数据,语句格式为:
INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);
现在向 employee 中加入 Zhang、Li 和 Wang:
INSERT INTO employee(id,name,phone) VALUES(01,'Wang',188188188);
INSERT INTO employee VALUES(02,'Li',166166166);
INSERT INTO employee(id,name) VALUES(03,'Zhang');
这里需要注意:
有的数据需要用单引号括起来,比如 Wang、Li、Zhang 的名字,这是由于它们的数据类型是 CHAR 型。此外 VARCHAR,TEXT,DATE,TIME,ENUM 等类型的数据也需要单引号修饰,而 INT,FLOAT,DOUBLE 等则不需要。
第一条语句比第二条语句多了一部分:(id,name,phone)
这个括号里列出的,是将要添加的数据 (01,'Wang',188188188)
其中每个值在表中对应的列。而第三条语句只添加了 (id,name)
两列的数据,所以在表中Li的phone为NULL。
现在我们再次使用语句 SELECT * FROM employee;
查看 employee 表,可见 Zhang 和 Li 的相关数据已经保存在其中了: