mysql 建立表之间关系 练习 1

练习:账号信息表,用户组,主机表,主机组

#用户表

mysql> create table user(
id int not null unique auto_increment,
username varchar(50) not null,
password varchar(50) not null,
primary key(username,password));
Query OK, 0 rows affected (0.12 sec)
插入用户信息
mysql> insert into user(username,password) values(‘root‘,‘123‘),(‘alex‘,‘1234‘),(‘mike‘,‘1234‘);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from user;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  1 | root     | 123      |
|  2 | alex     | 1234     |
|  3 | mike     | 1234     |
+----+----------+----------+
3 rows in set (0.09 sec)

#用户组表



mysql> create table usergroup(
id int primary key auto_increment,
groupname varchar(20) not null unique);
Query OK, 0 rows affected (0.21 sec)

mysql> insert into usergroup(groupname) values
(‘IT‘),
(‘sale‘),
(‘Finance‘),
(‘boss‘);
Query OK, 4 rows affected (0.10 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from usergroup;
+----+-----------+
| id | groupname |
+----+-----------+
|  4 | boss      |
|  3 | Finance   |
|  1 | IT        |
|  2 | sale      |
+----+-----------+
4 rows in set (0.00 sec)

#主机表

mysql> create table host(
id int primary key auto_increment,
ip char(16) not null unique default ‘127.0.0.1‘);
Query OK, 0 rows affected (0.13 sec

插入ip记录

insert into host(ip) values
(‘172.16.45.2‘),
(‘172.16.31.10‘),
(‘172.16.45.3‘),
(‘172.16.31.11‘),
(‘172.10.45.3‘),
(‘172.10.45.4‘),
(‘172.10.45.5‘),
(‘192.168.1.20‘),
(‘192.168.1.21‘),
(‘192.168.1.22‘),
(‘192.168.2.23‘),
(‘192.168.2.223‘),
(‘192.168.2.24‘),
(‘192.168.3.22‘),
(‘192.168.3.23‘),
(‘192.168.3.24‘)
;

#业务线表
mysql> create table business(id int primary key auto_increment,business varchar(20) not null unique);
Query OK, 0 rows affected (0.20 sec)

mysql> insert into business(business) values
    -> (‘轻松贷‘),
    -> (‘随便花‘),
    -> (‘大富翁‘),
    -> (‘穷一生‘)
    -> ;
Query OK, 4 rows affected (0.04 sec)
Records: 4  Duplicates: 0  Warnings: 0

多对多关系练习

#建关系:user与usergroup

创建一张user2usergroup表
create table user2usergroup(
id int not null unique auto_increment,
user_id int not null,
group_id int not null,
primary key(user_id,group_id),
foreign key(user_id) references user(id)
on delete cascade
on update cascade,
foreign key(group_id) references usergroup(id)
on delete cascade
on update cascade
);

插入记录



mysql> insert into user2usergroup(user_id,group_id) values(1,1),(1,2),(1,3),(1,4),(2,3),(2,4),(3,4);
Query OK, 7 rows affected (0.09 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select * from user2usergroup;
+----+---------+----------+
| id | user_id | group_id |
+----+---------+----------+
|  1 |       1 |        1 |
|  2 |       1 |        2 |
|  3 |       1 |        3 |
|  4 |       1 |        4 |
|  5 |       2 |        3 |
|  6 |       2 |        4 |
|  7 |       3 |        4 |
+----+---------+----------+
7 rows in set (0.00 sec)


#建关系:host与business


create table host2business(
id int not null unique auto_increment,
host_id int not null,
business_id int not null,
primary key(host_id,business_id),
foreign key(host_id) references host(id)
on delete cascade
on update cascade,
foreign key(business_id) references business(id)
on delete cascade
on update cascade
);


insert into host2business(host_id,business_id) values
(1,1),
(1,2),
(1,3),
(2,2),
(2,3),
(3,4)
;
#建关系:user与host

create table user2host(
id int not null unique auto_increment,
user_id int not null,
host_id int not null,
primary key(user_id,host_id),
foreign key(user_id) references user(id)
on delete cascade
on update cascade,
foreign key(host_id) references host(id)
on delete cascade
on update cascade
);
insert into user2host(user_id,host_id) values
(1,1),
(1,2),
(1,3),
(1,4),
(2,2),
(2,3),
(2,4),
(2,5),
(3,10),
(3,11),
(3,12)
;
ysql> select * from user2host;
+----+---------+---------+
| id | user_id | host_id |
+----+---------+---------+
|  1 |       1 |       1 |
|  2 |       1 |       2 |
|  3 |       1 |       3 |
|  4 |       1 |       4 |
|  5 |       2 |       2 |
|  6 |       2 |       3 |
|  7 |       2 |       4 |
|  8 |       2 |       5 |
|  9 |       3 |      10 |
| 10 |       3 |      11 |
| 11 |       3 |      12 |
+----+---------+---------+
11 rows in set (0.00 sec)
 
 

 


原文地址:https://www.cnblogs.com/mingerlcm/p/9867670.html

时间: 2024-07-30 20:17:52

mysql 建立表之间关系 练习 1的相关文章

mysql 建立表之间关系 练习 2

创建数据库db6 create database db6 charset=utf8; user db6; # 创建班级表 mysql> create table class(cid int primary key auto_increment,caption varchar(50) not null unique); Query OK, 0 rows affected (0.15 sec) mysql> select * from class; Empty set (0.00 sec) mys

Django数据库的查看、删除,创建多张表并建立表之间关系

配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试: settings里面的设置: #可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': {

8.3.7 - mysql 表之间关系

如何找出两张表之间的关系 分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id) #3.总结: #多对一: 如果只有步骤1成立,则是左表多对一右表 如果只有步骤2成立,则是右表多对一左表 #多对多 如果步骤1和2同时成立,则证明这两张表时一个双

【转】Oracle - 数据库的实例、表空间、用户、表之间关系

[转]Oracle - 数据库的实例.表空间.用户.表之间关系 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘

Oracle - 数据库的实例、表空间、用户、表之间关系

完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件.Oracle有一个很大的内存快,成为全局区(SGA

表与表之间关系回顾

------------------siwuxie095 表与表之间关系回顾 1.一对多 (1) 1)场景:分类和商品的关系 2)描述:一个分类里面有多个商品,一个商品只能属于一个分类 (2) 1)场景:客户和联系人的关系 2)描述:一个客户里面有多个联系人,一个联系人只能属于一个客户 注意:这里的客户是公司级的,即 公司,联系人 即 公司里的员工,实 际上就是公司和员工的关系 (3)一对多建表:通过外键建立关系 在多的那一方创建字段作为外键,指向一的那一方的主键 客户: cid cname 1

