MariaDB 数据类型
MariaDB数据类型可以分为数字,日期和时间以及字符串值。
使用数据类型的原则:够用就行,尽量使用范围小的,而不用大的

常用的数据类型

  1. 整数:int, (bit比整数还要小的整数,即二进制)
  2. 小数:decimal                                                                          --decimal(5,2) 保留5位数字,小数点后两位
  3. 字符串:varchar(2)最大占位2字符        Char(2)占位2字符      --括号内的2是限制        
  4. 日期时间:date, time, datetime
  5. 枚举类型(enum)                                                                           --(例:‘男’‘女’)即只能选择
约束
  1. 主键primary key:物理上存储的顺序,不能重复
  2. 非空not null:此字段不能为空
  3. 唯一unique:此字段不允许重复
  4. 默认default:当不填写此值时会使用默认值,如果填写则已填写为准
  5. 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
查看日期,必须用相应格式
 
select now();                                                                    --显示当前时间
select database();                                                            --显示当前数据库
create database test1 charset utf8;                                 --创建一个支持中文的数据库tset1
create table xxxx(id int, name varchar(20));                    --创建xxxx表 (字段的名是id,id的类型是int,数据名name,字符串varchar)
 
create table yyyy(id int primary key not null auto_increment, name varchar(30));     --若命令太长也可以(如下)分行写
create table zzzz(                                     
id int primary key not null auto_increment,                    --自增
name varchar(20)
);
insert into yyyy values (1,'张三');                                      --在yyyy表中添加张三
select * from yyyy;                                                            --查看yyyy表信息
desc xxxx;                                                                        --查看表结构
show tables;                                                                       --查看当前数据库的所有表
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
);                                                                                         --创建students表 
insert into students values(0,'金星',18, 188.88, '中性', 0);   --插入一条信息进入到students表
create table classes(
id int unsigned not null auto_increment primary key,
name varchar(20)
);                                                                                         --创建classes表(id, name)
 
show create table students;                                            --查看表的创建
 
--修改表-添加字段
alter table students add birthday datetime;                       --alter table 表名 add 列名 类型;(即:添加个字段)
-- 修改表-修改字段:不重命名版                  
alter table students modify birthday date;                         -- alter table 表名 modify 列名 类型及约束;(即:修改个字段)
-- 修改表-修改字段:重命名版
alter table students change birthday birth date default '2000-01-01';    -- alter table 表名 change 原名 新名 类型及约束;
 -- 修改表-删除字段
alter table students drop xxx;                                              --删除students表中的xxx字段
-- 删除表
-- drop table xxxx;                                                               --删除xxxx表
 
--MyISAM与InnoDB区别(两种引擎)
--两种类型最主要的区别就是InnDB支持事物处理与外键和行级锁
 
--增删改查
 --增加
 --全列插入
        --insert into 表名 values(..)
        --主键字段 可以用0 null default 来站位
        insert into classes values (0, '大神班');
 
        -- 向students表里插入 一个学生信息
        insert into students values (0, '鹿鼎记', 20, '女', 1, '1990-01-01')
        insert into students values (null, '鹿鼎记', 20, '女', 1, '1990-01-01')
        insert into students values (default, '鹿鼎记', 20, '女', 1, '1990-01-01')
        insert into students values (default, '鹿鼎记', 20, '1', 1, '1990-01-01')
        insert into students values (default, '鹿鼎记', 20, '2', 1, '1990-01-01')
        insert into students values (default, '鹿鼎记', 20, '3', 1, '1990-01-01')
        insert into students values (default, '鹿鼎记', 20, '4', 1, '1990-01-01')
        --失败insert into students values (default, '鹿鼎记', 20, '第四性别', 1, '1990-01-01')
 --部分插入
         insert into students(name, gender) values ('小乔', 2);
 --部分插入多条记录
        insert into students(name, gender) values ('大乔', 2),('貂蝉', 2);
 
--修改表内信息
--update 表名 set 列1=值1, 列2=值2... where 条件;
update stadents set age=15 where id=14;                         --修改大乔年纪
--删除表内信息
--物理删除(从硬盘里删除数据)
-- delete from 表名 where 条件
 delete from students;                                                        --删除students表内所有数据
