mysql复习-part1

1、概念

 

-  主流数据库管理系统:MySQL、SQLServer、Oracle、DB2、Access

 (1) 实体(Entity) 客观存在并可相互区别的事物称为实体。 可以是具体的人、事、物或抽象的概念。

(2) 属性(Attribute) 实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。

(3) 键(Key) 唯一标识实体的属性集称为键。

(4) 域(Domain) 属性的取值范围称为该属性的域。

(5) 实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实体型。

(6) 实体集(Entity Set) 同型实体的集合称为实体集。

(7) 联系(Relationship)   现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。 实体内部的联系:组成实体的各属性之间的联系 实体之间的联系:不同实体集之间的联系 三类实体型间联系 一对一联系(1:1)   一对多联系(1:n) 多对多联系(m:n) 

实体-联系方法(E-R模型) 一种 实体和自己属性建立起来的 图形和 线条连接起来的表格

三范式:

第一范式(1NF):关系模式中的每个属性值都是不可能再分的最小数据单元

第二范式(2NF):满足第一范式,且关系模式中(1.表中)的所有非主属性(2.除主键外)都完全依赖于任意一个候选关键字

第三范式(3NF) :关系模式满足第二范式,且每个非主属性不传递依赖于关系中的主键

2、SQL(Structured Query Language) 结构化查询语言

数据库系统:DBS(Database System):是一种虚拟系统,将多种内容关联起来的称呼

DBS=DBMS +DB

DBMS:Database Management System,数据库管理系统,专门管理数据库DBA: Database Administrator,数据库管理员

sorted

name

detail

数据查询语句(DQL) 数据90%是查询

select

数据查询

数据操纵语句(DML)

Insert

Update

Delete

插入

更新

删除

数据定义语句(DDL)

Create

Alter

Drop

Rename

Truncate

新建

修改结构

删除

重命名

删除

事务控制语句(TC)

Commit

Rollback

Savepoint

提交

事务回滚

存储点

数据控制语言(DCL)

Grant

Revoke

授权

解除授权

2.1 DDL(data define language)(数据定义语言)

DDL是用来定义数据结构,完成数据库对象的 增(CREATE)、删(DROP)、改(ALTER)

数据库对象包括:     数据库实例(DATEBASE)、数据表(TABLE)、视图(VIEW)、 索引(NDEX)     约束、触发器(TRIGGER)、存储过程(PROCEDURE)

2.1.1 创建数据库时:

【名称不能重复、只能用字母、数字和下划线、名不能超过30个字符、命名不能与系统关键字冲突 使用反引号可解决】

1、创建数据库:
CREATE DATABASE 数据库名称;
2、查看已有数据库:
SHOW DATABASES;

3、使用已创建的数据库:
USE 数据库名称;
4、指定字符集避免乱码默认使用latin1: 
CREATE DATABASE 数据库名   DEFAULT CHARACTER SET 字符集 COLLATE 校对集;

5、查看MySQL支持的字符集命令:
SHOW CHARACTER SET
6、查看MySQL字符集支持的校对集命令:
SHOW COLLATION


7、MySQL对字符集的支持分为四个层次:服务器、数据库、数据表、连接  
查看各层级字符集命令: SHOW VARIABLES LIKE '%char%';
查看校对集命令: SHOW VARIABLES LIKE '%collation%';

2.1.2 创建数据表

1、创建数据表:
CREATE TABLE 表名(属性名称 数据类型[约束],……) 

2、查看已有的数据表:
SHOW DATABASES 

3、查看已创建的数据表属性:

DESC 表名

数据表类型:整型、浮点型、字符串、日期和时间、enum、set 

当数据表中的属性定义为enum、set 时,代表只能从指定的集合中取值 它们之间的区别是:enum类型只能取一个值最多共65535个,set类型可以取多个值最多64个【enen ENUM(1,2,3) 、 setset set(1,2,3)  】

 

 数据表约束主要有:     

  • -主键约束(PRIMARY KEY):使用数据表中的一个或多个属性组合后,能唯一标识表中的一行记录,这一个或多个属性称为该表的主键

主键约束体现关系数据库的实体完整性:     -定义为主键的属性不允许为空     -定义为主键的属性不允许输入重复值     -一个表只能有一个主键     -定义主键约束时,会在主键列自动创建索引,加快对主键的查询速度

Create table test1(
id INT primary key,         # 主键设置模式一
score INT AUTO_INCREMENT    # 自增约束
)

