博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql
阅读量:5963 次
发布时间:2019-06-19

本文共 3604 字,大约阅读时间需要 12 分钟。

数据约束

添加主键约束的方式

1.直接写在某一列的后面        CREATE TABLE stu(    sid        CHAR(6) PRIMARY KEY,    sname    VARCHAR(20),    age        INT,    gender    VARCHAR(10)         );2.专门去指定某一列为主键列        CREATE TABLE stu(    sid        CHAR(6),    sname    VARCHAR(20),    age        INT,    gender    VARCHAR(10),    PRIMARY KEY(sid)        ); 修改表时指定主键 ALTER TABLE stu ADD PRIMARY KEY(sid); 删除主键 ALTER TABLE stu DROP PRIMARY KEY;

主键自增长(AUTO_INCREMENT)

1.创建表时进行添加      CREATE TABLE stu(    sid INT PRIMARY KEY AUTO_INCREMENT,    sname    VARCHAR(20),    age        INT,    gender    VARCHAR(10)      );2.修改表时设置主键自增长:ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;修改表时删除主键自增长:ALTER TABLE stu CHANGE sid sid INT;

唯一约束 unique(不重复 [ 但是可以为空])

CREATE TABLE stu(sid INT PRIMARY KEY AUTO_INCREMENT,sname    VARCHAR(20) UNIQUE,    对sname列设置了唯一约束age        INT,gender    VARCHAR(10)  );

非空约束:

CREATE TABLE stu(sid INT PRIMARY KEY AUTO_INCREMENT,    主键    自增长sname    VARCHAR(20) NOT NULL,    非空约束    对sname列设置了非空约束age        INT,gender    VARCHAR(10)

默认值约束:

CREATE TABLE stu(sid INT PRIMARY KEY AUTO_INCREMENT,sname    VARCHAR(20) NOT NULL,    age        INT,gender    VARCHAR(10) default ‘男’    对gender列设置了默认约束    不写性别就给一个默认值【男】

 关系模型

1.数据库表中的多对一关系,只需要在多方使用一个独立的列来引用1方的主键即可

2.数据库一对一关系
在表中建立一对一关系比较特殊,需要让其中一张表的主键,即是主键又是外键。
3.数据库多对多关系
在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。

外键约束:foreign key

想给那个表设置外键约束,那就在这个表中添加外键

数据库表中的多对一关系

emp.deptno必须在dept表中是真实存在  create talbe emp (    empno int primary key,    ...    deptno int,    CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES     emp(empno)    );  修改表时添加外键约束  ADD CONSTRAINT fk_emp_deptno FOREIGN KEY(deptno) REFERENCES dept(deptno);  修改表时删除外键约束  DROP FOREIGN KEY fk_emp_deptno;/*约束名称*/

数据库一对一关系

从表的主键即是外键

数据库多对多关系

  在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。

/*学生表*/      create table student(        sid int PRIMARY KEY,        ...      );/*老师表*/      create table teacher(        tid int PRIMARY KEY,        ...      );/*中间表*/      create table stu_tea(        sid int,        tid int,    CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),    CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)      );

联合主键(复合主键):一张表中存在两个或两个以上的主键列

不建议大家这么去写,我们可以使用一个主键+n个唯一约束列,来代替

多表查询

笛卡尔积:

select * from emp,dept;

同时查询多张表,将行数相乘,完全多对多的关系

内连接

* 内连接查询出的所有记录都满足条件。

方式1

select e.ename,e.sal,d.loc from emp e INNER JOIN dept d ON e.deptno = d.deptno;

方式2

select e.ename,e.sal,d.loc from emp e ,dept d where e.deptno = d.deptno;

外连接

左外连接  以左表为准左外:SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xxselect * from emp e LEFT OUTER JOIN dept d on e.deptno = d.deptno;左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来。左表中不满足条件的记录,右表部分都为NULL右外连接  以右表为准右外:SELECT * FROM 表1 别名1 RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xxselect * from emp e1 RIGHT OUTER JOIN dept d1on e1.deptno = d1.deptno;右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能出来。右表不满足条件的记录,其左表部分都为NULL

子查询

any,all关键字必须与一个比较操作符一起使用

select * from emp where sal >all (select sal from emp where deptno = 20);

all的意思是“对于子查询返回的列中的所有值,如果比较结果为true,则返回true”

any关键词可以理解为“对于子查询返回的列中的任一数值,如果比较结果为true

数据库的备份及恢复

1. 数据库导出SQL脚本

备份数据库内容,并不是备份数据库!

> mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径
> 例如:mysqldump -uroot -p123 mydb1>C:\mydb1.sql (与mysql.exe和mysqld.exe一样, 都在bin目录下)
> 注意,不要打分号,不要登录mysql,直接在cmd下运行
> 注意,生成的脚本文件中不包含create database语句

2. 执行SQL脚本

第一种方式

> mysql -u用户名 -p密码 数据库<脚本文件路径
> 例如:
* 先删除mydb1库,再重新创建mydb1库
* mysql -uroot -p123 mydb1<C:\mydb1.sql
> 注意,不要打分号,不要登录mysql,直接在cmd下运行
第二种方式
> 登录mysql
> source SQL脚本路径
> 例如:
* 先删除mydb1库,再重新创建mydb1库
* 切换到mydb1库
* source c:\mydb1.sql
恢复数据库信息

 

转载于:https://www.cnblogs.com/taozizainali/p/11043842.html

你可能感兴趣的文章
从Powershell ***脚本学到的如何执行后台runspace~
查看>>
SCCM TP4部署Office2013
查看>>
Linux系统启动过程,grub重装。
查看>>
使用Putty密钥认证机制远程登录Linux
查看>>
一不小心,老司机又翻车了
查看>>
理解思科IPS系统的traffic flow notifications
查看>>
【博客话题】技术人生之三界修炼
查看>>
Ext JS 6开发实例(三) :主界面设计
查看>>
Hyper-V 3中虚拟机CPU竞争机制
查看>>
【原创】Oracle RAC原理和安装
查看>>
东哥读书小记 之 《MacTalk人生元编程》
查看>>
《随机出题软件》&《随机分队软件》源码(Windows API)
查看>>
python 文件及文件夹操作
查看>>
Android自定义ListView的Item无法响应OnItemClick的解决办法
查看>>
Building Apps for Windows Phone 8.1教程下载地址整理
查看>>
移动Web—CSS为Retina屏幕替换更高质量的图片
查看>>
[Linux 性能检测工具]SAR
查看>>
JS 运行、复制、另存为 代码。
查看>>
一个经典编程面试题的“隐退”
查看>>
阿里公共DNS 正式发布了
查看>>