delete from students where id=15                                    --删除students表内id为15的所有数据
 
--逻辑删除
 
-- 用一条字段来表示 这条信息是否已经不能在使用了
-- 给students表添加一个is_delete字段 bit 类型
-- alter table students add is_delete bit default 0;
-- update students set is_delete=1 where id=6;
alter table students add is_delete bit default 0;                --添加一个字段is_dalete设为bit类型,默认是0,但是不显示,并不会影响使用
 
--查询基本使用(条件,排序,聚合函数,分组,分页)
 
查询  练习准备
1、--创建学生表
create table students (
id int unsigned not null auto_increment primary key,
name varchar(20) default '',
age tinyint unsigned default 0,
high decimal(5,2),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
 
2、--创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(20) not null
);
3、--往students表里插入数据
insert into students values
(0,'小明',18,180.00,2,1,0),
(0,'小月月',19,180.00,2,2,0),
(0,'彭于晏',28,185.00,1,1,0),
(0,'刘德华',58,175.00,1,2,0),
(0,'黄蓉',108,160.00,2,1,0),
(0,'凤姐',44,150.00,4,2,1),
(0,'王祖贤',52,170.00,2,1,1),
(0,'周杰伦儿',34,null,1,1,0),
(0,'程坤',44,181.00,1,2,0),
(0,'和珅',55,166.00,2,2,0),
(0,'刘亦菲',29,162.00,3,3,0),
(0,'金星',45,180.00,2,4,0),
(0,'静香',18,170.00,1,4,0),
(0,'郭静',22,167.00,2,5,0),
(0,'周杰',33,178.00,1,1,0);
 
--向classes表里插入数据
insert into classes values (0, 'python_01期'),(0, 'python_02期');
 
-- 查询所有列
--select * from 表名
select * from students;                                                --查询students表中的所有字段
select * from classes;
 
--一定条件查询
select * from students where name='小李飞刀';          --查找name是小李飞刀的
select * from students where id>3;                             --查找id>3的
 
-- 查询制定 列
select name, gender from students;                            --查询 name 和 gender 这两列
 
-- 可以使用as制定列或表制定别名;
select name as 姓名, gender as 性别 from students;    --查询 name 和 gender 两列,并定义别名 为姓名和性别
select id as 序号, gender as 性别, name as 姓名 from students;
 
-- 通过表名字查询
select students.name, students.age from students;             --查询 name 和 age 这两列
 
-- 给表起别名查询
select s.name, s.age from students as s;                               --将 name,age,定义别名为 s,查看 s
 
--消除重复行
-- distinct
select distinct gender from students;                                   --查看gender列,并删除重复的
 
--条件查询
--比较运算符
select * from students where age > 18;                                -- 查询年纪大于18岁的信息
select id, name, gender from students where age > 18;      --查询年纪大于18岁的信息,显示id,nsme,gender三列
select * from students where age>18 and age<28;             --18岁到28岁之间(and)
select * from students where age>18 or high>=180;          --在18岁以上或者身高180以上的人(or)
 
-- 模糊查询
-- like
-- % 替代1个或者多个甚至是没有
select * from students where name like '小%';                      --查找name是‘小......’的信息
 
-- 查询姓名中有‘小’的所有名字
select * from students where name like '%小%';                   --查找name是‘ ...小...’的信息
 
 
-- 查询有两个字的名字
select * from students where name like '__';                         --查找name是两个字符的信息(“_”代表一个字符)
 
select * from students where name like '__%';                      -- 查询至少有2个字符的信息
 
-- rlike 正则
--  (.*贪婪匹配,.*?非贪婪匹配)
select * from students where name rlike '^周.*';                  --查找以“周“为开头的信息
select * from students where name rlike '^周.*儿$';             --查找以”周“为开头,”儿“为结尾的信息
 
--范围查询
-- in (1,3,8)表示在一个非连续的范围内                                    
select * from students where age=18 or age=34;                -- 查询 年纪为18,34的人
 
