关系数据库的基本操作
1. 关系数据库中关系代数的基本运算有哪些
五种基本操作:并,差,积,选择,投影;构成关系代数完备的操作集。其他非基本操作:可以用以上五种基本操作合成的所有操作。并(U)、交(⌒)、投影(π)选择(σ)和笛卡儿积(×)。
传统的集合运算:
1、并(UNION)设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。
2、差(DIFFERENCE)R和S的差是由属于R但不属于S的元组组成的集合,运算符为-。记为T=R-S。
3、交(INTERSCTION)R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。记为T=R∩S。R∩S=R-(R-S)。
(1)关系数据库的基本操作扩展阅读:
在数据库世界里,后关系数据库仍旧泰然自若,保持其本色。
在现代IT界,sql和XML已经成为数据库的非常重要组成部分,这二者成为数据库系统结构组成部分的历史也很长久了,至于开始的时间我也很难记得了。
在60年代末和70年代初,出现了具备灵活字段长度、嵌套表格、松散数据类型选择的数据库构架,这样的数据库系统不仅受市场欢迎,也得到大家的青睐。这些早期的数据库系统虽然缺乏像XML一样的标记功能,但是它们在实际工作中却表现出和XML极为类似的功能。
描述这些数据库系统的术语是“后关系”或者“多值”,它们没有SQL关系数据库知名,是因为这些数据库系统缺乏许多新闻的宣传度,我们很容易把它认为是一个实验而已,然后这些实验在人们的印象中就会半途而废了,最终慢慢的消失。
2. MySQL数据库基础+ 数据库的基本操作
需要用的资料以链接的形式给需要的同学。
我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw
图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs
开始我的MySQL之旅吧 始于2016.12.04
--WH
一、数据库的安装
这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(MySQL安装教程)去看,就能够安装完好。
安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去网络搜教程。
二、数据库的基本操作
1、开启mysql服务命令
net start mysql
2、进入mysql的两种方式
明文进入:mysql -uroot -proot格式:mysql -u帐号-p密码
密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。
3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)
前面四个数据库是mysql中自带的,也就是必须的.
SHOW DATABASES;
4、创建名为test_1的数据库
格式:CREATE DATABASE 数据库名
CREATE DATABASE test_1;
5、删除名为test_1的数据库
格式:DROP DATABASE 数据库名
DROP DATABASE test_1;
总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库
三、数据表的基本操作
数据表和数据库还有Mysql三者的关系
mysql中保存了很多数据库、一个数据库中可以保存很多表。
对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)
前提:表是在数据库下的,所以要先确实使用哪个数据库。
USE test_1;
1、创建数据表
格式:CREATE TABLE 数据表名(
字段名1数据类型[列级别约束条件],
字段名2数据类型[列级别约束条件],
字段名3数据类型[列级别约束条件]
);
注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。
解释:
1、[]中括号中的内容表示可以有可以没有,
2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横
3、约束条件后面会讲到
1.1、创建没有约束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注释:SHOW TABLES 查询数据库底下的所有表。
1.2、创建有约束的student表
六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加
1.2.1:主键约束
PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。
一般被主键约束了的字段度习惯性的称该字段为该表的主键
单字段主键约束
两种方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id) );
多字段主键约束(复合主键)
这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY,nameVARCHAR(12),
ageINT(11)ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外键约束
什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。
外键约束的特点:
1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。
2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。
3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。
注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。
格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES 主表名(主键字段)
英文解释:CONSTRAINT:约束REFERENCES:参考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id
1.2.3:非空约束
NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一约束
UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是说在插入的记录中,每条记录的name值不能是一样的。
1.2.5:默认约束
Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自动增加
AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查询表结构
2.1、查看表基本结构语句
格式1:DESCRIBE 表名/DESC 表名这两个的功能是一样的,简写了单词describe
DESCRIBEstudent;
2.2、查看创建表的语句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
这样显示的格式很不好,看不清楚,所以有了下面这个语句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改数据表
修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER
3.1、修改表名
格式:ALTER TABLE<旧表名> RENAME[TO]<新表名>;
将student表名改为student1(改完后在改回来)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的字段名
格式:ALTER TABLE<表名> CHANGE<旧字段名><新字段名><新数据类型>
将student表中的name字段名改为 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的数据类型
格式:ALTER TABLE<表名> MODIFY<字段名><数据类型>
ALTER TABLE student MODIFY username VARCHAR(20);
解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。
3.4、修改字段的排列位置
方式1:ALTER TABLE<表名> MODIFY<字段1><数据类型> FIRST|AFTER<字段2>
解释:将字段1的位置放到第一,或者放到指定字段2的后面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><数据类型> FIRST|AFTER<字段3>
解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
总结
CHANGE和MODIFY的区别?
原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。
3.5、添加字段
格式:ALTER TABLE<表名称> ADD<新字段名><数据类型>[约束条件][FIRST|AFTER<已存在的表名>]
解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、删除字段
格式:ALTER TABLE<表名称> DROP<字段名>;
ALTER TABLE student DROP sex;
3.7、删除表的外键约束
格式:ALTER TABLE<表名称> DROP FOREIGN KEY<外键约束名>
注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。
3.8、更改表的存储引擎
格式:ALTER TABLE<表名> ENGINE=<更改后的存储引擎名>
这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。
4、删除表
4.1、删除无关联表
格式:DROP TABLE<表名>;
ALTER TABLE student;
4.2、删除被其他表关联的主表
这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法
1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除
2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。
3. 在关系数据库的基本操作中,从表中取出满足条件元组的操作称为
在关系数据库的基本操作中,从表中取出满足条件元组的操作称为选择操作。
选择(Selection)操作指在关系中选择满足某些条件的元组(行)。
关系模型中常用的关系操作包括查询操作和插入、删除、修改操作两大部分。关系的查询表达能力很强,是关系操作中最主要的部分。查询操作可以分为:选择、投影、连接、除、并、差、交、笛卡尔积等。其中,选择、投影、并、差、笛卡尔积是五种基本操作。
关系数据库中的核心内容是关系即二维表。而对这样一张表的使用主要包括按照某些条件获取相应行、列的内容,或者通过表之间的联系获取两张表或多张表相应的行、列内容。概括起来关系操作包括选择、投影、连接操作。关系操作其操作对象是关系,操作结果亦为关系。
(3)关系数据库的基本操作扩展阅读
关系数据库模型结构
1、单一的数据结构-关系(表文件)。关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excle工作表。一个数据库可以包含任意多个数据表。
2、元组(记录)。表中的一行即为一个元组,或称为一条记录。
3、属性(字段)。数据表中的每一列称为一个字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和其他属性。字段可以包含各种字符、数字、甚至图形。
4、属性值。行和列的交叉位置表示某个属性值,如“数据库原理”就是课程名称的属性值
5、主码。主码(也称主键或主关键字),是表中用于唯一确定一个元组的数据。关键字用来确保表中记录的唯一性,可以是一个字段或多个字段,常用作一个表的索引字段。每条记录的关键字都是不同的,因而可以唯一地标识一个记录,关键字也称为主关键字,或简称主键。如错误!未找到引用源。
6、域。属性的取值范围。
7、关系模式。关系的描述称为关系模式。对关系的描述,一般表示为:关系名(属性1,属性2.....属性n)。例如上面的关系可描述为:课程(课程号、课程名称、学分、任课老师)。
4. 关系数据库管理系统的3种基本关系运算是什么
选择运算、投影运算和连接运算。
5. 在关系数据库的基本操作中,从表中选出满足条件的元组的操作称为 A选择B投影C联接D筛选
select * from table1 where 条件1=条件1的值
6. 关系数据库主要支持的3种基本运算是什么
关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、联接等),有些查询需要几个基本运算的组合,要经过若干步骤才能完成。
一、传统的集合运算
1、并(UNION) 设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。
2、差(DIFFERENCE) R和S的差是由属于R但不属于S的元组组成的集合,运算符为-。记为T=R-S。
3、交(INTERSCTION) R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。记为T=R∩S。 R∩S=R-(R-S)。
二、选择运算
从关系中找出满足给定条件的那些元组称为选择。其中的条件是以逻辑表达式给出的,值为真的元组将被选取。这种运算是从水平方向抽取元组。 在FOXPRO中的短语FOR<条件>和WHILE<条件>均相当于选择运算。
如:LIST FOR 出版单位='高等教育出版社' AND 单价<=20
三、投影运算
从关系模式中挑选若干属性组成新的关系称为投影。这是从列的角度进行的运算,相当于对关系进行垂直分解。在FOXPRO中短语FIELDS<字段1,字段2,…>相当于投影运算。 如: LIST FIELDS 单位,姓名
四、联接运算
选择和投影运算都是属于一目运算,它们的操作对象只是一个关系。联接运算是二目运算,需要两个关系作为操作对象。
1、联接 联接是将两个关系模式通过公共的属性名拼接成一个更宽的关系模式,生成的新关系中包含满足联接条件的元组。运算过程是通过联接条件来控制的,联接条件中将出现两个关系中的公共属性名,或者具有相同语义、可比的属性。联接是对关系的结合。在FOXPRO中有单独一条命令JOIN实现两个关系的联接运算。如:
SELE 1
USE 定单
SELE 2
USE 商品
JOIN WITH A TO XGX FOR A->货号=货号 AND 库存量>=A->定购量
设关系R和S分别有m和n个元组,则R与S的联接过程要访问m×n个元组。由此可见,涉及到联接的查询应当考虑优化,以便提高查询效率。
2、自然联接 自然联接是去掉重复属性的等值联接。它属于联接运算的一个特例,是最常用的联接运算,在关系运算中起着重要作用。
如果需要两个以上的关系进行联接,应当两两进行。利用关系的这三种专门运算可以方便地构造新的关系。
五、外关键字
如果一个关系中的属性或属性组并非该关系的关键字,但它们是另外一个关系的关键字,则称为该关系的外关键字。
综上所述,关系数据库系统有如下特点:
(1)数据库中的全部数据及其相互联系都被组织成关系,即二维表的形式。
(2)关系数据库系统提供一种完备的高级关系运算,支持对数据库的各种操作。
(3)关系模型有严格的数学理论,使数据库的研究建立在比较坚实的数学基础上。
7. 数据库常用的关系运算是什么
在关系数据库中,基本的关系运算有三种,它们是选择、投影和连接。关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),有些查询需要几个基本运算的组合,要经过若干步骤才能完成。
一、传统的集合运算
1、并(UNION)设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合,运算符为∪。记为T=R∪S。
2、差(DIFFERENCE)R和S的差是由属于R但不属于S的元组组成的集合,运算符为-。记为T=R-S。
3、交(INTERSECTION)R和S的交是由既属于R又属于S的元组组成的集合,运算符为∩。记为T=R∩S。R∩S=R-(R-S)。
二、选择运算
从关系中找出满足给定条件的那些元组称为选择。其中的条件是以逻辑表达式给出的,值为真的元组将被选取。这种运算是从水平方向抽取元组。在FOXPRO中的短语FOR和WHILE均相当于选择运算。
如:LISTFOR出版单位='高等教育出版社'AND单价<=20
三、投影运算
从关系模式中挑选若干属性组成新的关系称为投影。这是从列的角度进行的运算,相当于对关系进行垂直分解。在FOXPRO中短语FIELDS相当于投影运算。如:LISTFIELDS单位,姓名
四、连接运算
连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组。
五、除法运算
在关系代数中,除法运算可理解为笛卡尔积的逆运算。
设被除关系R为m元关系,除关系S为n元关系,那么它们的商为m-n元关系,记为R÷S。商的构成原则是:将被除关系R中的m-n列,按其值分成若干组,检查每一组的n列值的集合是否包含除关系S,若包含则取m-n列的值作为商的一个元组,否则不取。
(7)关系数据库的基本操作扩展阅读:
数据库除运算:
除运算的含义–给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。
R÷S的结果为a1,x相当于A y 相当于B,C z相当于D,按照除运算规则,我们不必关注D。只需比较B,C当S关系中的B,C所有的组合(b1,c2)(b2,c3)(b2,c1)都出现在R关系中时,结果才为A
R÷S = {tr[X] | trÎR∧πY (S) íYx },Yx:x在R中的象集,x = tr[X]。除操作是同时从行和列角度进行运算。
8. 关系数据库对关系有三种基本操作,在VF命令格式中,FIELDS《字段名表》是对关系的 操作
关系数据库对关系有三种基本操作,在VF命令格式中,FIELDS<字段名表>是对关系的 (投影) 操作
FOR<条件>是对关系的 (选择) 操作。
补充学习:选择,投影,连接,这是数据库的关系运算的三种基本操作。
9. 关系数据库的三种基本操作是什么
关系数据库上的基本操作有选择、投影、连接和除法,选择建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特写标准的原始关系行。投影操作指定将被选择的列,因而形成的表只含有原始表列的一个子集。如果在投影操作删除的列中有两个行不同,那么将只有一个记录被转入新的关系。连接操作从两个或多个表中组合信息。两个表中的公用字段用作组合记录的基础字段。在公用字段中具有相等值的记录被连接在结果关系内。