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