文档章节

三、字段属性和高级操作

swift_hua
 swift_hua
发布于 2017/08/03 15:58
字数 1206
阅读 2
收藏 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
粉丝 1
博文 33
码字总数 20868
作品 0
成都
程序员
私信 提问
JEPLUS之列表字段项配置详解下——JEPLUS软件快速开发平台

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

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

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

Jetictors
07/11
0
0
Python全栈 Web(Django框架、后台管理,ORM关系)

F查询和Q查询: F() 在之执行中获取某字段的值 F("字段名") 将所有人的年龄加10 form django.db.models import F Author.objects.all().update(age=F("age")+10) Q() 在查询条件中可以完成o...

巴黎香榭
10/22
0
0
「mysql优化专题」优化之路高级进阶——表的设计及优化(6)

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

java进阶架构师
2017/12/04
0
0
功能表单之树形选择字段类型的高级使用——JEPLUS软件快速开发平台

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

JEPLUS
06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

不用编写程序代码,送你一个爬虫程序批量采集猫眼电影票房数据

"大数据"是一个体量特别大,数据类别特别大的数据集,并且这样的数据集无法用传统数据库工具对其内容进行抓取、管理和处理。 "大数据"首先是指数据体量(volumes)大,指代大型数据集,一般在1...

技术阿飞
18分钟前
0
0
【Flutter教程】从零构建电商应用(一)

在这个系列中,我们将学习如何使用google的移动开发框架flutter创建一个电商应用。本文是flutter框架系列教程的第一部分,将学习如何安装Flutter开发环境并创建第一个Flutter应用,并学习Flu...

笔阁
40分钟前
5
0
什么是以太坊DAO?(三)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 投票支付合约的所有费用和行动需要时间,并要求用户始终保持活跃,知情和专注。另一...

geek12345
41分钟前
2
0
一个本科学生对Linux的认知

一个本科学生对Linux的认知 我是一名大三的普通一本大学的软件工程的一名学生,学校开设了一些关于系统开发的课程,纸上得来终觉浅,学校的课程课时较短,想要在56个课时之内学会一些公司需要...

linuxCool
今天
3
0
CentOS 安装Tomcat

Tomcat 介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Java 程序写的网站用tomcat+jdk来运...

野雪球
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部