Mysql的基本概念

一:关系

--1--基本关系。

一对一:一个班级有一个班主任

一对多:一个班级有多个学生

多对一:多个学生在一个班级

多对多:一个班级有多个老师,多个老师属于一个班级(通过两个多对一实现,即加入一张中间表,关联两个一对多)

--2--主键

非常重要的约束,该条数据区别其他数据的标识符,不允许重复,不可修改

选取原则,不使用任何业务相关的字段作主键,如身份证,邮箱等

Ⅰ:自增整数

最多约21亿

Ⅱ:全局唯一GUID

通过GUID算法,以网卡MAC地址,时间戳,随机数算出来的一个字符串"8f55d96b-8acc-4636-8cb8-76bf8abc2f57",最多922亿亿条

Ⅲ:联合主键

两个以上的字段被设置为主键,允许有n-1列相同

--3--外键

通过约束来实现一对一,一对多,多对一关系。

ex:小明有唯一studentid,一个班级有着n个学生,在student表中加入class_id列,把该学生的一条记录对应到班级的一条记录中

实现:通过定义外键约束来实现而不是列名

ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);

//外键约束的名称fk_class_id可以任意,FOREIGN KEY (class_id)指定了
//class_id作为外键,REFERENCES classes (id)指定了这个外键将关联到
//classes表的id列(即classes表的主键)。
定义外键
ALTER TABLE students
DROP FOREIGN KEY fk_class_id;

//删除外键约束并没有删除外键这一列。删除列是通过DROP COLUMN ...实现
//外键约束与外键要区分
删除外键

缺陷:由于外键约束会降低数据库的性能,大部分互联网应用程序为了追求速度,并不设置外键约束,而是仅靠应用程序自身来保证逻辑的正确性。

这种情况下,class_id仅仅是一个普通的列,只是它起到了外键的作用而已。

二:查询数据

--1--基本查询

SELECT

--2--条件查询

WHERE

--3--投影查询

结果包含指定列,给列名命名

--4--排序查询

顺序:ORDER BY ASC---逆序:ORDER BY DESC

--5--分页查询

LIMIT <M> OFFSET <N>

--6--聚合查询

通过聚合(内置)函数进行查询

SUM(),AVG(),MAX(),MIN()

分组:GROUP BY,返回的是根据分组条件的多条记录

--7--多表查询

FROM <表1>,<表2>

两表有相同的列名时,可使用过投影法修改列名,同样可通过投影简化表名

--8--连接查询

SELECT...FROM <表1> JOIN <表2> ON <条件...>

INNER JOIN 表1数据,即使表2没有也出来

OUTER JOIN 表2数据,即使表1没有也出来

FULL OUTER JOIN 表1表2有就都出来

三:修改数据

--1--INSERT

INSERT INTO <表名> VALUES()

--2--UPDATE

UPDATE <表名> SET 字段1=值1 WHERE

--3--DELETE

DELETE FROM <表名> WHERE

猜你喜欢

转载自www.cnblogs.com/KSea/p/12159226.html