zoukankan      html  css  js  c++  java
  • 数据库基础

    1:存储引擎:InnoDB MyIsam memory blackhole

    InnoDB 支持事务,行级锁,外键

      事务:原子性操作

        就是讲一组sql语句当成一个原子性操作

        要么全部成功,要么全部不成功,不成功事务回滚.

      行级锁:同一张表中的不同行可以被同时修改

    MyIsam : 查询快,相对插入数据和修改数据相对慢

      表级锁,同一张表不能同时被修改

    memory:处理数据速度快,如每个用户的登录状态可以使用 数据都存储在内存中, 数据量小,并对服务器的内存有要求 断电消失

    blackhole 黑洞 放进去的数据都不存 创建表时默认的存储引擎是Innodb:

    指定创建表的存储引擎: create table staff_info (id int,age int) engine = MyIsam;

    2.sql语句: 创建表:create table staff_info (id int,name varchar(20),age int,sex enum('female','male'),phone char(11),job varchar(20));

    查看表结构:desc staff_info;

      show create table staff_info G;

    插入数据:insert into staff_info (id,name,age,sex,phone,job) values (1,'liming',12,男,1234567912,it);

    插入单行数据:insert into staff_info vales (1,'liming',12,男,1234567912,it);

    插入多行数据:insert into staff_info values

        (1,'liming',12,男,1234567913,it),

        (2,'liming',12,男,1234567914,it),

        (3,'liming',12,男,1234567915,it),

        (4,'liming',12,男,1234567916,it);

    查看表中所有数据: select * from staff_info;

    查看指定列的数据: select age from staff_info;

    3.常用数值:int,float,decimal(无误差,用于汇率,利息等高精度数值)

    4,时间 :

      date 描述年月日

      datetime 描述年月日时分秒

      time 时分秒

        create table t1 (d date,t time,y year,dt datetime,ts timestamp);

        insert into t1 (now(),now(),now(),now(),now());

    +------------+----------+------+---------------------+---------------------+
    # | d                  | t              | y       |  dt                                 | t s                          |
    # +------------+----------+------+---------------------+---------------------+
    # | NULL | NULL | NULL | NULL | 2018-09-29 11:27:29 |
    # | 2018-09-29 | 11:29:07 | 2018 | 2018-09-29 11:29:07 | 2018-09-29 11:29:07 |
    # +------------+----------+------+---------------------+---------------------+

    5:基本数据类型:

      char() 0-255字节,定长字符串

          定长,浪费磁盘 ,存取速度非常快

          应用:这一列数据的长度变化小,如id,手机号,身份证号,序号

             频繁存取,对效率要求高

              短数据时使用

      varchar()0 -65535 字节,变长字符串

          变长,节省磁盘空间 ,存取速度相对char慢

          应用:这一列数据的长度变化大, name,地址

          对效率要求相对小

          相对长数据时使用

       create table user (id int,name varchar(30),age char(3));

       insert into user values(1,'li',12);

          插入数据,name实际上占用了两个字节,age占用了三个字节.

          char类型在查询时会默认去掉所有补全的空格

      插入带有 空格的数据,查询的时候看到varchar字段是带有空格显示的,char字段显示的时候是会去掉所有的空格

      插入的数据如果超过了约束的范围,会截断数据

    6,枚举与集合:enum 与 set

      枚举,在值集合中选取单个值,(如选什么银行卡,选什么支付方式时,性别) : sex  enum('male','female') [  单选框]

      集合 :在值集合里选取任意的值,多选hobby set('a','b','c')  去重,多选框

      create table t2 (name varchar(20),sex enum('male','female'),hobby set('a','b','c'));

      insert into t2 values ('liming','female','a,b,b,d'); b会去重,d 不会写入表

      如果插入的数据不在枚举或集合中,那么数据不会写入表中

    7.表约束:

      not null 非空 default

         如果不输入就使用默认的

      unique 唯一  auto_increment (id自增,必须唯一,以及是数字类型)

          如果是空格,只能有一个空格

          非空+唯一就不能有空格

      联合唯一 如(ip,port)

        就是给一个以上订单字段设置唯一约束

      primary key 主键  (not null + unique) 唯一 + 非空  加速查询,每张表只能有一个主键

         当我们以非空并且唯一的约束来创建一个表时,如果没有指定主键,那么第一个非空唯一的字段将会被设置成主键   

      foreign key 外键 (unique,外表中唯一的)

      create table t1 (id int primary key,name varchar(20) not null,phone char(11) not null unique ),

      insert into t1 (id,name) values (1,'liming')

    外键:

      create table department (id int primary key auto_increment,dep_name varchar(20) not null);

      create table staff (sid int primary key auto_increment,sname varchar(20) not nll,dep_id int,

    foreign key(dep_id) references department(id));

    show create table staff;查看外键,外键 MUL

    连级删除:

      如果一个表中的字段作为外键对另一个表提供服务,那么默认不能直接删除外表中正在使用的数据

      on delete cascade

      on update cascade

        course : cid,cname,cprice

        student :sid,sname,age,course_id

            create table course (cid int primary key auto_increment,cname varchar(20) not null,cprice int not null);

        create table student (sid int primary key auto_increment,sname varchar(20) not null,age char(3) not       null,course_id int ,foreign key(course_id) references course(cid),on delete cascade on update cascade);

        insert into course (cname,cprice) values ('python',19800),('linux',15800);

        insert into student (sname,age,course_id) values ('liming',12,1),('lining',18,2);

        delete from course where cid = 1

    联合唯一:

      create table t1 (id int primary key,ip char(15) not null,port int not null,unique(ip,port));

    设置默认值:default

      create table user (id int primary key auto_increment,name varchar(20) not null,sex enum('male','female') not null default 'male');

    8,表结构修改:

      alter table user rename user1; 修改表名

      alter table user add name varchar(20) not null  after id; 在id后面添加列

      alter table user add name varchar(20) not null  first; 

      alter table user drop name;删除列

      alter table user modify name char(50) not null after age; 修改已存在的列名的约束,位置

      alter table user change name new_name varchar(20) not null after id;修改表名

      

      

      

  • 相关阅读:
    关于文件路径的生成
    re模块小结
    logging模块知识点及应用小结
    微信小程序上传图片
    小程序图表插件
    小程序实现多图上传、预览
    微信小程序实现验证码倒计时效果
    微信小程序上传图片,视频及预览
    小程序实现星级打分
    小程序获取系统日期时间
  • 原文地址:https://www.cnblogs.com/lijinming110/p/9724370.html
Copyright © 2011-2022 走看看