第一部分:固定格式指令


此处MYSQL指令用大写表示,而在实际运用中并不区分大小写。


1.登陆MYSQL指令:

mysql -h (host_name) -u (user_name) -p


括号内的内容为自行填写的内容,在连接本地服务器且是默认设置的情况下,可以省略,-h这部分内容,而在user_name括号内填写root即可


mysql -u root -p


使用上述语句,填写密码后即可登陆。



2.退出MYSQL

exit



3.创建数据库

CREATE DATABASE test;



4.选择数据库


USE test;



5.删除数据表(假设存在这个数据表)


DROP TABLE table_test;




6.查看表结构(假设存在这个数据表)


DESCRIBE TABLE score;



7.查看所有数据库


SHOW DATABASES;




8.查看库中所有数据表


SHOW TABLES;


到目前为止,都是些无个人特征的指令,无需记忆,只要在需要使用时查询即可。




第二部分:非固定格式指令

1.创建数据表


首先,我们来阅读一段代码,这段代码用于在选定的数据库中创建一个存放学生成绩的数据表。


CREATE TABLE score
(
student_id INT UNSIGNED NOT NULL ,
event_id INT UNSIGNED NOT NULL,
score INT UNSIGNED NOT NULL,
PRIMARY KEY (event_id,student_id),
FOREIGN KEY(event_id) REFERENCES grade_event(event_id),
FOREIGN KEY (student_id) REFERENCES student(student_id)
) ENGINE=InnoDB;




为了读懂这个程序,接下来我们一行行来阅读。


第一行的CREATE TABLE score,是创建数据表的最简单形式,即创建一个空表,若你想这么做,只需要输入


CREATE TABLE score;



第三行有那么几个成分,1.student_id 2.int unsigned 3.not null 


第一个成分代表该列的表头,名为student_id,即代表该表的第一列存放的是学生学号;第二个成分代表该列的数据类型,在学习笔记3中我会详细解释,此处代表学生学号为无符号整形类;第三个成分代表该列的数据情况,在这个位置有三个选择(1.not null 2. null 3.不填),not null代表该列数据不能为空,null和不填都代表了该列数据可填可不填。



第五行又是一个特殊指令,primary key使括号内的两个成分组成该表中的唯一特征,举一个例子,1号学生在1号考试中会有一个成绩,1号学生可以在2号考试中也有一个成绩 ,但1号同学不会在1号考试中不会有两个成绩,这可能有些绕口,还请你自己多进行试验。



第六行是foreign key子句,这句话用来定义约束条件,比如第六行就是定义的event_id的约束条件,references表明这个event_id与哪一个表(此处为grade_event)的哪一列(此处为event_id)进行对应,此处用来确保在grade_event表中创建了一个event_id后,才能在score表中登记event_id,保证表中不会出现虚假信息。



第七行的末尾是显示的表明存储引擎是InnoDB,尽管在新版本中默认引擎就是InnoDB,但还是想在此指出可以由这种方式更换存储引擎。


为了各位能够试验上述代码,请在运行上述代码前,先运行以下代码,同时请各位测试下是否能读懂这些代码了呢。



CREATE TABLE student
(
name VARCHAR(20) NOT NULL,
sex ENUM('F','M') NOT NULL,
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (student_id)
) ENGINE=InnoDB;



CREATE TABLE grade_event
(
date DATE NOT NULL,
category ENUM('T','Q')NOT NULL,
event_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (event_id)
) ENGINE=InnoDB;


需要指出的是,auto_increment为一特殊指令,表示该列数据在不赋予值的情况下会自动在已有的数字上+1


运行后效果如果所示:


mysql基本操作命令 mysql操作指令_更新数据

2.插入数据

在MYSQL中有两种插入数据的形式

INSERT INTO student VALUES('Kyle','M',NULL);INSERT into student(name,sex) VALUES ('Kyle','M');


你可以选用任意一种方式,但必须注意他们的区别,第一种插入方式必须填写每一列需要填入的值,而第二种方式可以的选择想要填写的任意列。


此外,MYSQL提供各位批量插入数据的方式,即


INSERT into student(name,sex) VALUES ('Kyle','M'),('Nathan','M');



mysql基本操作命令 mysql操作指令_更新数据_02




3.查询数据

查询数据在MYSQL中是一个非常关键的功能,怎么读取储存的数据决定了你对数据库的理解程度。

首先笔者像指出最简单的一条查询指令:

SELECT *FROM student;

学会这句话,各位就可以获取存储在表中的数据了。

接下来,笔者想展示一个复杂形式:



SELECT student.student_id,student.name,score.score 
FROM grade_event INNER JOIN score INNER JOIN student 
ON grade_event.event_id=score.event_id 
AND score.student_id=student.student_id 
ORDER BY student.student_id;




通过以上这个形式,我们可以将三个表的形式结合到一个表中进行输出。


首先,student.student_id用来确定是哪个表中的哪个信息(这里是student表中的student_id信息)


其次,INNER JOIN表示将两个不同的表联系起来表示,ON表示依据什么关系将两个表联系起来,此处是依据event_id这个变量进行联系,即event_id相同的一行属于同一个人


最后,ORDER BY表示依据什么规律进行排序,此处表示根据student_id从大到小进行排序。


在尝试以上这句查询形式前,请先添加以下指令:

insert into score values(1,1,95);



接下来,请再看一种形式

SELECT name FROM student where student_id=1;


mysql基本操作命令 mysql操作指令_数据_03


这句话使用了一个新的成分,where,用where可以限定查询的条件,后面可以跟各种逻辑形式。

mysql基本操作命令 mysql操作指令_更新数据_04

以上形式都非必须,请各位自行搭配用来获取最理想的效果。

4.更新数据

MYSQL提供了更新数据的功能,使用该指令可以直接覆盖数据表中的原值,必须注意的是该指令必须搭配where来使用,避免造成致命性问题(更新了整张表)

UPDATE student SET name='Evan' WHERE student_id=1;





mysql基本操作命令 mysql操作指令_更新数据_05



5.删除表中数据

注意事项和更新数据类似,用法如下

DELETE FROM student WHERE student_id=2;