博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2...
阅读量:6445 次
发布时间:2019-06-23

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

一. 复习

1. MySQL:
    - 服务端
    - 客户端
2. 通信交流
    - 授权
    - SQL语句
        - 数据库
            创建数据库:
                create database db1 default charset utf8;
            删除数据库:
                drop database db1;
        - 数据表
            创建数据表:
                create table tb1(
                    id int not null auto_increment primary key,
                    name char(10),
                    depatment_id int,
                    constraint fk_l foreign key ('department_id') references 表名('tid')
                )engine = innodb default charset = utf8;
        - 数据行
                增:insert into tb1(name,age) values('alex','18');
                删:delete from tb1;
                    delete from tb1 where id > 10
                    truncate table tb1;
                改:update tb1 set name = 'root' where > 10
                查:select * from tb;         # * 的效率低
                    select id,name from tb;
                    
二. 外键的补充
1. 主键:
    - 一张表 只能有 一个主键
    - 一个主键 不一定 是一列
主键可以这样写:
create table t1(
    nid int(11) not null auto_increment,
    pid int(11) not null,
    num int(11) null,
    primery key (nid,pid)                   # 主键有两列,不常用
)engine = innodb default charset = utf8;
# 主键设置成两列,外键就可以关联两列
create table t2(
    id int auto_increment primary key,
    name varchar(32),
    id1 int,
    id2 int,
    constraint fk_t1_t2 foreign key ('id1','id2') references t1('nid','pid')
)engine = innodb default charset = utf8;
create table t1(
    nid int(11) not null auto_increment,
    pid int(11) not null,
    num int(11) null,
    primery key (nid,pid)                   # 主键有两列,不常用
)engine = innodb default charset = utf8;
三. 自增列之起始值
show create table t1  # 查看怎么创建的(代码)
show create table t1 \G  # 查看怎么创建的(代码)
create table t1(
    nid int(11) not null auto_increment,
    pid int(11) not null,
    num int(11) null,
    primery key (nid,pid)                   # 主键有两列,不常用
)engine = innodb auto_increment = 4 default charset = utf8;            # 设置auto_increment默认值
alter table t1 auto_increment = 1                # 修改自增的初始值
四. 自增列之步长
    
1. MySQL:自增步长
    基于会话级别:
        登录一次可以设置一个步长,不能像sqlServer一样(可以在每个表里面设置步长)
    
        show session variables like 'auto_inc%';        # 查看步长(auto_increment_increment)
        set session auto_increment_increment = 2;        # 设置会话步长
    基于全局级别:(尽量不用)
        show global variables like 'auto_inc%';            # 查看全局变量
        set global auto_increment_increment = 2;
        更改之后,打开一个会话就会默认使用更改之后的步长
2. sqlServer:自增步长
    基于表级别:
        create table t1(
            nid int(11) not null auto_increment,
            pid int(11) not null,
            num int(11) null,
            primery key (nid,pid)
            
        )engine = innodb auto_increment = 4 步长 = 2 default charset = utf8;
        
        
        create table t2(
            nid int(11) not null auto_increment,
            pid int(11) not null,
            num int(11) null,
            primery key (nid,pid)
            
        )engine = innodb auto_increment = 4 步长 = 2 default charset = utf8;

 

五. 唯一索引(约束不能重复(可以有一个值为空),加速查找)

create table t1(        id int ...,        num int,        xx int,        # unique uq1 (num)        # num 是唯一的,不允许重复        unique uq1 (num,xx)        # num与xx 联合唯一,两个不能都一样    )

PS:

主键 也不能重复,但不能为空

六. 外键的变种

a. 用户表和部门表:(一对多)    用户:         部门id        1 alex        1        2 root        1        3 egon        2        4 laoyao    3    部门:        1 服务        2 保安        3 公关
b. 用户表和博客表:(一对一)    用户:                1 alex        2 root        3 egon        4 laoyao    博客表(最多4个):                id    博客地址    用户id (FK() + 唯一索引)        1  /alex3714/    1        2  /yuanchenqi/  4        一个用户只能有一个博客园:FK() + 唯一索引 进行约束
c. 多对多:    示例1:        用户表(百合网)        相亲记录表     示例2:        用户表        主机表        用户主机关系表

 

  

转载于:https://www.cnblogs.com/BlameKidd/p/9434319.html

你可能感兴趣的文章
intellij maven配置与使用
查看>>
CentOS安装ntfs-3g
查看>>
SpringMVC文件下载与JSON格式
查看>>
postgre查询表和记录数
查看>>
Q:图像太大,在opencv上显示不完全
查看>>
ubuntu -redis
查看>>
[转]c++ 结构体和类的区别
查看>>
修正锚点跳转位置 避免头部fixed固定部分遮挡
查看>>
Dubbo序列化多个CopyOnWriteArrayList对象变成同一对象的一个大坑!!
查看>>
linux下ping不通的解决方法
查看>>
关于大型网站技术演进的思考(三)---- 存储的瓶颈(3)
查看>>
利用ItextPdf、core-renderer-R8 来生成PDF
查看>>
irc操作小记
查看>>
JAVA 与 PHP 的不同和相同
查看>>
03-Java环境变量配置
查看>>
Python mysql操作
查看>>
建立Ftp站点
查看>>
NavigationController的使用
查看>>
android 内存泄漏
查看>>
HTML5:Canvas-绘制图形
查看>>