MariaDB第二章:基本增删改查
MariaDB 数据类型
MariaDB数据类型可以分为数字,日期和时间以及字符串值。
使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的
- 常用的数据类型
- 整数:int, bit
- 小数:decimal #decimal(5,2)
- 字符串:varchar, char
- 日期时间:date, time, datetime
- 枚举类型(enum)
- 约束
- 主键primary key:物理上存储的顺序 #不能为空,不能重复,可连外键,支持索引,一般自增
- 非空not null:此字段不能为空
- 唯一unique:此字段不允许重复
- 默认default:当不填写此值时会使用默认值,如果填写则已填写为准
- 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
引擎 InnoDB与MyISAM
InnoDB:支持事务,支持高并发,安全 #为MariaDB默认引擎
MyISAM:压缩数据,读取性好,速度快
对表命令
创建表
create table zzzz(
id int primary key not null auto_increment,
name varchar(),
age int
);
删除表
drop table name; #慎用
改表名
alter table name rename newname;
查表
--查看所有表
show tables; --查看表结构
desc 表名; --查看表创建
show create table 表名;
对字段命令
添加字段
alter table 表名 add 字段名 字段类型;
删除字段
alter table 表名 drop 字段名;
改字段
alter table 表名 modify 字段名 修改后的类型;
#只能改数据类型 alter table 表名 change 字段名 改后的字段名 改后的类型;
#字段名字与类型都可以改
对表中内容
插入信息
--全部插入
insert into 表名 values (字段 字符类型);
--部分插入
insert into 表名(字段1,字段2,...) values(字段 字符类型);
删除
#物理删除
delete from 表名 where 条件(id=); #逻辑删除(用一条字段来表示,这条信息是否还可用)
alter table 表名 add is_delete bit default ;
update 表名 set is delete= where (条件);
修改
update 表名 set 字段1=新值1,字段2=新值2,...where 条件;
查询
--查询基本使用(条件,排序,聚合函数,分组,分页) --创建学生表
create table students (
id int unsigned not null auto_increment primary key,
name varchar() default '',
age tinyint unsigned default ,
high decimal(,),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned default ,
is_delete bit default
); --创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar() not null
); --往students表里插入数据
insert into students values
(,'小明',,180.00,,,),
(,'小月月',,180.00,,,),
(,'彭于晏',,185.00,,,),
(,'刘德华',,175.00,,,),
(,'黄蓉',,160.00,,,),
(,'凤姐',,150.00,,,),
(,'王祖贤',,170.00,,,),
(,'周杰伦儿',,null,,,),
(,'程坤',,181.00,,,),
(,'和珅',,166.00,,,),
(,'刘亦菲',,162.00,,,),
(,'金星',,180.00,,,),
(,'静香',,170.00,,,),
(,'郭靖',,167.00,,,),
(,'周杰',,178.00,,,),
(,'钱小豪',,178.00,,,),
(,'谢霆锋',,175.00,,,),
(,'陈冠希',,175.00,,,); --查询
-- 查询所有列
--select * from 表名
select * from students; --一定条件查询(where)
select * from where id=; -- 查询指定列
select id,name from students; -- 使用as给字段起别名
select id,name as '姓名', age, high, gender from students; -- 通过表名字段查询
select students.name from students; -- 给表起别名查询
select s.id,s.name,s.age from students as s; --消除重复行
-- distinct
select distinct age from students; --条件查询
--比较运算符
-- 查询年纪大于18岁的信息
select * from students where age > ; --18岁到28岁之间(and)
select * from students where age >= and age =< ;
select * from students where age between and
--在18岁以上或者身高180以上的人(or)
select * from students where age > or high > ; -- 模糊查询
-- like
-- % 替代1个或者多个甚至是没有
-- 查询姓名中有‘小’的所有名字
select * from students where name like '%小%'; -- 查询两个字人的名字
select * from students where name like '__'; -- 查询至少有2个字的名字
select * from students where name like '%__%'; --范围查询
-- in (,,)表示在一个非连续的范围内
-- 查询 年纪为18和34的人
select * from students where age in (, ); --查询 年龄在17岁到34岁之间的信息
select * from students where age between and ; --查询 年纪不在18到34岁的信息
select * from students where age not between and ; -- 空判断
-- 判断is null
-- 查询身高为空的信息
select * from students where high is null; -- 判断非空is not null
select * from students where high is not null; -- 排序
-- order by 字段
-- asc从小到大排列,即升序 默认即asc
-- desc从大到小排序,即降序 -- 查询年纪在18到34岁之间的男性,按照年纪从小到大
select * from students where gender= and age between and order by age; -- 查询年纪在18到34岁之间的女性,身高从高到矮
select * from students where gender= and age between and order by high desc; -- order by 多字段
-- 查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序
select * from students where age between and and gender= order by high desc; -- 查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
select * from students where age between and and gender= order by high desc, age, id desc; --聚合函数
-- 总数
-- count
-- 查询男性有多少人
select count(*) from students where gender=; -- 最大值
-- max
-- 查询最大的年纪
select max(age) from students; -- 查询女性的最高 身高
select max(high) from students where gender=; -- 最小值
-- min
select min(high) from students; -- 求和
-- sum
-- 计算所有人的年龄总和
select sum(age) from students; -- 平均值
-- avg
-- 计算平均年纪
-- 计算平均年纪 sum(age)/count(*)
select sum(age)/count(*) from students;
select avg(age), from students;
-- 保留2位小数
select round(avg(age),) from students; -- 分组
-- group by
-- 按照性别分组,查询所有的性别
select gender from students group by gender; -- 计算每组性别的人数
select gender, count(*) from students group by gender; -- 查询男性组中的姓名 group_concat
select gender,group_concat(name) from students where gender= group by gender; -- having
-- 查询每个性别平均年纪超过30岁的性别,以及姓名 having avg(age) >
select gender, group_concat(name) from students group by gender having avg(age) > ; -- 查询每种性别中的人数多于4个的组的信息
select gender,group_concat(name) from students group by gender having count(*)>;
-- 分页
-- 显示5页
select * from students limit ; -- 分页显示,每页显示2条数据
select * from students limit , ; -- 按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
select * from students where gender= order by high desc limit ,;
关联查询
g--创建学生表
create table students (
id int unsigned not null auto_increment primary key,
name varchar() default '',
age tinyint unsigned default ,
high decimal(,),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned default ,
is_delete bit default
); --创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar() not null
); --往students表里插入数据
insert into students values
(,'小明',,180.00,,,),
(,'小月月',,180.00,,,),
(,'彭于晏',,185.00,,,),
(,'刘德华',,175.00,,,),
(,'黄蓉',,160.00,,,),
(,'凤姐',,150.00,,,),
(,'王祖贤',,170.00,,,),
(,'周杰伦儿',,null,,,),
(,'程坤',,181.00,,,),
(,'和珅',,166.00,,,),
(,'刘亦菲',,162.00,,,),
(,'金星',,180.00,,,),
(,'静香',,170.00,,,),
(,'郭静',,167.00,,,),
(,'周杰',,178.00,,,),
(,'钱小豪',,178.00,,,),
(,'谢霆锋',,175.00,,,); --向classes表里插入数据
insert into classes values (, '云唯_01期'),(, '云唯_02期'); -- 连接查询(内关联)
-- inner join ... on
-- 两个表连接查询
select * from students inner join classes
-- 查询能够对应班级的学生以及班级信息
select * from students inner join classes on students.cls_id=classes.id;
-- 按照要求显示姓名,班级
select students.*, classes.name from students inner join classes on students.cls_id=classes.id; -- 给数据表起名字
select s.name, c.name from students as s inner join classes as c on s.cls_id=c.id; -- 查询 有能够对应班级的学生以及班级信息,显示学生的所有信息,只显示班级名称
select students.*, classes.name from students inner join classes on students.cls_id=classes.id; -- 在以上查询中将班级姓名显示在第一列
select classes.name,students.* from students inner join classes on students.cls_id=classes.id; -- 查询有能够对应班级的学生以及班级信息,按照班级进行排序
select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id; -- 当是同一个班级的时候,按照学生的id从小到大
select classes.id, students.* from students inner join classes on students.cls_id=classes.id order by classes.id, students.id; --连接查询(左关联,右关联)
--左关联,以左边表为基准,条件对应不上的显示null
select * from students left join classes on students.cls_id=classes.id; --右关联,以后边为基准,条件对应不上的显示null
select * from classes left join students on students.cls_id=classes.id; -- 自关联 #只有当表结构相同时,才可以使用自关联
create table areas(
aid int primary key auto_increment,
name varchar(),
pid int
);
-- 查询出河北省所有市
select * from areas as province inner join areas as city on province.aid=city.pid having name='河北省'; select province.name,city.name from areas as province inner join areas as city on province.aid=city.pid having province.name='河北省'; -- 子查询
-- 标量子查询
-- 查询出北京市所有区的信息
select * from areas where pid=(select aid from areas where name='北京市'); select * from areas where pid in (select aid from areas where name='北京市');
MariaDB第二章:基本增删改查的更多相关文章
- mariadb(第二章)增删改 MariaDB 数据类型
MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...
- 第二部分 Mongodb增删改查
学习内容:1.mongodb增加操作2.mongodb删除操作3.mongodb查询操作增删改查的高级应用Capped Collection(固定集合)GridFS 大文件上传或下载 1: inser ...
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- mariadb第二章-增删改
MariaDB 数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的 常用的数据类型 整数:int, bit 小数:de ...
- .NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)
一.引言 上一篇.NET ORM框架HiSql实战-第一章-集成HiSql 已经完成了Hisql的引入,本节就把 项目中的菜单管理改成hisql的方式实现. 菜单管理界面如图: 二.修改增删改查相关代 ...
- 项目二:品优购 第二天 AngularJS使用 brand商品页面的增删改查
品优购电商系统开发 第2章 品牌管理 传智播客.黑马程序员 1.前端框架AngularJS入门 1.1 AngularJS简介 AngularJS 诞生于2009年,由Misko Hevery 等人 ...
- .NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务
连着两天更新叙述性的文章大家可别以为我转行了!哈哈!今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧!这个系列教程拖得太久了,所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层 ...
- Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查
本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...
- mysql基础之mariadb对表中数据的增删改查
复习: 查看表:show tables; 创建表:create table 表名(字符类型); 删除表:drop table 表名; 对表的结构进行增删改查: 查看表结构:desc 表名; 修改表-添 ...
- Python笔记·第五章—— 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
随机推荐
- eclipse创建的maven项目,pom.xml文件报错解决方法
[错误一:]maven 编译级别过低 [解决办法:] 使用 maven-compiler-plugin 将 maven 编译级别改为 jdk1.6 以上: <!-- java编译插件 --> ...
- 杭电ACM2007--平方和与立方和
平方和与立方和 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- 【EF】CodeFirst Fluent API使用记录
我们在使用EF CodeFirst 模式生成数据库的时候进行表的代码映射关系可以采用注解模式和Fluent API模式.这里就是记录一下使用Fluent API进行表关系映射的方法. 注解模式: 回顾 ...
- MySQL查询执行的基础——查询优化处理
查询的生命周期的下一步是将一个SQL转换成一个可执行计划,MySQL再按照这个计划和存储引擎进行交互 语法解析器和预处理 首先,MySQL通过关键词将SQL语句进行解析,并生成一颗对应的"解 ...
- 为什么选择 Intellij IDEA 作为日常开发工具
作为一个从事 Java 开发的程序员,每天离不开编辑器的帮助.还记得刚开始学习 Java 编程的时候,使用 Eclipse 作为日常开发工具.后来工作以后,需要使用 Intellij IDEA,刚开始 ...
- 前端入门11-JavaScript语法之数组
声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...
- js获取地址栏传参
地址:http://127.0.0.1:8082/prosperleedir/index.html?id=6666&name=prosper#prosper Location{ ...
- Bootstrap中内联单选按钮
<div class="form-group"> <label class="control-label">性别:</label& ...
- #WEB安全基础 : HTML/CSS | 0x10实现交互_表单
先看看表单如何工作吧 请求 响应 简要工作流程: 浏览器加载页面 用户输入数据 用户提交表单 服务器响应 概念都清楚了,我们来写表单吧 只有一个html文件 这是显示 你可以向空白框框 ...
- 从Linux上传到Git过程
1.1 实验内容 本次课程讲的是在实验楼的在线环境中,如何使用 Github 去管理在在线环境中使用的代码.配置.资源等实验相关文件,怎样去添加.同步和下拉在远程仓库中的实验文件,以此来维持自身的实验 ...