select * from students where age=18 or age=34 or age=12;
select * from students where age in (12,18,34);                   --查询年纪为12,18,34的人
 
select * from students where age between 18 and 34;        --查询 年龄在17岁到34岁之间的信息
 
select * from students where age not between 18 and 34;  --查询 年纪不在18到34岁的信息
 
-- 空判断
-- 判断is null
select * from students where high is null;                              --查找high是null(空)的信息
 
-- 判断非空is not null
select * from students where high is not null;                       --查找high不是null(空)的信息
 
排序    
--order by 字段
--asc从小到大排列,即升序
--desc从大到小排序,即降序
        
--查询年纪在18到34岁之间的男性,按照年纪从小到大
select * from students where age between 18 and 34 and gender=1;
select * from students where age between 18 and 34 and gender=1 order by age;
select * from students where age between 18 and 34 and gender=1 order by age asc;
select * from students where age between 18 and 34 and gender=1 order by age desc;
        --查询 students 表中的 age 18 到 34 的 枚举的第一个元素
        --查询 students 表中的 age 18 到 34 的 枚举的第一个元素,并且以age字段 进行默认排序
        --查询 students 表中的 age 18 到 34 的 枚举的第一个元素,并且以age字段 进行 asc 方式排序
        --查询 students 表中的 age 18 到 34 的 枚举的第一个元素,并且以age字段 进行 dasc 方式排序
select * from students where (age between 18 and 34) and gender=2 order by high desc;
        --查询年纪在18到34岁之间的女性,身高从高到矮排序
 
--order by 多字段
select * from students where (age between 18 and 34) and gender=2 order by high desc, age desc;
        --查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从大到小排序
select * from students where (age between 18 and 34) order by high desc, age,id;
        --查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从大到小排序,如果年龄也相等那么按照id从大到小排序;
select * from students order by age asc, high desc;
        --按照年纪从小到大、身高从高到矮的排序
--聚合函数
-- 总数
-- count(*)统计行数据数 
-- 查询男性有多少人
select * from students where gender=1;                                --查询students表 中 gender枚举 的第一个元素
select count(*) from students where gender=1;                    --查询students表 中 gender枚举 是第一个元素的数量
select count(*) as '男性' from students where gender=1;      --查询students表 中 gender枚举 是第一个元素的数量 并定义别名 男性
    
-- 最大值
-- max
select age from students;                                                        -- 查询年纪列
select max(age) from students;                                               -- 查询最大的年纪
select gender,max(high) from students where gender=2;     -- 查询女性的最高 身高
    
-- 最小值
-- min
select min(age) from students;                                               -- 查询最小的年纪
    
-- 求和
-- sum
select sum(age) from students;                                               -- 计算所有人的年龄总和
    
-- 平均值
-- avg
select avg(age) from students;                                               -- 计算平均年纪
    
-- 计算平均年纪 sum(age)/count(*)
select sum(age)/count(*) from students;
 
-- 保留2位小数
select round(avg(age), 2) from students;
    
-- 分组
-- group by(先分组在查询)
select gender from students group by gender;                    -- 按照性别分组,查询所有的性别
    
select gender, count(*) from students group by gender;     -- 计算每组性别的人数
    
select gender, count(*) from students where gender=1 group by gender;    -- 计算男性人数
    
--把查出来的内容拼接成一个字符串concat
select concat(id,name,age) from students;                        --查询id,name,age并拼成一个字符串
select concat(id,' ',name,' ',age) from students;                 --查询id,name,age 拼成一个字符串 并 用空格分开
   
-- 查询男性组中的姓名 group_concat
select gender, group_concat(name) from students where gender=1 group by gender;
select gender, group_concat(name,age) from students where gender=1 group by gender;
select gender, group_concat(name,age,id) from students where gender=1 group by gender;
select gender, group_concat(name,age," ",id) from students where gender=1 group by gender;
        --按照性别分组,并显示name枚举的第一个元素组内name的信息
        --按照性别分组,并显示name枚举的第一个元素组内name,age的信息
        --按照性别分组,并显示name枚举的第一个元素组内name,age,id的信息
        --按照性别分组,并显示name枚举的第一个元素组内name,age,id的信息,并用空格分开 age 与 id
