MySQL学习(二)——MySQL多表

分页操作:使用limit(参数1,参数2)
    起始位置(参数1)=(第几页-1)*每页显示的条数(参数2)

1.分类表
create table category(
    cid varchar(32) primary key,
    cname varchar(100)
);

2.商品表
create table product(
    pid varchar(32) primary key,
    pname varchar(40),
    price double,
    category_id varchar(32)
);

alter table product add foreign key(category_id) references category(cid);

3.添加外键列
alter table product add category_id varchar(32);

4.添加约束
alter table product add constraint product_fk foreign key(category_id) references category(cid);

5.订单表
create table orders(
    oid varchar(32) primary key,
    totalprice double
);

6.订单项表
create table orderitem(
    oid varchar(50),
    pid varchar(50)
);

7.联合主键
alter table orderitem add primary key(oid,pid);

8.订单表和订单项表的主外键关系
alter table orderitem add constraint orderitem_orders_fk foreign key(oid) references orders(oid);

9.商品表和订单项表的主外键关系
alter table orderitem add constraint orderitem_product_fk foreign key(pid) references product(pid);

insert into category(cid,cname) values(‘c001‘,‘家电‘);
insert into category(cid,cname) values(‘c002‘,‘服饰‘);
insert into category(cid,cname) values(‘c003‘,‘化妆品‘);

insert into product(pid,pname,price,category_id) values(‘p001‘,‘联想‘,‘5000‘,‘c001‘);
insert into product(pid,pname,price,category_id) values(‘p002‘,‘海尔‘,‘5000‘,‘c001‘);
insert into product(pid,pname,price,category_id) values(‘p003‘,‘雷神‘,‘5000‘,‘c001‘);

insert into product(pid,pname,price,category_id) values(‘p004‘,‘JACK JONES‘,‘800‘,‘c002‘);
insert into product(pid,pname,price,category_id) values(‘p005‘,‘真维斯‘,‘200‘,‘c002‘);
insert into product(pid,pname,price,category_id) values(‘p006‘,‘花花公子‘,‘440‘,‘c002‘);
insert into product(pid,pname,price,category_id) values(‘p007‘,‘劲霸‘,‘2000‘,‘c002‘);

insert into product(pid,pname,price,category_id) values(‘p008‘,‘香奈儿‘,‘800‘,‘c003‘);
insert into product(pid,pname,price,category_id) values(‘p009‘,‘相宜本草‘,‘200‘,‘c003‘);

声明外键约束
1.从orderitem到product的关系
alter table orderitem add foreign key(pid) references product(pid);

1.1 删除外键约束
alter table 从表 drop foreign key 外键名称

2.从orderitem到orders的关系
时间: 2024-08-29 12:35:10

MySQL学习(二)——MySQL多表的相关文章

Mysql学习之--Mysql二进制日志管理

Mysql学习之--Mysql二进制日志管理 简介:     MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的.      MySQL的二进制日志的作用是显而易见的,可以方便的备份这些日志以便做数据恢复,也可以作为主从复制的同步文件,然而二进制日志的大小可能会根据不同的需求而存在麻烦,所以让日志回滚是必须的,当然MySQL已经为我们提供了二进制回滚的功

Mysql学习之--Mysql启动失败案例

Mysql学习之--Mysql启动失败案例 系统环境: 操作系统:Linux RH6 数据库:  Mysql 5.6 在启动mysql server时,启动失败 [[email protected] mysql]# service mysql start Starting MySQL...The server quit without updating PID file [FAILED]b/mysql/ogg.pid). 查看mysql错误日志: [[email protected] mysql

MySQL学习14:操作数据表中的记录(二)

四查询记录 MySQL数据库中对于数据表中的记录最常用的就是记录的查询,操作数据表中的记录大都是记录的查询.查找 记录的语法结构为: SELECT select_expr [,select_expr ...] [ FROM table_refereneces [WHERE where_condition] [GROUP BY {col_name | position } [ASC | DESC],...] [HAVING where_condition] [ORDER BY {col_name

MySQL学习13:操作数据表中的记录(一)

操作MySQL数据库中的数据表的记录包括:记录的插入.记录的修改.记录的删除和记录的查询.简单来说.就 是数据表中的记录的增删改查. 一插入记录 MySQL数据库中的数据表的记录的插入包括三种形式,在前面我们操作数据表的时候就已经使用过记录的插入. 那只是我们最常使用的一种方式而已,接下来我们来看看记录的三种插入方式: (1)INSERT命令 MySQL数据库中的数据表中插入记录的第一种语法格式,也是最常用的一种语法格式为: INSERT [INTO] table_name [(col_name

MySQL学习7:操作数据表(一)

数据表 数据表(或称为表)是数据库最重要的组成部分之一,是其它对象的基础. 先来解决上一篇博客末尾说到的进入数据库验证的问题: 验证当前数据库是哪一个的MySQL命令为: SELECT DATABASE(); 例子: SHOW DATABASES; USE t1; SELECT DATABASE(); 一创建数据表 MySQL语法中创建数据表的语法格式为: CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, .... )

mysql学习笔记——对数据表中记录的操作

对记录的操作,主要有增.删.改.查 一.记录插入命令:insert into 表名(列名,列名, .... ) values(值, 值, ....); 值个数应该列个数相同,值顺序和列顺序相同,值类型和列字段类型匹配 当表名后面省略列名时,values后面要给出所有列的值 插入数据时,字符串添加 单引号 '' ---- 字符型和日期型数据应包含在单引号中 插入数据时,中文乱码问题:将客户端的编码集设置为gbk 修改mysql 配置文件,永久改变客户端编码集 ----- mysql/my.ini

我的MYSQL学习心得 mysql日志

这一篇<我的MYSQL学习心得(十五)>将会讲解MYSQL的日志 MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情. 分别是 1.错误日志:记录mysql服务的启动.运行.停止mysql服务时出现的问题 2.查询日志:记录建立的客户端连接和执行的语句 3.二进制日志:记录所有更改数据的语句,可以用于数据复制 4.慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询 默认情况下,所有日志创建于mysql数据目录中.通过刷新日

mysql分析(二)mysql语法分析

一.mysqld中对于SQL语句的分析客户端和服务器之间交互的时候,客户端发送的同样是字符串形式的查询和执行命令,返回的特定格式的数据库内容(?).这个过程就需要在服务器端进行实时指令的翻译,生成特定的查询指令.在sqlite的实现中,sqlite定义了一个专用的虚拟机环境,和通常的真正的汇编指令相同,它有自己的指令集,有特定的指令格式和操作数,有自己的寄存器和内存内容,这个虚拟环境叫做vdbe(virtual database environment).这一点其实并不奇怪,但是也并不是那么简单

mysql学习入门 - mysql安装

第一步: https://dev.mysql.com/downloads/mysql/  272.3M 的文件点击下载 第二步: 解压到任意路径下,进行初始化 初始化步骤: 第一步: 在解压的mysql文件夹下创建一个data的空文件 第二步:服务端:  D:\mysql-8.0.18-winx64\bin\mysqld --initialize-insecure  初始化mysql    此时的用户名为root, 密码为空 第三步: D:\mysql-8.0.18-winx64\bin\mys