**??**写在前面
最近的日子非常水逆,感觉7月莫非是双子座的水逆月吗?电脑的声卡估计坏了,怎么安排声卡驱动都没有声音,实在无奈,只能买一个外置声卡了,没想到意外好用!嘿嘿嘿,开心o(* ̄▽ ̄*)ブ。**既然电脑修好了,接下来就是对【数据库】和【数据分析之路】的暴更之路啦!**本章的内容可以说非常实用,是对于数据库和数据表操作的一个总体概括,学完本章的内容,基本上就可以自己创建一个数据库和数据表,开始记录数据啦!所以说,本章内容一定要好好码住哦!!
目录
**??**知识点3:数据库相关的基本操作
??3.1 数据库的基本操作
??3.1.1 数据库的基本操作
在了解数据库的基本操作前,我们先来查看一下数据库与数据表的基本结构,因为之后我们会讲解到一些在数据库中查看表的操作。
有关于数据库的基本操作代码如下:
1.查看已有库:SHOW DATABASES; 2.创建库(可指定字符集):CREATE DATABASE 库名[CHARACTER SET某一字符集]; PS:上述语句中[ ]内的字符集可以指定,也可以不指定 3.查看创建库的语句(查看字符集):SHOW CREATE DATABASE 库名; 4.查看当前所在库:SELECT DATABASE( ); 5.切换库:USE 库名; 6.查看库中已有表:SHOW TABLES; 7.删除库:DROP DATABASE 库名;
??3.1.2 数据库的操作案例
**step1.**首先,我们使用 " SHOW DATABASES" 来查看当前已有的库,我们发现在当下电脑中,共有5个数据库,分别是db1、information_schema、mysql、performance_schema、sys;其代码操作如下:
SHOW DATABASES;
**step2.**接下来,我们尝试一下创建库并为库指定字符集;在创建完毕后再使用 “SHOW DATABASES” 来检验一下是否创建库成功;其代码操作如下:
CREATE DATABASE kiko CHARACTER SET utf8; SHOW DATABASES;
**step3.**我们可以对一个已经创建完的库使用 ”SHOW CREATE DATABASE 库名" 的方式来查看创建这个数据库的语句与字符集,我们就对刚刚创建完的数据库 kiko 进行一下操作;其代码如下:
SHOW CREATE DATABASE kiko;
**step4.**我们可以使用 “SELECT DATABASE( )" 来查看我们当前所处在哪一个数据库中;其代码如下:
SELECT DATABASE();
**step5.**在上一步操作中我们知道当下我们没有进入任何一个数据库,我们可以通过使用切换库命令“USE 库名” 来进入一个数据库中,例如我们现在要进入kiko这个数据库中,那么我们输入的代码如下:
USE kiko; SELECT DATABASE();
**step6.**假如我们这时需要再查看一下数据库kiko中有哪些表,我们就可以使用" SHOW TABLES" 语句;其代码如下:
USE kiko; SHOW TABLES;
**step7.**最后我们体验一下删除库的操作,我们使用 “DROP DATABASE 库名” 来进行删除,这里的DROP可以理解为删除的意思;我们这里删除一下kiko这个数据库,其代码如下:
DROP DATABASE kiko; SHOW DATABASES;
??3.1.3 库名的命名规则
数据库库名的命名规则同C语言中对于标识符的命名规则相同,俗话说得好“万变不离其宗”,命名讲究的就是一个“清楚易理解”,其原则如下:
- 命名由数字、字母、下划线( _ )组成,不能用纯数字命名。
- 库名必须具有唯一性,不可以重名创建。
- 不能使用mysql关键字与特殊字符。
- 库名一般使用小写。
Q1:什么是MySQL关键字?
**A1:**这里的关键字含义同一些基本语言,例如C语言中对于关键字的定义相似。SQL中的关键字不能作为表名、列名;它是预先定义好的单词,决定了SQL语句做什么,通常大写。部分常见的关键字我们已经在上面的7步中有所展现,例如_SHOW、DATABASE、USE、SELECT、CREATE_ 这些都是关键字。
**??**知识点4:数据表的基本概念与操作
??4.1数据表的基本概念
Q1:什么是数据表?
**A1:**在数据库领域中,如果我们将数据库比喻成文件柜,那么文件柜里的文件就称作“表”。表是一种结构化的文件,可用来存储某种特定的数据。有一点我们需要注意,那就是在同一个数据库中,表的名字必须是唯一的,但在不同的数据库中可以存在相同的表名。
??4.1.1 数据表的“列”
数据表是由“列”组成的,表中的一列被称为一个字段,列存储了表中某部分的信息。我们可以通过下面这个二维表来更好地理解“列”的概念,下图这个表中存储着不同班级学生的一些身份信息,一列存储学生的姓名,一列存储学生的性别,一列存储学生的性别,一列存储学生的生日信息,一列存储学生所在的班级。
值得注意的是,数据表的每一列都有相应的数据类型,数据类型定义了列可以存储哪些数据种类。例如在建立上图这个表的过程中,我们将sno、sname、ssex、class这四列定义为可以存储20个字符的varchar类型。
#建学生信息表 create table student( sno varchar(20), sname varchar(20), ssex varchar(20), sbirthday datetime, class varchar(20) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Q1:定义数据类型有什么用呢?
**A1:**表中每列都有相应的数据类型,它可以限制改列中存储的数据;它还可以帮助正确地分类数据,在优化磁盘使用方面起到重要作用。
??4.1.2数据表的“行”
表中的数据是按行存储的,表中的一行被称为记录,所保存的每个记录存储在自己的行内;例如下图学生表中,每行可以存储一个学生信息。
??4.1.3数据表的“主键”
数据表中的每一行都应该有一列(或几列)可以唯一标识自己。例如订单表可以使用订单ID,员工表可以使用员工ID,而学生表中则可以用学号(sno)或学生姓名(sname)来标识区分每一行的学生信息。
Q1:什么是“主键”?
**A1:**唯一标识表中每行的这列(或这几列)称为主键,主键可以用来表示一个特定行。没有主键,更新或删除表中特定行就极为困难。表中的任何列都可以作为主键,但是想要成为一个“合格”的主键,它应当满足以下条件:
- 任意两行都不具有相同的主键值,否则无法成为唯一标识。
- 主键列不允许空值NULL,每一行必须具有一个主键值。
- 主键列中的值不允许修改或更新。作为一行信息的标识,怎么可以说改就改,说动就动,就好比一个学生表中,学生的姓名不会说改就改,但是作为“非主键”的学生的班级却可以随意变动。
- 主键通常定义在表的一列上,也可以一起使用多个列作为主键,在使用多列作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(注意这里强调的是列的组合不能重复,比如说上述表中有两个同名的”陆君“,但是他们的sno不同,这样的组合就可以唯一标识他们自己,进行区分)
我是分割线
??4.2数据表的基本操作
??4.2.1 创建表(可指定字符集)
我们在2.1.1中提到,数据表是由“列”组成的,因此我们在创建数据表的过程中,就需要定义表中的列,即定义表中的字段,其基本格式如下:
CREATE TABLE 表名( 字段名 数据类型, 字段名 数据类型, ··· 字段名 数据类型 )[CHARACTER SET 某一字符集]
对于上述的代码格式,我们可以通过一个例子进一步解释:
- 首先对于字段名,我们知道数据表由列组成,那么每一列都有一个名称,即字段名。例如在下图中,_s_no、s_name、s_sex、s_birthday、s_class_这些都是字段名,定义了这些字段名,即确定了表格的格式。
- 其次对于数据类型,这很好理解,每一个字段都有一个特定的类型,比如_s_no_这代表的是学生的学号,我就只能用数字来表示;而对于学生姓名_s_name_,我就必须用一些字符来表示。因此我们对于不同的字段就会要设置特定的数据类型。
接下来我们通过实操来对创建表的过程做一个清楚的介绍:
**step1.**我们在创建数据表之前必须要选择一个数据库进入,为了讲解方便,我们现新建一个数据库 “kiko_1”,之后我们创建的数据表都将存储在 “kiko_1” 这个数据库中;在创建完数据库kiko_1后,我们使用USE命令进入kiko_1中。
CREATE DATABASE kiko_1; USE kiko_1;
**step2.**我们现在就可以创建一个表格了,我们按照上图进行表格的创建。说白了现在就是一个套模板的操作,将上图中的字段名写到模板中对应的位置就完事了,具体代码如下:
#建学生信息表 create table student( s_no varchar(20), s_name varchar(20), s_sex varchar(20), s_birthday datetime, s_class varchar(20) )CHARACTER SET utf8;
值得注意的是,我们在上面程序的字符类型后加了一个(20),这代表的是我们给varchar类型提供20个字符的大小来装数据信息,这明显是够用的。
??4.2.2 表记录的管理
Q1:什么是对表记录的管理?
**A1:**我们知道表中的一行信息可以叫做一条记录,那么表记录的管理,也就是对表进行“增、删、改、查”的工作。我们在创建完表格的各项字段后,就需要往表格中增添内容啦,这时候我们一般都会一行一行进行记录添加。通常来说对于表的记录有四种操作,分别如下:
1.插入记录(INSERT) (1)插入完整记录:INSERT INTO 表名 VALUES(值1),(值2),···; (2)插入指定字段记录:INSERT INTO 表名(字段名1,字段名2,···) VALUES(值1),(值2),···; 2.查找信息(SELECT) (1)查看表的所有信息:SELECT * FROM 表名 [WHERE 条件]; (2)查看表中指定字段的信息: SELECT 字段名1,字段名2,··· FROM 表名[WHERE 条件]; 3.删除信息(DELETE): DELETE FROM 表名 WHERE 条件; 4.更新信息(UPDATE):UPDATE 表名 SET 字段名1=值1,字段名2=值,···WHERE 条件;
1、插入记录(INSERT)
插入记录具有两种类型,一种是完整的插入,即插入一行完整的信息,此时各个字段的值都需要填写完整;另一种是在指定字段插入记录,即只在特定的几列中插入信息。我们通过下面两个例子来进一步理解:
**插入完整的记录:**假如班级里转来了“张晓栋”、“蒋粤”、“孙桐”,我们知道他们完整的信息,此时插入记录的格式如下:
格式:INSERT INTO 表名 VALUES(值1),(值2),···; ? INSERT INTO STUDENT VALUES ('13','张晓栋','男','1997-09-01','180715'); INSERT INTO STUDENT VALUES ('14','蒋粤','男','1995-10-02','180715'); INSERT INTO STUDENT VALUES ('33','孙桐','女','1999-09-01','180717');
**插入指定字段的记录:**假如班级里又新转来了两名女生(日漫剧情展开),其中一名女生,我们只知道她的名字叫“张鑫淼”;另一名女生,我们知道她叫“郭思辰”,还知道她的班级为180713,其他信息目前都不清楚,此时的插入记录的格式如下:
格式:INSERT INTO 表名(字段名1,字段名2,···) VALUES(值1),(值2),···; INSERT INTO STUDENT (S_NAME,S_SEX) VALUES ('张鑫淼','女'); INSERT INTO STUDENT (S_NAME,S_SEX,S_CLASS) VALUES ('郭思辰','女','180713');
2、查询信息(SELECT)
查询信息也有两种,一种是可以查看表中的所有字段信息,即查看完整的表格信息;另一种是只查看表中部分字段的信息,即只查看表中特定一列或几列的信息,具体实现如下:
**查看表中所有信息:**下面格式中的 _“*”_代表的是所有字段,后面的 [WHERE 条件] 在这里是用来为查询增加一定的规则。比如当我们需要查找表中男生的所有信息,此时我们就可以在 [WHERE 条件] 中限定一下,其代码如下:
格式:SELECT * FROM 表名 [WHERE 条件]; SELECT * FROM student WHERE s_sex='男';
**查看表中指定字段的信息:**这种情况只会在指定字段中进行查找信息,比如我只想查看表中男生的姓名和班级信息,这时我们就可以指定 s_name 和 s_class 字段即可,其代码如下:
格式:SELECT 字段名1,字段名2,··· FROM 表名[WHERE 条件]; SELECT s_name,s_class FROM student WHERE s_sex='男';
3、删除信息(DELETE)
删除信息指的是删除一行信息,值得注意的是,在这里一般都会添加 WHERE 条件,因为如果不加_WHERE 条件_,表中的所有记录都会被清空。
我们举个例子来说,比如“张晓栋”同学他转学走了,这时我们就要将他的信息从_student表_中删除掉,注意此时删除的条件就是该同学的姓名,即 "s_name = ’ 张晓栋’ ",代码如下:
格式:DELETE FROM 表名 WHERE 条件; DELETE FROM student WHERE s_name='张晓栋';
4、更新信息(UPDATE)
更新信息,也就是将表中一条记录的信息做修改,此时我们需要将修改的字段名标识出来,将修改值填写上去,值得注意的是,此处的 WHERE 条件 是必须要填写的,它起到筛选记录的作用,用来标识具体修改的是哪一行的信息。
比如说郭思辰同学原来是180713班的,但是现在转到了180715班,这时我们需要对郭思辰同学的这条记录做更新,代码如下:
格式:UPDATE 表名 SET 字段名1=值1,字段名2=值,···WHERE 条件; UPDATE student SET s_class='180715' WHERE s_name='郭思辰';
??4.2.3表字段的管理
我们刚刚了解了表格中对一行数据的操作,接下来我们接着就要学习表格中对一列数据的操作,即对表字段的操作,同样地,它也具有“增、删、改、查”四种操作,其具体实现如下:
1.添加字段(ADD) (1) ALTER TABLE 表名 ADD 字段名 数据类型; 添加到最后一列[默认情况] (2) ALTER TABLE 表名 ADD 字段名 数据类型 FIRST; 添加到第一列 (3) ALTER TABLE 表名 ADD 字段名 数据类型 AFTER 字段名; 添加到某一字段后面 2.删除字段(DROP):ALTER TABLE 表名 DROP 字段名; 3.修改字段的数据类型(MODIFY): ALTER TABLE 表名 MODIFY 字段名 新数据类型; 4.表重命名(RENAME): ALTER TABLE 表名 RENAME 新表名; 5.表字段重命名(CHANGE): ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型;
1、添加字段(ADD)
添加字段,即为表格添加新的一列;假如此时我们要为上面的学生表格再添加一列用来存储学生的电话信息,并将该字段指定放在性别字段的后面,具体实现代码如下:
格式:ALTER TABLE 表名 ADD 字段名 数据类型 AFTER 字段名; 添加到某一字段后面 ALTER TABLE student ADD s_telephone VARCHAR(11) AFTER s_sex;
值得注意的是,由于手机号码一般为11位,因此在此处设置数据类型时,为其设置的是可以存放11个字符大小的空间。
2、删除字段(DROP)
删除字段,即删除表中的一列,需要注意的是,我们在添加字段时必须要指明字段名的数据类型,但是在删除字段时,无需指定数据类型;假如此时我们需要删除 s_telephone 字段,其代码如下:
格式:ALTER TABLE 表名 DROP 字段名; ALTER TABLE student DROP s_telephone;
3、修改字段数据类型(MODIFY)
该操作是用来修改表中一列的数据类型。比如在创建上面_student 表_时,我们对 s_birthday 字段定义的数据类型为_datetime_,该类型可以显示年/月/日,时/分/秒,但是上表中的时/分/秒数据基本都是0,现在我们只想让其显示年/月/日,因此需要将该字段的数据类型修改为_date型_,因为_date型_只会显示年/月/日,具体操作如下:
格式:ALTER TABLE 表名 MODIFY 字段名 新数据类型; ALTER TABLE student MODIFY s_birthday date;
4、表重命名(RENAME)
假如我们现在要将 _student 表_重命名为 HEU_student,然后通过 SHOW TBALES 命令来验证_RENAME 操作_是否成功,具体操作如下:
格式:ALTER TABLE 表名 RENAME 新表名; ALTER TABLE student MODIFY s_birthday date;
5、表字段重命名(CHANGE)
假如我们此时觉得 s_birthday 这个字段的 birthday 单词太复杂,想要将这个字段修改为 s_birth,此时我们就需要使用CHANGE操作,代码实现如下:
格式:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型; ALTER TABLE heu_student CHANGE s_birthday s_birth DATE;
??4.2.4其余基本操作
1、查看已有表的字符集:SHOW CREATE TABLE 表名;
这条语句就是用来帮助查看表格的一个默认字符集的,在使用这条语句前,我们一定要进入具体数据表所在的数据库中,否则是查不到你想要的数据表的字符集的!例如我们要查一下_kiko_1_数据库中的_student_数据表,我们首先就要进入_kiko_1_数据库,然后再使 “SHOW CREATE TABLE 表名” 语句;具体代码如下:
USE kiko_1; SHOW CREATE TABLE student;
2、查看表结构:****DESC 表名;
这条命令就是用来查看表的组成结构,即查看表的各个字段名,与数据类型;具体代码如下:
USE kiko_1; DESC student;
3、删除表:DROP TABLE 表名;
比如我们现在要将_student表格_删除,我们可以输入如下操作:
DROP TABLE student;
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