网站正在建设升级,wordpress文章页面宽度,wordpress4.9.4漏洞,兰州做网站客户1、主键和外键
主键也叫主码。主键用于唯一标识一个元组#xff0c;不能有重复#xff0c;不允许为空。一个表只能有一个主键。外键也叫外码。外键用来和其他表建立联系用#xff0c;外键是另一表的主键#xff0c;外键是可以有重复的#xff0c;可以是空值。一个表可以有…1、主键和外键
主键也叫主码。主键用于唯一标识一个元组不能有重复不允许为空。一个表只能有一个主键。外键也叫外码。外键用来和其他表建立联系用外键是另一表的主键外键是可以有重复的可以是空值。一个表可以有多个外键
2、ER图
ER 图 全称是 Entity Relationship Diagram实体联系图提供了表示实体类型、属性和联系的方法
实体 通常是现实世界的业务对象当然使用一些逻辑对象也可以。比如对于一个校园管理系统会涉及学生、教师、课程、班级等等实体。在 ER 图中实体使用矩形框表示属性 即某个实体拥有的属性属性用来描述组成实体的要素对于产品设计来说可以理解为字段。在 ER 图中属性使用椭圆形表示联系 即实体与实体之间的关系这个关系不仅有业务关联关系还能通过数字表示实体之间的数量对照关系。例如一个班级会有多个学生就是一种实体间的联系
3、数据库有哪三种范式
1NF(第一范式)属性不可再分是所有关系型数据库的最基本要求2NF(第二范式)在 1NF 的基础之上消除了非主属性对于码的部分函数依赖。即存在主键其他非主属性都依赖于主键。3NF(第三范式)3NF 在 2NF 的基础之上消除了非主属性对于码的传递函数依赖。
4、函数依赖
函数依赖 简单来说就是两个属性一一对应知其一必知另一个部分函数依赖 简单来说就是一个主键对应一堆信息比如知道学号肯定知道人名但知道人名不一定能知道学号完全函数依赖简单来说就是必须知道一组属性才能对应身份比如假设一个班的人不能重名那我们知道班级和姓名就能找到这个人但只知道班级或姓名就不能确定人传递函数依赖简单来说就是x确定yy确定z比如知道学号就可以知道系名知道系名就知道系主任它们完全可以合并到一个表里
5、SQL中的增删改查CRUD
INSERT INTO 语句用于向表中插入新记录UPDATE 语句用于更新表中的记录DELETE 语句用于删除表中的记录TRUNCATE TABLE 可以清空表也就是删除所有行SELECT 语句用于从数据库中查询数据DISTINCT 用于返回唯一不同的值。它作用于所有列也就是说所有列的值都相同才算相同LIMIT 限制返回的行数。可以有两个参数第一个参数为起始行从 0 开始第二个参数为返回的总行数ORDER BY 用于对结果集按照一个列或者多个列进行排序。默认按照升序对记录进行排序ASC 升序默认DESC 降序
SELECT * FROM products
ORDER BY prod_price DESC, prod_name ASC;GROUP BY将记录分组到汇总行中并为每个组返回一个记录可以按一列或多列进行分组
SELECT cust_name, COUNT(cust_address) AS addr_num
FROM Customers GROUP BY cust_name
ORDER BY cust_name DESC;HAVING 用于对汇总的 group by 结果进行过滤必须要与 group by 连用
SELECT cust_name, COUNT(*) AS num
FROM Customers
WHERE cust_email IS NOT NULL
GROUP BY cust_name
HAVING COUNT(*) 1;WHERE 子句用于过滤记录即缩小访问数据的范围。可以使用运算符例如
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值LIKE 操作符在 WHERE 子句中使用作用是确定字符串是否匹配模式LIKE 支持两个通配符匹配选项% 和 _。
% 表示任何字符出现任意次数。
_ 表示任何字符出现一次JOIN 子句用于将两个或者多个表联合起来进行查询ON表示连接的条件
select c.cust_name, o.order_num
from Customers c
inner join Orders o
on c.cust_id o.cust_id
order by c.cust_name;UNION 运算符将两个或更多查询的结果组合起来并生成一个结果集其中包含来自 UNION 中参与查询的提取行没怎么用过
6、where和having的区别
where过滤过滤指定的行后面不能加聚合函数分组函数having过滤分组必须要与 group by 连用不能单独使用
7、日期和时间
日期格式YYYY-MM-DD时间格式HH:MM:SS
8、索引
索引是一种用于快速查询和检索数据的数据结构其本质可以看成是一种排序好的数据结构大多数情况下索引查询都是比全表扫描要快的。但是如果数据库的数据量不大那么使用索引也不一定能够带来很大提升
9、约束类型
SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为行为会被约束终止通常在创建表时规定NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合主键FOREIGN KEY - 外键CHECK - 保证列中的值符合指定的条件。DEFAULT - 规定没有给列赋值时的默认值。
10、事务处理
MySQL 默认是隐式提交每执行一条语句就把这条语句当成一个事务然后进行提交当出现 START TRANSACTION 语句时会关闭隐式提交当 COMMIT 或 ROLLBACK 语句执行后事务会自动关闭重新恢复隐式提交
11、指令
START TRANSACTION - 指令用于标记事务的起始点。SAVEPOINT - 指令用于创建保留点。ROLLBACK TO - 指令用于回滚到指定的保留点如果没有设置保留点则回退到 STARTTRANSACTION 语句处。COMMIT - 提交事务
-- 开始事务
START TRANSACTION;-- 插入操作 A
INSERT INTO user
VALUES (1, root1, root1, xxxx163.com);-- 创建保留点 updateA
SAVEPOINT updateA;-- 插入操作 B
INSERT INTO user
VALUES (2, root2, root2, xxxx163.com);-- 回滚到保留点 updateA
ROLLBACK TO updateA;-- 提交事务只有操作 A 生效
COMMIT;
------12、权限控制
要授予用户帐户权限可以用GRANT命令。有撤销用户的权限可以用REVOKE命令
-- 授予权限
GRANT privilege,[privilege],.. ON privilege_level
TO user [IDENTIFIED BY password]
[REQUIRE tsl_option]
[WITH [GRANT_OPTION | resource_option]];-- 撤销权限
REVOKE privilege_type [(column_list)][, priv_type [(column_list)]]...
ON [object_type] privilege_level
FROM user [, user]...13、触发器
触发器是一种与表操作有关的数据库对象当触发器所在表上出现指定事件时将调用该对象即表的操作事件触发表上的触发器的执行。我们可以使用触发器来进行审计跟踪把修改记录到另外一张表中CREATE TRIGGER 指令用于创建触发器
14、四种JOIN的区别
这张图描述了left join左连接、right join右连接 、inner join内连接、outer join外连接相关的7种用法
1、INNER JOIN如果表中有至少一个匹配则返回行这个默认的单独的JOIN就表示INNER JOIN2、LEFT JOIN即使右表中没有匹配也从左表返回所有的行3、RIGHT JOIN即使左表中没有匹配也从右表返回所有的行4、FULL JOIN只要其中一个表中存在匹配则返回行