Mysql是关系型数据库管理系统,管理的数据库是一堆关联表的集合。这里的表可以看作是一个二维表格,里面的每一行表示一条记录,是一组相关的数据。每一列存储的是一个属性对应的数据。 相关的概念如下:
冗余: 同样的数据存储多份,冗余会导致存储空间的浪费,适当的冗余可以提高查询速度。 冗余存在于多种level上: 表的冗余/属性的冗余/元组的冗余以及属性值的冗余 参考: https://blog.csdn.net/weixin_29985807/article/details/113223373
主键:一个表中主键是唯一的,可以用主键来查询数据。
外键: 用于表和表之间的连接,关联两个表。
复合键:将多个列作为一个组合键,一般用于复合索引。
索引:使用索引可以快速访问数据库表中的特定信息,索引是对数据库表中的一列或者多列进行排序的一种结构。
参照完整性:要求关系中不允许引用不存在的实体。参照完整性和实体完整性是关系模型中必须满足的完整性约束条件,目的是保证数据一致性。
记录一下本人不太熟悉的mysql 知识点:
在这里执行SQL语句:https://www.db-fiddle.com/
MySQL创建数据库
使用下面的命令创建一个名为 DBTest的数据库
mysqladmin -u root -p create DBTest
MySQL删除数据库
使用下面的命令删除名为DBTest的数据库
mysqladmin -u root -p drop DBTest
创建数据表
使用下面的命令创建数据表
CREATE TABLE table_name(column_name column_type)
创建数据表student
CREATE TABLE IF NOT EXISTS student( sid INT, sname VARCHAR(20), sbirth DATE, sgender VARCHAR(10) );
创建数据表class
create table IF NOT EXISTS class( sid INT, sname varchar(20), sclass varchar(10) );
插入数据
使用下面的命令插入数据
INSERT INTO table_name( field1, field2, field3,...fieldN) VALUES ( value1, value2, value3,...valueN);
向student表中插入数据
INSERT INTO student values
(1 , '赵雷' , '1990-01-01' , '男'),
(2 , '钱电' , '1990-12-21' , '男'),
(3 , '孙风' , '1990-12-20' , '男'),
(4 , '李云' , '1990-12-06' , '男'),
(5 , '周梅' , '1991-12-01' , '女'),
(6 , '吴兰' , '1992-01-01' , '女'),
(7 , '郑竹' , '1989-01-01' , '女'),
(9 , '张三' , '2017-12-20' , '女'),
(0 , '李四' , '2017-12-25' , '女');
向class表中插入数据
INSERT INTO class values (1 , '赵雷' , '一班'), (2 , '钱电' , '二班'), (3 , '孙风' , '三班'), (4 , '孙六' , '四班');
查询数据
SELECT column_name,column_name FROM table_name [WHERE Clause] [OFFSET M ][LIMIT N]
- 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
- 你可以使用 LIMIT 属性来设定返回的记录数。
连接
INNER JOIN(内连接/等值连接):获取两个表中字段匹配的记录 得到的是两个表的交集
1 SELECT * 2 FROM TableA A 3 INNER JOIN TableB B 4 on A.key = B.key
LEFT JOIN(左连接): 获取左表的所有记录,右表获取的是和左表的交集
当使用 WHERE B.key is NULL过滤时,得到的是 A-(A和B的交集)
查询语句:
SELECT * FROM student s LEFT JOIN class c ON s.sid = c.sid AND s.sname = c.sname WHERE c.sid is NULL
结果:
RIGHT JOIN(右连接):获取右表的所有记录 左表获取的是和右表的交集
SELECT * FROM student s RIGHT JOIN class c ON s.sid = c.sid AND s.sname = c.sname WHERE s.sid is NULL
查询语句
SELECT * FROM student s RIGHT JOIN class c ON s.sid = c.sid AND s.sname = c.sname WHERE s.sid is NULL
当使用 WHERE A.key is NULL过滤时,得到的是 B-(A和B的交集)
结果
FULL OUTER JOIN:外连接,得到的是A和B的并集
SELECT FROM Table A FULL OUTER JOIN Table B ON A.key = B.key
事务
MySQL事务主要用于处理操作量大,复杂度高的数据。多个操作对应一个事务。
- 在MySQL中,只有使用了Innodb数据库引擎的数据库或表才支持事务。
- 事务处理用来维护数据库的完整性,保证成批的SQL语句 要么全都执行,要么全都不执行。
- 事务用来管理 insert,update,delete语句。
事务必须满足四个条件:
A(Atomicity)原子性:一组事务,要么成功,要么撤回,即事务在执行过程中出错会回滚到事务开始前的状态。
C(Consistency)一致性:一个事务不论是开始前还是结束后,数据库的完整性没有被破坏。
I(Isolation)隔离性:数据库允许多个事务并发的同时对其数据进行读写修改等操作,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致性。
事务隔离分为:读未提交/读提交/可重复读/串行化
D(Durability)持久性:事务在处理结束后对数据做出的修改是永久的,无法丢失。
MySQL ALTER
MySQL ALTER命令用来修改表名,修改表
标签:JOIN,SQL,数据库,Mysql,笔记,学习,索引,sid,MySQL From: https://www.cnblogs.com/starter-songudi/p/17083636.html