第三天
常见的字段约束
NOT NULL: 不能为空
UNIQUE: 字段值必须唯一的(不能重复)
DEFAULT: 默认值(当插入数据的时候没有给初始值,使用默认值) -> 成绩字段 -> 0
-> 保密
PRIMARY KEY: 主键(UNIQUE+NOT NULL)
FOREIGN KEY: 外键 ()
测试NOT NULL
MariaDB [test2]> CREATE TABLE test_not_null (
-> name VARCHAR(10) NOT NULL,
-> age TINYINT NOT NULL
-> );
指定一个默认值 DEFAULT
MariaDB [test2]> CREATE TABLE test_default (
-> name VARCHAR(10),
-> status ENUM('active', 'inactive') DEFAULT 'active'
-> );
唯一约束 UNIQUE => 字段值 必须是唯一(不能重复)
MariaDB [test2]> CREATE TABLE test_unique (
-> name VARCHAR(10) UNIQUE,
-> age TINYINT
-> );
主键:UNIQUE+NOT NULL
不允许为空,也不请允许重复,一般情况每个表都会有一个主键
● 唯一标识一条记录
● 数据完整性和准确性
● 建立表间关系需要用到主键
● 提高查询效率
● 主键索引
MariaDB [test2]> CREATE TABLE test_primarykey (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(10),
-> age TINYINT
-> );
INSERT INTO test_primarykey (id) VALUES (10);主键id插入值为10,然后后面插入的id就会从10自增
外键
优点:
* 节省空间
* 数据一致性
* 数据完整性
缺点:
* 外键可能会引入一定的性能开销(内存/cpu)
* 复杂性(进行数据插入和删除时,由于约束可能更麻烦)
* 兼容性问题,不同数据支持不同
企业中:
DBA不推荐使用外键,使用代码来解决一致性和完整性的问题
students (student_id, name)
scores (score_id, student_id, subject, score)
ON DELETE CASCADE => 主表数据删除,子表也删除
ON DELETE SET NULL => 当主表中的一行被删除时,所有引用该行的子表中的外键列将被设置为NULL
ON DELETE SET DEFAULT => 当主表中的一行被删除时,所有引用该行的子表中的外键列将被设置为默认值(如果列有默认值的话)
ON DELETE NO ACTION=>这是一个限制,意味着如果尝试删除主表中的一行,同时子表中还有引用该行的记录,那么操作将被拒绝,并且会抛出一个错误。
ON UPDATE=>主表更新,子表也更新
CREATE TABLE Orders (
OrderID int,
CustomerID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (CustomerID) REFERENCES
Customers( CustomerID )
ON DELETE CASCADE
);
数据查询
SELECT [DISTINCT] 列1,列2....,* FROM 表名 WHERE 条件 ORDER BY [排序]列名 GROUP BY [分组]列名
SELECT * FROM product; 查询表中所有数据
SELECT pname,price FROM product; 查询指定列
SELECT pname AS 商品名, price AS 商品价格, price*0.9 AS 九折价 FROM product; 添加别名映射
SELECT DISTINCT cid FROM product; 查询不重复的cid
SELECT * FROM product WHERE pname!="香奈儿"; 查询非香奈儿的商品信息
SELECT * FROM product WHERE price >=900; 查询价格大于等于900的商品信息
逻辑查询 AND, OR, NOT
SELECT * FROM product WHERE cid='c001' OR cid='c003';
SELECT * FROM product WHERE cid='c001' AND price >4000;
SELECT * FROM product WHERE NOT (cid='c001');
CustomerID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (CustomerID) REFERENCES
Customers( CustomerID )
ON DELETE CASCADE
);
数据查询
SELECT [DISTINCT] 列1,列2....,* FROM 表名 WHERE 条件 ORDER BY [排序]列名 GROUP BY [分组]列名
SELECT * FROM product; 查询表中所有数据
SELECT pname,price FROM product; 查询指定列
SELECT pname AS 商品名, price AS 商品价格, price*0.9 AS 九折价 FROM product; 添加别名映射
SELECT DISTINCT cid FROM product; 查询不重复的cid
SELECT * FROM product WHERE pname!="香奈儿"; 查询非香奈儿的商品信息
SELECT * FROM product WHERE price >=900; 查询价格大于等于900的商品信息
逻辑查询 AND, OR, NOT
SELECT * FROM product WHERE cid='c001' OR cid='c003';
SELECT * FROM product WHERE cid='c001' AND price >4000;
SELECT * FROM product WHERE NOT (cid='c001');
标签:product,cid,price,第三天,笔记,查询,MySQL,WHERE,SELECT From: https://blog.csdn.net/2303_78135757/article/details/144262723