-- having        (where必须放在group by前边   having 放后边)
select gender, group_concat(name), avg(age) from students group by gender having avg(age)>30;
        -- 查询平均年纪超过30岁的性别,以及姓名 having avg(avg) > 30
--失败案例:
select gender, group_concat(name), avg(age) from students where avg(age)>30 group by gender;
    
select gender, group_concat(name) from students group by gender having count(*)>4;
        -- 查询每种性别中的人数多于4个组的信息
 
-- 分页
-- 显示5页
select * from students limit 2;                                           -- 分页显示,每页显示2条数据 
 
select * from students limit 0, 2;                                       -- 分页显示,从第0条后开始显示2条数据
 
select * from students where gender=2 order by high desc limit 0, 2;
        -- 按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
 
常用的增删改查基本是这些,还是要多练多敲才会加深印象,加油吧!

mariadb-增删改查怎么用的更多相关文章

  1. mariadb增删改查

    数据库用户的操作 登录前需先启动3306端口. 首次启动需初始化数据库 mysql_secure_installation 增/改: 创建用户及赋予用户指定权限 grant 权限(分为create[创 ...

  2. mysql基础之mariadb对表中数据的增删改查

    复习: 查看表:show tables; 创建表:create table 表名(字符类型); 删除表:drop table 表名; 对表的结构进行增删改查: 查看表结构:desc 表名; 修改表-添 ...

  3. mysql之数据库的介绍和基本的增删改查

    一 学前知识 什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息. 什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器.一般还要有一个备份的负载均 ...

  4. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...

  5. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  6. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

    系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...

  8. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  9. Hibernate全套增删改查+分页

    1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...

  10. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

随机推荐

  1. luoguP1390 公约数的和 数学推导_双倍经验

    Code: #include <bits/stdc++.h> #include <tr1/unordered_map> #define setIO(s) freopen(s&q ...

  2. 51nod 237 最大公约数之和 V3 杜教筛

    Code: #include <bits/stdc++.h> #include <tr1/unordered_map> #define setIO(s) freopen(s&q ...

  3. UVALive-8078 Bracket Sequence 简单dp

    题目链接:https://cn.vjudge.net/problem/UVALive-8078 题意 括号序列T是这样定义的: T是个空的 T是(T), {T}, 或者 [T] T是两个T组成的,比如 ...

  4. rsync实时同步mysql数据库

    1.主机slave 注:没有包的可以去下载 yum -y install gcc gcc-c++ 上传包 rsync-3.1.3.tar.gz 使用tar命令解压 使用gcc gcc-c++编译 ./ ...

  5. Javascript的jsonp原理

    Javascript的jsonp原理   首先JSON是一种基于文本的数据交换方式,或者叫做数据描述格式 当一个网页在请求JavaScript文件时则不受是否跨域的影响,凡是拥有”src”这个属性的标 ...

  6. react中的跨域问题

    react中的跨域问题

  7. List<T>与List<?>的区别

    T 代表某一类型 ? 代表任意类型.. T因为代表是某一确定类型..所以你可以使用它..比如你有个List<T>类型的变量tList 你可以用T t = tList.get(1);也可以用 ...

  8. Android自己定义百度地图缩放图标

    自己定义实现Android百度地图的缩放图标,须要自己定义一个缩放控件,实现效果例如以下: 这里的缩放效果,实现了点击button能够对地图的放大缩小,通过手势放大与缩小也控制缩放图标的可用状态.详细 ...

  9. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制

    在之前的博客中我们已经将项目中用到的算法表述完成,包含人脸检測算法以及四种性别识别算法,在这篇博客中我们将着手搭建主要的MFC框架. 一.框架概况 在这篇博文中我们将搭建最主要的MFC框架.绘制MFC ...

  10. atitit。企业组织与软件project的策略 战略 趋势 原则 attilax 大总结

    atitit. 企业组织与软件project的策略 战略 趋势 原则 attilax 大总结 1. 战略规划,适当的过度设计 1 2. 跨平台化 1 3. 可扩展性高于一切 1 4. 界面html5化 ...