文档章节

三、字段属性和高级操作

swift_hua
 swift_hua
发布于 2017/08/03 15:58
字数 1206
阅读 1
收藏 0

-- 增加主键

create table my_pri1(
name varchar(20) not null comment '姓名',
number char(10) primary key comment '学号: itcast + 0000, 不能重复'
)charset utf8;

-- 复合主键
create table my_pri2(
number char(10) comment '学号: itcast + 0000',
course char(10) comment '课程代码: 3901 + 0000',
score tinyint unsigned default 60 comment '成绩',
-- 增加主键限制: 学号和课程号应该是个对应的,具有唯一性
primary key(number,course)
)charset utf8;

-- 追加主键
create table my_pri3(
course char(10) not null comment '课程编号: 3901 + 0000',
name varchar(10) not null comment '课程名字'
);

alter table my_pri3 modify course char(10) primary key comment '课程编号: 3901 + 0000';
alter table my_pri3 add primary key(course);

-- 向pri1表插入数据
insert into my_pri1 values('古学星','itcast0001'),('蔡仁湾','itcast0002');
insert into my_pri2 values('itcast0001','39010001',90),('itcast0001','39010002',85),('itcast0002','39010001',92);

-- 主键冲突(重复)
insert into my_pri1 values('刘辉','itcast0002'); -- 不可以: 主键冲突
insert into my_pri2 values('itcast0001','39010001',100); -- 不可以:冲突

-- 删除主键
alter table my_pri3 drop primary key;

-- 自增长
create table my_auto(
id int primary key auto_increment comment '自动增长',
name varchar(10) not null
)charset utf8;

-- 触发自增长
insert into my_auto(name) values('邓立军');
insert into my_auto values(null,'龚森');
insert into my_auto values(default,'张滔');

-- 指定数据
insert into my_auto values(6,'何思华');
insert into my_auto values(null,'陈少炼');


-- 修改表选项的值
alter table my_auto auto_increment = 4; -- 向下修改(小)
alter table my_auto auto_increment = 10; -- 向上修改 

-- 查看自增长变量
show variables like 'auto_increment%';

-- 修改自增长步长
set auto_increment_increment = 5;

-- 插入记录: 使用自增长
insert into my_auto values(null,'刘阳');
insert into my_auto values(null,'邓贤师');

-- 删除自增长
alter table my_auto modify id int primary key; -- 错误: 主键理论是单独存在
alter table my_auto modify id int; -- 有主键的时候,千万不要再加主键

-- 唯一键
create table my_unique1(
number char(10) unique comment '学号: 唯一,允许为空',
name varchar(20) not null
)charset utf8;

create table my_unique2(
number char(10) not null comment '学号',
name varchar(20) not null,
-- 增加唯一键
unique key(number)

)charset utf8;

create table my_unique3(
id int primary key auto_increment,
number char(10) not null,
name varchar(20) not null)charset utf8;

-- 追加唯一键
alter table my_unique3 add unique key(number);

-- 插入数据
insert into my_unique1 values(null,'曾光'),('itcast0001','晁松'),(null,'李帅');
insert into my_unique1 values('itcast0001','周江');

-- 删除唯一键
alter table my_unique3 drop index number;

-- 插入数据
insert into my_class values('PHP0810','B203');
insert into my_class values('PHP0810','B205');
insert into my_class values('PHP0710','B203');

-- 主键冲突: 更新
insert into my_class values('PHP0810','B205')
-- 冲突处理
on duplicate key update
-- 更新教室
room = 'B205';

-- 主键冲突:替换
replace into my_class values('PHP0710','A203');
replace into my_class values('PHP0910','B207');

-- 复制创建表
create table my_copy like my_gbk;

-- 蠕虫复制
insert into my_copy select * from my_collate_bin;
insert into my_copy select * from my_copy;


-- 更新部分a变成c
update my_copy set name = 'c' where name = 'a' limit 3;


-- 删除数据:限制记录数为10
delete from my_copy where name = 'b' limit 10;

-- 清空表: 重置自增长
truncate my_student;

-- select选项
select * from my_copy;
select all * from my_copy;

-- 去重
select distinct * from my_copy;


insert into my_student values(null,'itcast0001','张三','男'),
(null,'itcast0002','李四','男'),
(null,'itcast0003','王五','女'),
(null,'itcast0004','赵六','男'),
(null,'itcast0005','小明','男');

-- 字段别名
select 
id,
number as 学号,
name as 姓名,
sex 性别 from my_student;

