-
运算符
- 算术运算符
- + - * / %
-
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中详细介绍
- insert 添加,插入
-
数据完整性
- 什么是数据完整性?----数据的准确性和可靠性;
- 完整性约束 ---- 保证插入到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也是可以去掉主键条件
-
删除唯一和主键自增和上面的一样,替换就好
-
- 主键约束 : primary key (唯一且不能为空)
- 域完整性
- 域:字段
- 保证字段的值准确
- 约束
- 约束类型:数据类型
- 非空约束: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字段的值得范围内
-
说明
-
外键取值范围必须在参照表主键范围内
-
主外键的名称可以不一致,但是约束(数据类型)必须一致。
-
- 实体完整性