数据库:mysql基础(二)--运算符,DML,数据完整性

  • 运算符

    • 算术运算符
      • +  -  *  /  %
        • select 1+1;
          select 1-1;
          select 1*1;
          select 5/2; #保留小数
          select 5 div 2; #取整
          select 5/0; #null
          select 5%2;

          select这个是增删改查中查的关键字,它的作用就是将数据展示出来.把数据展示到结果集里面.

    • 比较运算符   ---结果是0或者1.  满足1,不满足0.

      • >      <      >=      <=     =       !=

        • select 1=2;   #0
          select 1!=2;  #1
          select 1>2;   #0
          select 1<2;   #1
          select 1<>2;  #1

          上面代码中<> 代表不等于.

    • 逻辑运算符

      • and    or     !

        • select 1>2 and 1<2;   #0
          select 1>2 or 1<2;    #1
          select !(1>2);        #1

          !(1>2)中一定要注意小括号.

    • 位运算符

      • &     |     ^    (按位与    按位或    按位异或)

        • select 4&3;    #0
          select 4|3;    #7
          select 4^3;    #7

          异或:位相同时0,位不同是1

  • DML----数据操纵语言.主要实现对数据的一些操作,实现数据的增删改查

    • insert 添加,插入
      • 语法格式:insert into 表名字[(fie1,fie2...)] values(val1,val2....);    []代表可以省略的

        • #有一张学生表stu,字段依次是sname,sage,ssex--代表姓名,年龄,性别.
          #字段类型依次是varchar(20),int,varchar(10)
          #插入一条完整的记录
          inser into stu values('zs',18,'男');   #不添加字段名称,代表所有字段,顺序必须一致
          
          #插入记录 姓名是'ls',年龄是20
          insert into stu(sage,sname) values(20,'ls');    #插入部分数据,语句前后数据一致即刻
          
          #插入三条记录(批量插入)
          insert into stu(age,sname,ssex) values(23,'ww','男'),(34,'zl','男'),(24,'zq','女');
          
          #复制一张表  stu->stu1
          #1.创建stu1,结构类似(结构复制)
          #2.查询stu表插入到stu1表中
          
              #复制表结构
              create table stu1 select * from stu where 1=0;  #这里1=0代表着stu表中的数据一个都筛选不出来
          
              #stu的数据全部插入到stu1中.  思路:查询出stu表中所有数据,插入到stu1中
              insert into stu1 select * from stu;
          
              #复制表结构 以及 数据
              create table stu1 select * from stu;
          
          

          上面的插入,如果需要插入stu表中某些部分字段的数据也是可以的.

    • update   修改某个字段的数据

      • 语法结构: update tname set fie1=val1,fie2=val2...[where condition]----(where后的条件字段必须唯一确定该条记录:主键)

        • #修改student表中'zs'的年龄为29
          update student set age = 29 where sname = 'zs';

           

    •  delete   从表中删除

      • 语法结构: delete from tname [where condition]

        • #删除表student中的'haha'记录
          delete from student where sname = 'haha';

          一般delete后面都会有where 条件.

    • select 查询 留在后面的DQL中详细介绍

  • 数据完整性

    • 什么是数据完整性?----数据的准确性和可靠性;
    • 完整性约束    ----    保证插入到I表里的数据是准确的可靠的,一般情况下,在设计表时就应该添加约束
      • 实体完整性
        • 实体:  ----  就是记录
        • 保证记录是准确的,不重复的
        • 如何保证实体完整性?
          • 主键约束 : primary key (唯一且不能为空)
            • 主键选择:能够唯一,挑选非业务字段(无意义字段)
            • 语法:
              • 创建表时添加约束

              • #在创建表的时候设置主键
                #方式1
                create table stu2(
                    sid int primary key,
                    sname varchar(20),
                    sage int
                );
                
                #方式2
                create table stu2(
                    sid int,
                    sname varchar(20),
                    sage int,
                    primary key(sid)
                );

                 上面两种方式都是在创建表的时候一起把主键约束定义.设置好主键后,插入主键相同的记录,已经无法插入.-----主键唯一,主键不能为空

                • 一张表只能有一个主键;主键可以是多个字段(联合主键).上面的方式一不能创建联合主键

              • 修改表约束

              • #表已经创建,通过修改表的方式添加主键约束
                alter table stu2 add constraint PK_SID primary key(sid);

                PK_SID为主键别名.如果上面的方式执行前,表中有两个或以上的主键所在字段的值相同,
                则无法添加,应该在添加主键之前删除一些数据,保证主键所在的字段唯一...一般还是希望在设计表的同时添加主键.

          • 唯一约束  unique  (唯一,可以为空,但是空也只能有一个)
            • 语法
              • 创建表并添加约束

              • #方式1
                create table stu3(
                    sid int primary key,
                    sname varchar(20),
                    sage int,
                    card varchar(18) unique
                );
                
                #方式2
                create table stu3(
                    sage int,
                    sname varchar(20),
                    sex varchar(10) ,
                    unique(sage)
                );

                这个和上面的主键约束类似

              • 修改表约束

              • alter table stu3 add constraint UQ_CARD unique(card);

                UQ_CARD 也是unique的别名

          • 主键自增: auto_increment (从1开始,每次增长1..设置主键自增后,不用管主键的值,会自动增长设置)
            • 语法:一般情况下  设置主键自增都是在创建表的时候添加
            • create table stu4(
              	sid int primary key auto_increment,
              	sname varchar(20),
              	age int	
              );

               

            • 主键自增注意的问题:

              • 1.自增不会由于删除而重置

              • 2.delete 和 truncate 的区别

                • delete 和 truncate 都是用来删除表中的数据,不影响表的结构,truncate是清空,delete可以删除一条或多条数据

                • delete删除数据不会重置自增;truncate清空表后会重置自增

                • delete是逐行删除,效率低于truncate----清空表的语法:truncate table student;

          • 删除约束

            • 删除主键约束:

            • alter table student drop primary key;---通过change,和modify也是可以去掉主键条件

            • 删除唯一和主键自增和上面的一样,替换就好

      • 域完整性
        • 域:字段
        • 保证字段的值准确
        • 约束
          • 约束类型:数据类型
          • 非空约束:not null
          • 默认值:default
          • create table stu5(
                    sid int primary key auto_increment,
                    sname varchar(20) not null,
                    sex varchar(3) default '男'
            );

             

      • 引用完整性
        • 两张表之间通过某些字段产生了关联,用引用完整性保证表之间数据参考准确性
        • 约束:
          • 外键约束 : foreign key
          • alter table student add constraint FK_CID foreign key(cid) references classroom(cid);

            FK_CID外键名  给student 的cid字段添加一个外键约束,参照classroom表中的cid字段 ,这时候student表中的cid字段就不能随意写值了,只能在classroom表中cid字段的值得范围内

          • 说明

            • 外键取值范围必须在参照表主键范围内

            • 主外键的名称可以不一致,但是约束(数据类型)必须一致。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值