MySQL笔记2

实体完整性约束(约束行数据,记录 )
A: 主键约束 primary key

第一种
CREATE TABLE student1
(
sid int primary key,
sname VARCHAR(20),
gender char(1), #0 1
age int
);

第二种
CREATE TABLE student2
(
sid int,
sname VARCHAR(20),
gender char(1), #0 1
age int,
PRIMARY KEY(sid)
);

第三种
alter table student add CONSTRAINT pk_列名 PRIMARY key (列名);
组合主键(扩展)
alter table student add CONSTRAINT pk_sid PRIMARY key (sid,sname);

B: 唯一约束
第一种唯一约束
CREATE TABLE student3
(
sid int primary key,
sname VARCHAR(20),
gender char(1), #0 1
age int,
card char(18) unique
);

第二种唯一约束
CREATE TABLE student3
(
sid int primary key,
sname VARCHAR(20),
gender char(1), #0 1
age int,
card char(18),
UNIQUE (card)
);

第三种
alter table student3 add CONSTRAINT uq_card UNIQUE (card);
区别:
主键约束:唯一,不允许为null
唯一约束:唯一,允许最多有一个null值

C: 自增长
CREATE TABLE student2
(
sid int primary key auto_increment,
sname VARCHAR(20),
gender char(1), #0 1
age int,
card char(18),
UNIQUE (card)
);

设置自增长前提条件:
1、必须是数值类型
2、该列必须是primary key 主键
自增长特殊情况:
1、清空表 快
Truncate table 表 自增长会重新开始记数(复位)
2、如果增加数据时出现了错误
删去3,重新添加则为4
3、清空表删除表中的所有记录和delete 区别
Delete from 表; //删除表中的所有数据 慢

3、域完整性约束(列)
A: 类型约束
B:非空约束 not null

第一种
create table tmp
(
id int PRIMARY key auto_increment,
name varchar(20) not null
);

第二种
alter table tmp CHANGE name name varchar(20) not null; //添加非空约束

C:默认值约束 default
第一种
create table tmp2
(
id int PRIMARY key auto_increment,
name varchar(20) not null,
gender char(1) default ‘男’
);

第二种
alter table tmp2 change gender gender char(1) DEFAULT ‘男’;

4、自定义完整性约束(mysql 不支持 )
自定义完整性约束成绩0~100
alter table tmp add CONSTRAINT ck_score CHECK(score >=0 and score <=100)
alter table tmp add CONSTRAINT ck_score CHECK(score between 0 and 100)

5、引用完整性约束
外键表
create table stu
(
sid int PRIMARY key,
sname varchar(40),
cid INT
);

主键表(主键,约束其它表)
create table classrom
(
cid int PRIMARY key auto_increment,
cname varchar(100)
);

添加引用完整性约束 (外键表添加)
ALTER table stu add CONSTRAINT fk_cid FOREIGN KEY(cid) references classrom(cid);
Alter table 外键表 add constraint fk_主键 foreign key(外键) references 主表名(主键);

实际很少建立主外键关系,主外键关系的约束会影响到执行性能,并且级联删除可能会造成大量数据的误删。

删除约束,添加自增,删除自增长
alter table tmp CHANGE id id int auto_increment; //添加自增长(必须是主键)
alter table tmp CHANGE id id int; 删除自增长
alter table tmp drop primary key; 删除主键约束
alter table tmp drop foreign key fk_cid; 删除外键约束
drop index fk_cid on stu; 删除索引

二、运算符
1、算术运算 +,-,*,/,div,%,mod
Select 1+2
Select 5/2; /2.5/
Select 5 div 2; /2/

2、比较运算符 >,<,>=,<=,!=,<>,=,is null,is not null,in,not in,like,not like,between… and.
Select 1=1; /1/
Select 1>2; /0/
Select * from stu where sname is null; // null
Select * from stu where sname =’’; // 空字符

3、逻辑运算符 and , or ,!
Select 1=1 and 2=3; /0/
Select * from stu where sname is null or sname=’’;

4、位运符 |,^,&
Select 2|3; /3/ 有1则1
Select 2^3; /1/ 不同为1,相同为0
Select 2&3; /2/ 有0则0

三、DML 操作
1、增加数据
A: 按列名增加数据
按列增加数据
INSERT INTO student (sid,sname,gender) VALUES (2,‘zs’,‘男’);
B:省略列名增加数据
不写列名增加数据
INSERT into student VALUES(3,‘aaaa’,‘女’,22);
C:批量增加
批量增加
INSERT INTO student (sid,sname,gender) values (8,‘cdd’,‘男’),(9,‘cccc’,‘男’);
D:复制表中的数据
表复制
insert into student1 select * from student;
E:创建表的时候表复制
create table stutmp select * from student;

2、更新数据
修改学生编号为1000的性别=“女”
update student set gender =‘女’ where sid=1000 ;

3、删除数据
删除所有数据
DELETE from stutmp ; #删除所有的数据 不会复位 慢
删除年龄为null的信息
DELETE FROM stutmp where age is null or age=’’;

4、DQL查询数据
语法:
select 列名|表达式
from 表名|结果集
[where 条件]
[group by 分组字段]
[having 分组筛选的条件]
[order by 排序字段 (asc|desc) 默认asc升序]
[limit 索引, 条数]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值