zoukankan      html  css  js  c++  java
  • mysql

    数据约束

    添加主键约束的方式

    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.xx
    select * 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.xx
    
    select * from 
    emp e1 RIGHT OUTER JOIN dept d1
    on 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
    恢复数据库信息

  • 相关阅读:
    模拟登录
    服务器的
    多线程爬虫
    新浪微博
    。。
    ** turtle模块和random模块
    收藏链接python--向大神学习
    126邮箱发送邮件测试1
    LabVIEW版本控制(转)
    正交编码器单端转差分
  • 原文地址:https://www.cnblogs.com/taozizainali/p/11043842.html
Copyright © 2011-2022 走看看