mariadb数据库增删改查
1.常用数据类型
1)整数:int, bit
2)小数:decimal #decimal(5,2)表示共有五位数,保留两位小数
3)字符串:varchar, char
4)日期时间:date, time, datetime
5)枚举类型(enum)
2.约束
1)主键primary key:物理上存储的顺序
2)非空not null:此字段不能为空
3)唯一unique:此字段不允许重复
4)默认default:当不填写此值时会使用默认值,如果填写则已填写为准
5)外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
| 数值类型 | |||
| 类型 | 字节大小 | 有符号范围 | 无符号范围 |
| TINYINT | 1 | -127~127 | 0~255 |
| SMALLINT | 2 | -32768~32767 | 0~65535 |
| MEDIUMINT | 3 | -8388608~8388607 | 0~16777215 |
| INT/INTEGER | 4 | -2147483648~2147483647 | 0~4294967265 |
| BIGINT | 8 | -9223372036854775808~-9223372036854775807 | 0~18446744073709551615 |
| 字符串 | |||
| 类型 | 字节大小 | 示例 | |
| CHAR | 0-255 | char(3)不管输入几个字节都会占3个字节 | |
| VARCHAR | 0-255 | varchar(3)输入比三小的字节会占用实际字节大小 | |
| TEXT | 0-65535 | 大文本 | |
| 日期时间类型 | |||
| DATE | 4 | ‘2020-01-01’ | |
| TIME | 3 | ’12:05:34’ | |
| DATETIME | 8 | ‘2020-01-01 12:05:34’ | |
| YEAR | 1 | ‘2019’ | |
| TIMESTAMP | 4 | ‘1970-01-01 00:00:01’UTC~‘2038-01-01 00:00:01’UTC | |
3.sql语句alter
显示当前时间
select now();
创建classes表(id, name)
create table zzzz(
id int primary key not null auto_increment,
name varchar(20),
age int
);
查看表结构
desc zzzz
1)创建students表(id, name, age, high, gender, cls_id)
create table students (
id int unsigned not null auto_increment primary key,
name varchar(20),
age tinyint unsigned default 0,
high decimal(5,2),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned
);
创建classes表(id, name)
create table classes(
id int unsigned not null auto_increment primary key,
name varchar(20)
);
2)修改表属性
修改表-添加字段
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
修改表-修改字段:不重命名版
alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date;
修改表-修改字段:重命名版
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth date;
3)修改表-删除字段
alter table 表名 drop 列名;
alter table students drop birthday;
4) 删除表
drop table 表名;
drop table students;
4.sql语句增加insert
1)全列插入
insert into 表名 values(..) 主键字段 可以用0 null default 来站位
向students表里插入 一个学生信息
insert into students values (0,'小明',19,188.999,'男', 1);
2)部分插入
insert into students(id, name, age) values (0,'绿帽子',19);
部分插入(多条记录)
insert into students(id, name, age) values (0,'绿帽子',19),(0,'小跳蚤',21);
5.sql语句修改update
update 表名 set 列1=值1, 列2=值2... where 条件;
update students set age=100 where id=1;
update students set age=100,cls_id=77 where id=1;
6.sql语句删除delete与truncate
1)物理删除
delete from 表名 where 条件
delete from students where cls_id=88;
2)逻辑删除
用一条字段来表示 这条信息是否已经不能在使用了
给students表添加一个is_delete字段 bit 类型
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=6;
3)truncate
清空表,连同id字段自增重置为1,重新插入的数据id默认会从1开始,用truncate删除的数据无法恢复
truncate students
7.sql语句查看select
查询基本使用(条件,排序,聚合函数,分组,分页)
1)查询所有列
select * from 表名
select * from students;
一定条件查询(where)
select * from where id=5;
查询制定列
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;
2)条件查询
查询年纪大于18岁的信息
select * from students where age > 18;
18岁到28岁之间(and)
select * from students where age >= 18 and age =< 28; 允许使用&&
select * from students where age between 18 and 28
在18岁以上或者身高180以上的人(or)
select * from students where age > 18 or high > 180; 允许使用||
3)模糊查询like
% 替代1个或者多个甚至是没有
查询姓名中有‘小’的所有名字
select * from students where name like '%小%';
查询两个字人的名字
select * from students where name like '__'; 两个下划线
查询至少有2个字的名字
select * from students where name like '%__%';
4)范围查询
in (1,3,8)表示在一个非连续的范围内
查询年纪为18和34的人
select * from students where age in (18, 34);
查询 年龄在17岁到34岁之间的信息
select * from students where age between 17 and 34;
查询 年纪不在18到34岁的信息
select * from students where age not between 17 and 34;
5)空判断
判断is null
查询身高为空的人的信息
select * from students where high is null;
6)排序order by
asc从小到大排列,即升序
desc从大到小排序,即降序
order by支持多字段
查询年纪在18到34岁之间的男性,按照年纪从小到大
select * from students where gender=1 and age between 18 and 34 order by age;
查询年纪在18到34岁之间的女性,身高从高到矮
select * from students where gender=2 and age between 18 and 34 order by high desc;
查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
select * from students where age between 18 and 34 and gender=1 order by high desc,age,id;
8.聚合函数
1)总数count
查询男性有多少人
select count(*) from students where gender=1;
2)最大值max
查询最大的年纪
select max(age) from students;
查询女性的最高身高
select max(high) from students where gender=2;
3)最小值 min
select min(high) from students;
4)求和sum
计算所有人的年龄总和
select sum(age) from students;
5)平均值avg
计算平均年纪 sum(age)/count(*)
select sum(age)/count(*) from students;
select avg(age),2 from students;
保留2位小数
select round(avg(age),2) from students;
6)分组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=1 group by gender; group_concat()按照拼接后的字符串显示
7)having
查询每个性别平均年纪超过30岁的性别,以及姓名 having avg(age) > 30
select gender, group_concat(name) from students group by gender having avg(age) > 30;
查询每种性别中的人数多于4个的组的信息
select gender,group_concat(name) from students group by gender having count(*)>4;
8)分页limit
显示5页
select * from students limit 5;
分页显示,每页显示2条数据
select * from students limit 0, 2;
按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
select * from students where gender=2 order by high desc limit 0,2;
mariadb数据库增删改查的更多相关文章
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- 2. MongoDB基本操作 —— 用Mongo.exe操作数据库增删改查
一.开篇 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(collection).文档对象 ...
- go——beego的数据库增删改查
一直都不理解使用go语言的时候,为什么还要自己去装beego,以为使用go便可以解决所有的问题,结果在朋友的点拨下,才意识到: go与beego的关系就好比是nodejs与thinkjs的关系,因此也 ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Yii2.0高级框架数据库增删改查的一些操作
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- WindowsPhone8 数据库增删改查
今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出! 1.这就是一个简单wp8数据库增删改查 1.创建数据表Person [Table] public class Person : INo ...
- MVC——数据库增删改查(Razor)——Html语法
一.显示界面 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); public List<Info> ...
- MVC——数据库增删改查(Razor)
一.显示信息 .Models(模板) private MyDBDataContext _context = new MyDBDataContext(); //定义一个变量取出所有数据 public L ...
- MVC——数据库增删改查(aspx)
MVC: V(View) :视图→就是页面的模板 C(Control): 控制器→客户主要面对的就是控制器, M(Model):模板→在模板里面主要就是写关于数据库的各种增删改查的方法 它们之间的关系 ...
随机推荐
- bash配置相关
登录方式 登录方式分为两种方式:
- Springboot 使用Jedis
Springboot 使用Jedis 依赖 <dependency> <groupId>org.springframework.boot</groupId> < ...
- 小程序上传wx.uploadFile - 小程序请假-请求
小程序上传wx.uploadFile UploadTask wx.uploadFile(Object object) 将本地资源上传到服务器.客户端发起一个 HTTPS POST 请求,其中 cont ...
- [LOJ3124][CTS2019|CTSC2019]氪金手游:树形DP+概率DP+容斥原理
分析 首先容易得出这样一个事实,在若干物品中最先被选出的是编号为\(i\)的物品的概率为\(\frac{W_i}{\sum_{j=1}^{cnt}W_j}\). 假设树是一棵外向树,即父亲比儿子先选( ...
- flink⼿手动维护kafka偏移量量
flink对接kafka,官方模式方式是自动维护偏移量 但并没有考虑到flink消费kafka过程中,如果出现进程中断后的事情! 如果此时,进程中段: 1:数据可能丢失 从获取了了数据,但是在执⾏行行 ...
- Unity3D_(游戏)卡牌03_选关界面
启动屏界面.主菜单界面.选关界面.游戏界面 卡牌01_启动屏界面 传送门 卡牌02_主菜单界面 传送门 卡牌03_选关界面 传送门 卡牌04_游戏界面 传送门 选关界面效果 (鼠标放在不同关 ...
- kali修改更新源及更新
进入源文件进行修改 leafpad /etc/apt/sources.list (其实系统本身就自带了更新源,去掉其注释也是可以的,现在官方源的下载速度也还ok,下面的三选一亦可) #kali官方源 ...
- 应对高并发场景的redis加锁技巧
// 获取锁getLock() { // 是否有正在执行的线程 boolean hasLock = false; try { hasLock = redisClient ...
- IDEA基础配置
详细IDEA使用请参考 https://www.w3cschool.cn/intellij_idea_doc/ 下面的内容都是从别人手中收集之后整理的: 全局设置 修改主题 修改字体 修改控制台字体 ...
- C博客作业05--指针 批改总结
1.0如题 1.1 一.评分规则 1.伪代码务必是文字+代码描述,直接反应代码,每题扣1分 2.提交列表没内容,或者太简单,每题得分0分.注意选择提交列表长的题目介绍. 3.代码格式不规范,包括命名随 ...