zoukankan      html  css  js  c++  java
  • mysql基本用法

    mysql的基本用法
     
     
    一、创建数据库
    create database day02 default character set utf8;
    -- 创建表
    create table user(
     id int,
     name varchar(20),
     gender varchar(20),
     class varchar(20)
    );
    1. 切换数据库   use 表名
    2. 添加数据
      insert into user(id,name) values(1,'jack');
      insert into user(name) values('jack');
    3. 删除表 
      drop table user;
    4. 创建表指定class字段默认值为”极客营29营“
      create table user(
       id int,
       name varchar(20),
       gender varchar(20),
       class varchar(20) default "极客营29营"  -- 指定默认值
      );
    5. 注意

      添加学生记录,如果学生班级不插入,默认使用”极客营29营“
      insert into user(id,name) values(1,'jack');
      给使用默认值的字段插入NULL
      insert into user values (2,'rose','male',NULL);
       给使用默认值字段插入非NULL值
      insert into user values(3,'tom','female',"极客营28营");
       
      -- 创建表 指定class字段默认值为”极客营29营“
      create table user(
       id int,
       name varchar(20),
       gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
       class varchar(20) default "极客营29营"  -- 指定默认值
      );
      -- 限制性别不能为NULL
      -- 非空字段必须赋值
      insert into user(id,name) values(1,'jack');
      -- 非空字段不能插入null
      insert into user values(2,'rose',null,'极客营25营');

     

         唯一性:限制字段不能重复
    -- 创建表 指定class字段默认值为”极客营29营“
    create table user(
     id int unique,  -- 唯一:设置id不能重复
     name varchar(20),
     gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
     class varchar(20) default "极客营29营"  -- 指定默认值
    );
    insert into user(id,name) values(1,'rose');
    insert into user(id,name,gender) values(2,'rose','');  -- duplicate entry '1' for key id
    -- 能够插入NULL吗?
    insert into user (id,name) values (null,'tom');
    insert into user (id,name) values (null,'jerry');
    insert into user (name) values ('jerry');
    delete from user where id = 2;

         主键约束

    drop table user;-- 删除表
    -- 创建表 、
    create table user(
     id int primary key,  -- 主键
     name varchar(20),
     gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
     class varchar(20) default "极客营29营"  -- 指定默认值
    );
     
    插入数据
    insert into user values(1,'jack','','极客营29营');
    -- insert into user values(1,'rose','男','极客营29营');  -- duplicate entry '1' for key id
    insert into user values(2,'rose','','极客营29营');
    -- insert into user(name,gender,class) values('rose','男','极客营29营');  主键不能为null
    -- insert into user values(null,'rose','男','极客营29营');  -- Column 'id' can not be null

        自增长

     1 drop table user; -- 删除表
     2 -- 创建表 
     3 create table user(
     4  id int primary key auto_increment,  -- 主键  设置自增长
     5  name varchar(20),
     6  gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
     7  class varchar(20) default "极客营29营"  -- 指定默认值
     8 );
     9 insert into user values(1,'jack','','极客营29营');
    10 设置主键自增长后,主键可插入值可不插入值 (mysql自动控制主键增长,默认从1开始)
    11 insert into user(name,gender,class) values('rose','','极客营29营');
    12 delete from user;-- 不会删除约束
    13 insert into user(name,gender,class) values('jerry','','极客营29营');
    14 truncate table user;-- 删除约束
    15 insdrop table t_user;ert into user(name,gender,class) values('jerry','','极客营29营');
    View Code

              面试题:  delete && truncate区别?

    delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,

         但要 注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。

    ②delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。

    ③delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。

    ④truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器。

    ⑤ truncate会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse storage。

         不会记录日志,所以执行速度很快,但不能通过rollback撤消操作(如果一不小心把一个表truncate掉,也是可以恢复的,只是不能通过rollback来恢复)。

    ⑥对于外键(foreignkey )约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。

    ⑦truncatetable不能用于参与了索引视图的表。

     外键约束
    学生表 
    create table t_user(
     id int primary key auto_increment,  -- 主键
     name varchar(20),
     gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
     cid int,  -- 班级的编号
    -- 添加外键约束
     constraint user_class_fk foreign key(cid) references t_class(cid)
                       外键名称                   外键字段         参考表(参考字段)
    );
     
    班级表
    create table t_class(
     cid int primary key auto_increment,  -- 班级表的主键
     classname varchar(20),
     classinfo varchar(100)
    );
    -- 插入班级数据
    insert into t_class(classname,classinfo) values('极客营28营','我们不如29营厉害');
    -- 插入学生信息
    insert into t_user(name,gender,cid) values('jack','',1);
    -- 添加外键约束之后 添加不成功,因为t_class表中没有id为3的班级
    -- insert into t_user(name,gender,cid) values('Lucy','男',3);
    -- 添加一个学生,是25营 先添加主表,再添加从表
    insert into t_class(classname,classinfo) values('极客营25营','已毕业');
    insert into t_user(name,gender,cid) values('小明','',3);
    insert into t_user(name,gender,cid) values('小红','',3);
    -- 删除25营班级  先删除从表,再删除主表
    delete from t_user where cid = 3;
    delete from t_class where cid = 3;
    -- 更新数据
    update t_class set classinfo = '我们是最最最最最最厉害的' where cid = 2;
    update t_user set cid = 1 where cid = 2;
    update t_class set cid = 3 where cid = 2;
     
    先添加主表,再添加从表。
    先删除从表,在删除主表。
    级联操作
    -- 创建表 学生表
    create table t_user(
     id int primary key auto_increment,  -- 主键
     name varchar(20),
     gender varchar(20) NOT NULL default '保密', --  非空,限制性别不能为空
     cid int,  -- 班级的编号
    -- 添加外键约束
     constraint user_class_fk foreign key(cid) references t_class(cid) ON DELETE CASCADE ON UPDATE CASCADE  -- 添加级联操作on update cascade
    --                外键名称                   外键字段         参考表(参考字段)
    );

    添加联合主键  

               alter table 表名 add constraint 取主键名 primary key (主键,主键);

    修改添加外键

               alter tbale 表名 add constraint  取外键名 foreign key (外键) reference 表名(外键)

     
     
     
     
     
  • 相关阅读:
    PHP 实现定时任务的几种方法
    ueditor 文本编辑器
    CodeIgniter 如何去掉 Index.php
    php 后台权限例子 (mysql 数据表)
    php ajax 下拉加载数据
    Codeforces 931.D Peculiar apple-tree
    Codeforces 931.C Laboratory Work
    Codeforces 932.F Escape Through Leaf
    bzoj2325 [ZJOI2011]道馆之战
    bzoj3611 [Heoi2014]大工程
  • 原文地址:https://www.cnblogs.com/liyang6/p/10505405.html
Copyright © 2011-2022 走看看