ACCESS 实例学生信息管理表之间关系图

ACCESS 实例学生信息管理表之间关系图 汉语编程1 汉语编程2 汉语编程3 原文地址:http://blog.51cto.com/13172026/2164352

导航猫(NaviCat for MySql)建立表的方法

我知道在客户端上建立表一共了三种(我自己知道,不知道还有木有别的方法,如果有请留言) 1.右键某数据库建立一张表,自己填写字段 2.导入.sql文件(sql语句已经写好),如下图: 右键数据点运行SQL文件就出现了上面的截图部分,执行完sql,刷新一下数据库,表就建立好了.(前提是sql文件中的语句是对的). 3.点击查询->新建查询->此时写sql语句,如下图: 我就知道这三种了,其实sql文件应该是可以生成的(如果切换数据,应该可以在原来的数据库中生成),我建议还是第三种可以联系一下sql

mysql建立表及表的简单操作-插入数据-删除主键-删除表-修改表的数据-删除表的数据

-- 1.使用数据库 USE ren; -- 2.建立student表 CREATE TABLE student ( sid INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,   -- UNSIGNED(无符号) AUTO_INCREMENT(自增) sname VARCHAR(10),    -- 只能保存10个字符 saddress VARCHAR(15)   -- 只能保存15个字符 )ENGINE=MYISAM DEFAULT CHARSET=utf8;