第一部分:固定格式指令
此处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
运行后效果如果所示:
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');
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;
这句话使用了一个新的成分,where,用where可以限定查询的条件,后面可以跟各种逻辑形式。
以上形式都非必须,请各位自行搭配用来获取最理想的效果。
4.更新数据
MYSQL提供了更新数据的功能,使用该指令可以直接覆盖数据表中的原值,必须注意的是该指令必须搭配where来使用,避免造成致命性问题(更新了整张表)
UPDATE student SET name='Evan' WHERE student_id=1;
数
5.删除表中数据
注意事项和更新数据类似,用法如下
DELETE FROM student WHERE student_id=2;