MySQL

MySQL

1. Mysql外键

1. 外键设计

  1. 创建一个用户表 (被关联表)

    create table userinfo(uid int  primary key auto_increment not NULL, 
    name varchar(20) not NULL , ...);
  2. 创建一个数据表 (关联表)

    create table userdata(did int primary key auto_increment not NULL,
    data text ...,
    --指定该表的某个字段与其他表为外键关系
    udid int not NULL,
    foreign key(udid) references userinfo(uid));
    --这样udid与 `userinfo` 表的uid构成外键关系

2. 数据操作

  1. 插入数据

     - 1.必须先插入被关联表(userinfo)的数据,再插入关联表(userdata)的数据。
    -- userinfo 表插入数据
    insert into userinfo(uid,name,...) values(NULL,'root',...);
    ...
    -- userdata 表插入数据
    insert into userdata(did,data,udid) values(NULL,'data....',1)
    --如果关联表(userdata)插入的uid在被关联表(userinfo)中不存在会报错
  1. 更新数据

    update userdata set udid=999 where did=1;
    --需要注意的是当你设置的udid在userinfo表中找不到的时候会报错
    --同时还要注意did的主键约束
  1. 删除数据

    -- 要先删除已关联表字段(userdata),才能修改被关联表(userinfo)中的关联uid字段。
    -- 如果关联表(userinfo) uid 已经被关联了,那删除是就会报错
  1. 高级查询

    • 内连接查询

      select * from userdata join userinfo on userdata.udid = userinfo.uid;
      -- 结果会连在一起
          
      - 外连接查询 (__分为左连接和右连接 __)

      ```sql
      -- 1.左连接
      select * from userdata left join userinfo on userdata.udid = userinfo.uid;
      -- 2.右连接
      select * from userdata right join userinfo on userdata.udid = userinfo.uid;
      -- 所谓左连接和右连接 无非是用哪个表做参考
-   联合查询
```sql
select * from userdata union select * from userinfo
```

- 子查询

```sql
select * from (select * from userdata) as newName;
select DISTINCT * from userdata where udid in (select * from userinfo);
-- DISTINCT表示去重的意思
```

2. Linux下Mysql数据导入导出

首先linux 下查看mysql相关目录
root@ubuntu14:~# whereis mysql
mysql:
/usr/bin/mysql---- mysql的运行路径
/etc/mysql
/usr/lib/mysql----- mysql的安装路径
/usr/bin/X11/mysql
/usr/share/mysql
/usr/share/man/man1/mysql.1.gz
此外还有一个:
var/lib/mysql --------mysql数据库data文件的存放路径

确定了运行路径,执行导入、导出mysql数据库命令
一、导出数据库用mysqldump命令
(注意:先cd到mysql的运行路径下,再执行一下命令):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
mysqldump -uroot -p dbname > dbname .sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
mysqldump -uroot -p -d dbname > dbname .sql

二、导入数据库
1、首先建空数据库
mysql>create database dbname ;
2、导入数据库
方法一:
(1)选择数据库
mysql>use dbname ;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/xxxx/dbname .sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值