-- 多表数据源
select * from my_student,my_class;


-- 子查询
select * from (select * from my_student) as s;

-- 增加age和height字段
alter table my_student add age tinyint unsigned;
alter table my_student add height tinyint unsigned;

-- 增加值: rand取得一个0到1之间的随机数, floor向下取整
update my_student set age=floor(rand() * 20 + 20),height = floor(rand()*20 + 170);

-- 找学生id为1,3,5的学生
select * from my_student where id = 1 || id = 3 || id = 5; -- 逻辑判断
select * from my_student where id in(1,3,5); -- 落在集合中

-- 找身高在180到190之间的学生
select * from my_student where height >= 180 and height <= 190;
select * from my_student where height between 180 and 190;

select * from my_student where height between 190 and 180;

-- 根据性别分组
select * from my_student group by sex;

-- 分组统计: 身高高矮,年龄平均和总年龄
select sex,count(*),max(height),min(height),avg(age),sum(age) from my_student group by sex;
select sex,count(*),count(age),max(height),min(height),avg(age),sum(age) from my_student group by sex;
select sex,count(*),count(age),max(height),min(height),avg(age),sum(age) from my_student group by sex desc;

-- 多字段分组: 先班级,后男女
select c_id,sex,count(*),group_concat(name) from my_student group by c_id,sex; -- 多字段排序


-- 统计
select c_id,count(*) from my_student group by c_id;

-- 回溯统计
select c_id,count(*) from my_student group by c_id with rollup;

-- 多字段分组回溯统计
select c_id,sex,count(*),group_concat(name) from my_student group by c_id,sex; -- 多字段排序
select c_id,sex,count(*),group_concat(name) from my_student group by c_id,sex with rollup;


-- 求出所有班级人数大于等于2的学生人数
select c_id,count(*) from my_student group by c_id having count(*) >= 2;
select c_id,count(*) from my_student where count(*) >= 2 group by c_id ;

select c_id,count(*) as total from my_student group by c_id having total >= 2;
select c_id,count(*) as total from my_student where total >= 2 group by c_id ;

-- 排序
select * from my_student group by c_id;
select * from my_student order by c_id;

-- 多字段排序: 先班级排序,后性别排序
select * from my_student order by c_id, sex desc;

-- 查询学生: 前两个
select * from my_student limit 2;

-- 查询学生: 前两个
select * from my_student limit 0,2; -- 记录数是从0开始编号
select * from my_student limit 2,2;
select * from my_student limit 4,2;

© 著作权归作者所有

共有 人打赏支持
swift_hua
粉丝 0
博文 33
码字总数 20868
作品 0
成都
程序员
JEPLUS之列表字段项配置详解下——JEPLUS软件快速开发平台

JEPLUS之列表字段项配置详解--下 在上篇的文章中我介绍了一些列表字段项配置,在这里我接着上篇中列表配置项中的高级配置项介绍下。 一、效果展示 二、准备工作 1、JEPLUS平台5.0.0.2 2、数据...

JEPLUS
06/14
0
0
Kotlin——中级篇(二): 属性与字段详解

在前面的章节中,详细的为大家讲解到了中对类的、初始化、等内容,但是在一个类中,几乎上是不可能不出现的,这一篇文章就为大家奉上中的定义、使用及高级操作等。如果您目前对中的类没有一个...

Jetictors
07/11
0
0
「mysql优化专题」优化之路高级进阶——表的设计及优化(6)

前一篇详细讲解了索引优化(面试重点),相信大家都有收获,没看过的可以再看看。本篇则讲解表的设计及其优化,喜欢的朋友收藏关注。共同学习。 正文:表的设计及优化 优化①:创建规范化表,...

java进阶架构师
2017/12/04
0
0
CoAP协议学习笔记 2.3 阿里云IoT平台接入 了解下物模型

这篇笔记涉及 阿里云CoAP接入, CoAP协议学习笔记可点此查看。 1 前言 上一篇使用基础版产品进行接入,此种应用,阿里云IoT平台作为一个数据管道。另外阿里云物联网套件中还提供了高级版产品...

iotisan
05/11
0
0
功能表单之树形选择字段类型的高级使用——JEPLUS软件快速开发平台

JEPLUS功能表单之树形选择字段类型的高级使用 JEPLUS功能表单中树形选择字段类型的目标字段在开发过程中还有一些高级配置和高级应用,如果知晓怎么配置也许能解决我们系统开发过程的大问题,...

JEPLUS
06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部