Create table test2(
iid INT primary key,        # 主键设置模式一
age Varchar(10),
name VARCHAR(20) UNIQUE,    # 唯一约束
primary key(id,age)          # 主键设置模式二
foreign key(iid) references test2(id) on update cascade or select # 外键约束两表关联
age INT NOT NULL  # 非空约束
age INT DEFAULT 20  # 默认约束
)
  • -外键约束(FOREIGN KEY)     

外键约束:建立和强调两个表之间的关联,A表的一个属性或属性的组合是另外一个表B的主键,这一个或多个属性就称为A表的外键 外键约束体现关系数据库的参照完整性:     -父表的主键列进行更新或删除操作,会关联子表中的外键列     -子表中外键列输入的数据必须是父表主键列中已有的值     -定义外键约束的属性必须建立索引     -定义外键约束的表类型必须是InnoDB,只有InnoDB类型的表才支持外键     -对于非InnoDB表,外键约束会被忽略

FOREIGN KEY指定test_table1表中的属性name为外键约束 REFERENCES关联父表test_table2中的主键属性n ON DELETE、ON UPDATE指明父表中对主键进行删除、更新操作,不指定则表示不能进行删除、更新操作 CASCADE表明子表中外键字段值也会被更新或删除,除了CASCADE,还可以使用SET NULL(父表更新或删除时,子表字段值设置为NULL)、NO ACTION(父表更新或删除时,子表不进行任何操作)

  • -唯一约束(UNIQUE)   
  •  -非空约束(NOT NULL)
  • 空值约束(NULL)    
  • -默认值约束(DEFAULT)     
  • -自增 AUTO_INCREMENT

 数据表中的属性可以同时定义多个约束,但是需要注意:     -如果同一个属性有默认值约束和其他约束,默认值要写在其他约束前面     -如果同一个属性有多个约束,中间使用空格分隔开 在其他数据库管理工具中,如SQL Server还支持检查约束(check),但是MySQL数据库不支持,如果需要可以通过enum枚举类型或者触发器来实现检查

在MySQL数据库中创建数据表的同时,也可以指定表类型和字符集 语法:CREATE TABLE 表名(……)[ENGINE=表类型][DEFAULT CHARSET=字符集] 字符集:和数据库支持的字符集相同 表类型:在MySQL数据库中常用的表类型有2个-InnoDB、MyISAM         默认情况下创建的表类型是InnoDB 两种常用的表类型各有优劣,主要区别:     -MyISAM类型强调性能,执行速度比InnoDB更快, 但不支持事务等高级处理     -InnoDB类型支持事务、外键等高级数据库功能

数据表修改 :

1、修改数据库字符集
alter对数据库的修改,一般是修改数据库的字符集和校对集
ALTER DATABASE 数据库名称 DEFAULT CHARACTER 字符集 COLLATE 校对集

2、新增数据表属性
ALTER TABLE 表名 ADD 属性名称 数据类型[约束]

ALTER TABLE 表名 CHANGE 属性名称 属性名称 数据类型[约束]

3、 修改属性名称
ALTER TABLE 表名 CHANGE 属性原名称 属性新名称 数据类型[约束]

4、删除属性
ALTER TABLE 表名 DROP 属性名称

5、新增属性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束别名 约束

6、删除属性约束
ALTER TABLE 表名 DROP 约束

7、修改表名

ALTER TABLE 表名 RENAME TO 新表名

8、删除数据库
DROP DATABASE 数据库名称

9、删除数据表
DROP TABLE 表名

删除数据库、数据表时不存在,命令执行会出错
DROP DATABASE IF EXISTS test_db;
DROP TABLE IF EXISTS test_table;

2.3、DML(数据操纵语言)

是用于维护数据表中的具体数据,完成数据的增加(INSERT)、更新(UPDATE)、删除(DELETE)

1、数据插入
INSERT INTO 表名(属性1,属性2,……) VALUES(值1,值2,……)

当使用INSERT语句向表中插入数据时,如果不指定具体属性,则表示向所有属性中插入数据

2、特殊用法:将一张表中的数据插入到另外一张表
INSERT INTO 表名1(属性1,….) SELECT 表名2.属性1,…. FROM 表名2

3、数据更新
UPDATE 表名 SET 属性1=新值1,属性2=新值2,….[WHERE条件子句]

4、数据删除
DELETE FROM 表名 [WHERE条件子句]
另外一种删除数据的方法,语法:TRUNCATE TABLE 表名

TRUNCATE和DELETE的区别:
	-DELETE可以通过WHERE条件选择要删除的部分数据,并返回被删除的记录数,使用灵活,但执行速度不快
	-TRUNCATE不能删除指定的部分数据,而且不会返回被删除的记录数,但执行速度非常快

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值