提醒:设定下面的语句是在数据库名为 db_book执行的。
一、创建表
1. 创建t_booktype表
USE db_book;
CREATE TABLE t_booktype(
id INT AUTO_INCREMENT,
bookTypeName VARCHAR(20),
bookTypeDesc varchar(200),
PRIMARY KEY (id)
);
2. 创建t_book表
USE db_book;
CREATE TABLE t_book(
id INT PRIMARY KEY AUTO_INCREMENT,
bookName VARCHAR(20) DEFAULT NULL,
price DECIMAL(6, 2) DEFAULT NULL,
bookTypeId INT,
constraint `fk` foreign key (`bookTypeId`) references `t_booktype`(`id`)/*添加外键*/
);
添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表(主键字段);
提醒: 大多数情况,不推荐使用外键,需要用到外键的逻辑最好放到应用层解决
外键的优点
- 数据一致性;
- 完整性会更可靠;
- 提高数据质量;
外键的缺点
- 损耗性能:当做一些涉及外键字段的增,删,更新操作之前,数据库需要检查它是否违反数据完整性,不得不消耗资源。
- 更高层次的框架
许多应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。开发人员不使用插入或更新语句来修改数据,而使用API或者框架在后台执行相关操作。ORM(对象关系映射)框架或Ruby on Rails框架就是这种情况。这些工具负责参照完整性,并与RDBMS一起创建更高级别的数据库引擎。这些框架可以自己创建数据库表,而不总是创建外键。使用这些工具的开发人员很少会干扰自动生成的模式,并且不需要外键。- 跨数据库关系:
一些数据库跨越更多的物理数据库甚至引擎,并且在技术上可能不能创建跨越数据库的它不能在同一台服务器上的两个数据库上创建key。SQL Server就是一个很好的例子 - 它不能在同一台服务器上的两个数据库上创建key。而且这种架构在大型系统中很常见。- 开发和维护不方便
在创建数据库时,一般创建一些表和列是设置主键或唯一键,如果设置了外键时,后期无论开发还是维护,需要手工维护数据,都不太方便、降低了工作效率。
二、增加、查询、修改、删除(CRUD)
1. t_booktype表插入数据
INSERT INTO db_book.t_booktype VALUES(NULL,'Html','前端开发');/*给表的所有字段插入数据*/
查询t_booktype表所有数据
SELECT * FROM db_book.t_booktype;
2. t_book表插入数据
INSERT INTO db_book.t_book VALUES(NULL,'Html',10.00,1);/*给表的所有字段插入数据*/
查询t_book表所有数据
SELECT * FROM db_book.t_book;
注意: 因为在步骤一创建t_book表时,添加了外加,所以在给t_book插入数据时,bookTypeId字段的值 需要和 t _booktype 表id字段的值一样
其他插入数据SQL语句
INSERT INTO t_book(id,bookName,price,bookTypeId) VALUES(NULL,'Html2',10.09,6);/*给表的所有字段插入数据 注意 bookTypeId 值和t_booktype id值一样*/
INSERT INTO t_book(bookName,price,bookTypeId) VALUES('java',10.09,2);/*给表的指定字段插入数据 注意 bookTypeId 值和t_booktype id值一样*/
INSERT INTO t_book(id,bookName,price,bookTypeId) VALUES(NULL,'Html3',10.09,6),(NULL,'Html4',10.09,6),(NULL,'Html5',10.09,6);/*同时插入多条数据*/
3. 修改 t_book 表数据
UPDATE t_book SET bookName ='H5',price = 14.50 WHERE id = 7;/*更新一条数据*/
查询t_book表所有数据
SELECT * FROM db_book.t_book;
从上图可以看到id = 7的数据已经修改成功了
使用LIKE修改多条数据
UPDATE t_book SET bookName ='H4'WHERE bookName LIKE'Html';/*更新多条数据*/
4. 指定删除t_book数据
DELETE FROM t_book WHERE id = 8;/*删除一条数据*/
验证删除id = 8的操作执行成功
删除多条数据
DELETE FROM t_book WHERE bookName = 'H4';/*删除多条数据*/
三、查看表的结构
1. 查看表的基本结构:desc t_booktype;
2. 查看表的详细结构:show create table t_booktype;
修改表示例:将t_book重命名为t_book2
SQL语句:alter table t_book rename t_book2;
提醒:下面目录标题是博客链接,直接点击即可查看