MariaDB数据--查

SQl语句执行顺序


基础查询

查询

  • 添加数据
MariaDB [test]> insert into huluwa values
-> (1 ,'葫芦爷爷',73,1.75,'boy','yes'),
-> (2,'大娃',7,1.72,'boy','yes'),
-> (3,'二娃',6,1.63,'girl','yes');
Query OK, 3 rows affected (0.026 sec)
Records: 3 Duplicates: 0 Warnings: 0 MariaDB [test]> insert into huluwa(id,name,age,lost) values
-> (4,'三娃',5,'no'),
-> (5,'四娃',4,'no');
Query OK, 2 rows affected (0.004 sec)
Records: 2 Duplicates: 0 Warnings: 0 MariaDB [test]> insert into huluwa values
-> (6,'五娃',3,1.38,'boy','no'),
-> (7,'六娃',2,1.82,'boy','no'),
-> (8,'七娃',3,1.83,'girl','no');
Query OK, 3 rows affected (0.385 sec)
Records: 3 Duplicates: 0 Warnings: 0
  • 查询所有数据; 耗内存 (葫芦娃数据)
MariaDB [test1]> -- select * from 表名
MariaDB [test1]> select * from huluwa;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 4 | 三娃 | 5 | NULL | unknow | no |
| 5 | 四娃 | 4 | NULL | unknow | no |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
| 8 | 七娃 | 3 | 1.83 | girl | no |
+----+--------------+------+------+--------+------+
  • 一定条件查询(查看丢了的葫芦娃)
MariaDB [test1]> select * from huluwa  where lost='yes';
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
+----+--------------+------+------+--------+------+
  • 给字段起别名--as
MariaDB [test1]> select gender as '性别',lost as '丢了没?',name from huluwa;
+--------+--------------+--------------+
| 性别 | 丢了没? | name |
+--------+--------------+--------------+
| boy | yes | 葫芦爷爷 |
| boy | yes | 大娃 |
| girl | yes | 二娃 |
| unknow | no | 三娃 |
| unknow | no | 四娃 |
| boy | no | 五娃 |
| boy | no | 六娃 |
| girl | no | 七娃 |
+--------+--------------+--------------+
  • 通过表名字查询
MariaDB [test1]> select huluwa.name from huluwa;
+--------------+
| name |
+--------------+
| 葫芦爷爷 |
| 大娃 |
| 二娃 |
| 三娃 |
| 四娃 |
| 五娃 |
| 六娃 |
| 七娃 |
+--------------+
  • 消除重复行 distinct
MariaDB [test1]> select distinct age from huluwa;
+------+
| age |
+------+
| 73 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 2 |
+------+
  • 条件查询---between
MariaDB [test1]> select * from huluwa where age between 3 and 6;
+----+--------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------+------+------+--------+------+
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 4 | 三娃 | 5 | NULL | unknow | no |
| 5 | 四娃 | 4 | NULL | unknow | no |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 8 | 七娃 | 3 | 1.83 | girl | no |
+----+--------+------+------+--------+------+
  • 条件查询---not : 取反
MariaDB [test1]> select * from huluwa where age not between 3 and 6;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 7 | 六娃 | 2 | 1.82 | boy | no |
+----+--------------+------+------+--------+------+
MariaDB [test1]> select * from huluwa where not (age > 3 and age < 6);
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
| 8 | 七娃 | 3 | 1.83 | girl | no |
+----+--------------+------+------+--------+------+
  • 条件查询---and, or
MariaDB [test1]> select name,gender,lost as '丢了没?' from huluwa where age > 3 and lost='no';
+--------+--------+--------------+
| name | gender | 丢了没? |
+--------+--------+--------------+
| 三娃 | unknow | no |
| 四娃 | unknow | no |
+--------+--------+--------------+
MariaDB [test1]> select name,gender,lost as '丢了没?' from huluwa where age > 3 or lost='no';
+--------------+--------+--------------+
| name | gender | 丢了没? |
+--------------+--------+--------------+
| 葫芦爷爷 | boy | yes |
| 大娃 | boy | yes |
| 二娃 | girl | yes |
| 三娃 | unknow | no |
| 四娃 | unknow | no |
| 五娃 | boy | no |
| 六娃 | boy | no |
| 七娃 | girl | no |
+--------------+--------+--------------+

模糊查询

like

% 代替一个或多个字符

_ 下划线代替一个字符

MariaDB [test1]> select * from huluwa where name like '%大%';
+----+--------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------+------+------+--------+------+
| 2 | 大娃 | 7 | 1.72 | boy | yes |
+----+--------+------+------+--------+------+
MariaDB [test1]> select * from huluwa where name like '____';
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
+----+--------------+------+------+--------+------+
  • 判断是否为空 --- is null
MariaDB [test1]> select * from huluwa where high is null;
+----+--------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------+------+------+--------+------+
| 4 | 三娃 | 5 | NULL | unknow | no |
| 5 | 四娃 | 4 | NULL | unknow | no |
+----+--------+------+------+--------+------+
  • 判断是否为空 --- is not null
MariaDB [test1]> select * from huluwa where high is not null;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
| 8 | 七娃 | 3 | 1.83 | girl | no |
+----+--------------+------+------+--------+------+

排序

-- order by 字段

-- asc 升序

-- desc 降序

  • 身高降序排序
MariaDB [test1]> select * from huluwa order by high desc;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 8 | 七娃 | 3 | 1.83 | girl | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 4 | 三娃 | 5 | NULL | unknow | no |
| 5 | 四娃 | 4 | NULL | unknow | no |
+----+--------------+------+------+--------+------+
  • 男孩身高排序
MariaDB [test1]> select * from huluwa where gender='boy' order by high ;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 7 | 六娃 | 2 | 1.82 | boy | no |
+----+--------------+------+------+--------+------+
  • 按年龄降序,年龄相同按身高降序;
MariaDB [test1]> select * from huluwa order by age desc ,high desc ;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 3 | 二娃 | 6 | 1.63 | girl | yes |
| 4 | 三娃 | 5 | NULL | unknow | no |
| 5 | 四娃 | 4 | NULL | unknow | no |
| 8 | 七娃 | 3 | 1.83 | girl | no |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
+----+--------------+------+------+--------+------+
  • 数字类型的列可以进行四则运算,无法转换为整数的以0计算
select *,age*1.5 from huluwa ;
  • 也支持ifnull语句
select *,age+ifnull(high,1) from huluwa ;

聚合函数

-- 总数

-- count

-- 查询男孩多少

MariaDB [test1]> select count(*) as '男娃总人数' from huluwa where gender='boy';
+-----------------+
| 男娃总人数 |
+-----------------+
| 4 |
+-----------------+

-- 最大值

-- max

-- 最高身高

MariaDB [test1]> select max(high) as '最高男孩' from huluwa where gender='boy';
+--------------+
| 最高男孩 |
+--------------+
| 1.82 |
+--------------+

-- 求和 sum

-- 计算身高总和

MariaDB [test1]> select sum(high) from huluwa;
+-----------+
| sum(high) |
+-----------+
| 10.13 |
+-----------+

-- 平均值 avg

-- 计算平均身高 (round 保留两位小数)

MariaDB [test1]> select round(avg(high),2) from huluwa;
+--------------------+
| round(avg(high),2) |
+--------------------+
| 1.69 |
+--------------------+

分组: group by

  • 按性别分组
MariaDB [test1]> select gender from huluwa group by gender;
+--------+
| gender |
+--------+
| boy |
| girl |
| unknow |
+--------+
  • 每组性别人数
MariaDB [test1]> select gender ,count(*) as '人数' from huluwa group by gender;
+--------+--------+
| gender | 人数 |
+--------+--------+
| boy | 4 |
| girl | 2 |
| unknow | 2 |
+--------+--------+
  • 组人数超过三人的组的组员人名(group_concat , having)
MariaDB [test1]> select gender,group_concat(name) from huluwa group by gender having count(*) > 3;
+--------+-----------------------------------+
| gender | group_concat(name) |
+--------+-----------------------------------+
| boy | 葫芦爷爷,大娃,五娃,六娃 |
+--------+-----------------------------------+

分段查询

示例1:查询第四行后面的两行(即:第五行和第六行)信息

MariaDB [test1]> select * from huluwa limit 4,2;
+----+--------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------+------+------+--------+------+
| 5 | 四娃 | 4 | NULL | unknow | no |
| 6 | 五娃 | 3 | 1.38 | boy | no |
+----+--------+------+------+--------+------+

示例2:

MariaDB [test1]> select * from huluwa where gender=1 limit 2,2;
+----+--------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------+------+------+--------+------+
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
+----+--------+------+------+--------+------+ MariaDB [test1]> select * from huluwa where gender=1;
+----+--------------+------+------+--------+------+
| id | name | age | high | gender | lost |
+----+--------------+------+------+--------+------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | yes |
| 2 | 大娃 | 7 | 1.72 | boy | yes |
| 6 | 五娃 | 3 | 1.38 | boy | no |
| 7 | 六娃 | 2 | 1.82 | boy | no |
+----+--------------+------+------+--------+------+
4 rows in set (0.000 sec)

连接查询

  • 自关联查询
MariaDB [test1]> select * from heros;
+-----+--------------+------+
| aid | name | pid |
+-----+--------------+------+
| 1 | 动画片 | NULL |
| 2 | 纪录片 | NULL |
| 3 | 武侠片 | NULL |
| 4 | 葫芦娃 | 1 |
| 5 | 小虎还乡 | 1 |
| 6 | 天龙八部 | 3 |
+-----+--------------+------+
  • 自关联查询--内关联:inner join ... on
MariaDB [test1]> select * from heros as movie inner join heros as human on movie.aid=human.pid;
+-----+-----------+------+-----+--------------+------+
| aid | name | pid | aid | name | pid |
+-----+-----------+------+-----+--------------+------+
| 1 | 动画片 | NULL | 4 | 葫芦娃 | 1 |
| 1 | 动画片 | NULL | 5 | 小虎还乡 | 1 |
| 3 | 武侠片 | NULL | 6 | 天龙八部 | 3 |
+-----+-----------+------+-----+--------------+------+
  • 自关联+按需筛选---having

注意:指定是哪个别名表的字段

MariaDB [test1]> select * from heros as movie inner join heros as human on movie.aid=human.pid having movie.name='动画片';
+-----+-----------+------+-----+--------------+------+
| aid | name | pid | aid | name | pid |
+-----+-----------+------+-----+--------------+------+
| 1 | 动画片 | NULL | 4 | 葫芦娃 | 1 |
| 1 | 动画片 | NULL | 5 | 小虎还乡 | 1 |
+-----+-----------+------+-----+--------------+------+

葫芦爷爷开了个学校教葫芦娃知识;

## 创建一个学校表(创建表)

MariaDB [test1]> create table school(id int unsigned auto_increment primary key,name varchar(20),cla_id int unsigned);
Query OK, 0 rows affected (0.009 sec) ## 开了三个班(插入表数据) MariaDB [test1]> insert into school values(0,'葫芦一班',1),(0,'葫芦二班',2),(0,'葫芦三班',3);
Query OK, 3 rows affected (0.002 sec)
Records: 3 Duplicates: 0 Warnings: 0 ## 查询下班级信息 MariaDB [test1]> select * from school;
+----+--------------+--------+
| id | name | cla_id |
+----+--------------+--------+
| 1 | 葫芦一班 | 1 |
| 2 | 葫芦二班 | 2 |
| 3 | 葫芦三班 | 3 |
+----+--------------+--------+
## 查询葫芦娃信息

MariaDB [test1]> select * from huluwa;
+----+--------------+------+------+--------+
| id | name | age | high | gender |
+----+--------------+------+------+--------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy |
| 2 | 大娃 | 7 | 1.72 | boy |
| 3 | 二娃 | 6 | 1.63 | girl |
| 4 | 三娃 | 5 | NULL | unknow |
| 5 | 四娃 | 4 | NULL | unknow |
| 6 | 五娃 | 3 | 1.38 | boy |
| 7 | 六娃 | 2 | 1.82 | boy |
| 8 | 七娃 | 3 | 1.83 | girl |
+----+--------------+------+------+--------+ ## 给葫芦哇添加班级列(修改表结构--添加列) MariaDB [test1]> alter table huluwa add cla_id int;
Query OK, 0 rows affected (0.003 sec)
Records: 0 Duplicates: 0 Warnings: 0 ## 给葫芦娃分配班级(更新表数据) MariaDB [test1]> update huluwa set cla_id=1 where name='大娃';
Query OK, 1 row affected (0.002 sec)
Rows matched: 1 Changed: 1 Warnings: 0
...
... ##查看
MariaDB [test1]> select * from huluwa;
+----+--------------+------+------+--------+--------+
| id | name | age | high | gender | cla_id |
+----+--------------+------+------+--------+--------+
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | NULL |
| 2 | 大娃 | 7 | 1.72 | boy | 1 |
| 3 | 二娃 | 6 | 1.63 | girl | 2 |
| 4 | 三娃 | 5 | NULL | unknow | 3 |
| 5 | 四娃 | 4 | NULL | unknow | 4 |
| 6 | 五娃 | 3 | 1.38 | boy | 1 |
| 7 | 六娃 | 2 | 1.82 | boy | 2 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 |
+----+--------------+------+------+--------+--------+
  • 两表关联查询(内关联)
MariaDB [test1]> select * from huluwa inner join school on school.cla_id=huluwa.cla_id;
+----+--------+------+------+--------+--------+----+--------------+--------+
| id | name | age | high | gender | cla_id | id | name | cla_id |
+----+--------+------+------+--------+--------+----+--------------+--------+
| 2 | 大娃 | 7 | 1.72 | boy | 1 | 1 | 葫芦一班 | 1 |
| 3 | 二娃 | 6 | 1.63 | girl | 2 | 2 | 葫芦二班 | 2 |
| 4 | 三娃 | 5 | NULL | unknow | 3 | 3 | 葫芦三班 | 3 |
| 6 | 五娃 | 3 | 1.38 | boy | 1 | 1 | 葫芦一班 | 1 |
| 7 | 六娃 | 2 | 1.82 | boy | 2 | 2 | 葫芦二班 | 2 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 | 3 | 葫芦三班 | 3 |
+----+--------+------+------+--------+--------+----+--------------+--------+
  • 两表关联查询(左关联)
MariaDB [test1]> select * from huluwa left join school on school.cla_id=huluwa.cla_id;
+----+--------------+------+------+--------+--------+------+--------------+--------+
| id | name | age | high | gender | cla_id | id | name | cla_id |
+----+--------------+------+------+--------+--------+------+--------------+--------+
| 2 | 大娃 | 7 | 1.72 | boy | 1 | 1 | 葫芦一班 | 1 |
| 6 | 五娃 | 3 | 1.38 | boy | 1 | 1 | 葫芦一班 | 1 |
| 3 | 二娃 | 6 | 1.63 | girl | 2 | 2 | 葫芦二班 | 2 |
| 7 | 六娃 | 2 | 1.82 | boy | 2 | 2 | 葫芦二班 | 2 |
| 4 | 三娃 | 5 | NULL | unknow | 3 | 3 | 葫芦三班 | 3 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 | 3 | 葫芦三班 | 3 |
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | NULL | NULL | NULL | NULL |
| 5 | 四娃 | 4 | NULL | unknow | 4 | NULL | NULL | NULL |
+----+--------------+------+------+--------+--------+------+--------------+--------+
  • 左关联和右关联的区别

    left join (左联接) 返回包括左表中的所有记录和右表中关联字段相等的记录

    right join (右联接) 返回包括右表中的所有记录和左表中关联字段相等的记录

    inner join (内关联) 只返回两个表中关联字段相等的行

多表关联

select * from
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=1) 1y
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=2) 2y
on 1y.name=2y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=3) 3y
on 1y.name=3y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=4) 4y
on 1y.name=4y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=5) 5y
on 1y.name=5y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=6) 6y
on 1y.name=6y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=7) 7y
on 1y.name=7y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=8) 8y
on 1y.name=8y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=9) 9y
on 1y.name=9y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=10) 10y
on 1y.name=10y.name
left join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=11) 11y
on 1y.name=11y.name
right join
(select t_area.name, t_account.money from t_account left join t_area on t_account.areaid=t_area.id where month=12) 12y
on 1y.name=12y.name
;
  • 按需查询(需求列之间加 , )
MariaDB [test1]> select huluwa.name as '姓名', school.name as '班级' from huluwa left join school on school.cla_id=huluwa.cla_id;
+--------------+--------------+
| 姓名 | 班级 |
+--------------+--------------+
| 大娃 | 葫芦一班 |
| 五娃 | 葫芦一班 |
| 二娃 | 葫芦二班 |
| 六娃 | 葫芦二班 |
| 三娃 | 葫芦三班 |
| 七娃 | 葫芦三班 |
| 葫芦爷爷 | NULL |
| 四娃 | NULL |
+--------------+--------------+
  • 查询并按葫芦娃年龄排序:order by
MariaDB [test1]> select * from huluwa left join school on school.cla_id=huluwa.cla_id order by huluwa.age;
+----+--------------+------+------+--------+--------+------+--------------+--------+
| id | name | age | high | gender | cla_id | id | name | cla_id |
+----+--------------+------+------+--------+--------+------+--------------+--------+
| 7 | 六娃 | 2 | 1.82 | boy | 2 | 2 | 葫芦二班 | 2 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 | 3 | 葫芦三班 | 3 |
| 6 | 五娃 | 3 | 1.38 | boy | 1 | 1 | 葫芦一班 | 1 |
| 5 | 四娃 | 4 | NULL | unknow | 4 | NULL | NULL | NULL |
| 4 | 三娃 | 5 | NULL | unknow | 3 | 3 | 葫芦三班 | 3 |
| 3 | 二娃 | 6 | 1.63 | girl | 2 | 2 | 葫芦二班 | 2 |
| 2 | 大娃 | 7 | 1.72 | boy | 1 | 1 | 葫芦一班 | 1 |
| 1 | 葫芦爷爷 | 73 | 1.75 | boy | NULL | NULL | NULL | NULL |
+----+--------------+------+------+--------+--------+------+--------------+--------+

视图

  1. 视图的本质:就是对查询的封装
  2. 视图数据不能增,删,改
  3. 以 v_ 开头命名
## 创建视图

MariaDB [test1]> create view 视图名 as select语句;

MariaDB [test1]> create view v_class as select huluwa.name as '姓名', school.name as '班级' from huluwa left join school on school.cla_id=huluwa.cla_id;
Query OK, 0 rows affected (0.004 sec) ##查看视图 MariaDB [test1]> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| heros |
| huluwa |
| school |
| v_class |
+-----------------+ ##删除视图 MariaDB [test1]> drop view v_class;
Query OK, 0 rows affected (0.000 sec)

外键 foreign key

  1. 如果一个实体的某个字段指向另一个实体的主键,就称为外键。被指向的实体,称之为主实体(主表),也叫父实体(父表)。负责指向的实体,称之为从实体(从表),也叫子实体(子表)

  2. 对关系字段进行约束,当为从表中的关系字段填写值时,会到关联的主表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并报错

## (因为外键需要对应)对表做些改动

MariaDB [test1]> select * from huluwa;
+----+--------+------+------+--------+--------+
| id | name | age | high | gender | cla_id |
+----+--------+------+------+--------+--------+
| 2 | 大娃 | 7 | 1.72 | boy | 1 |
| 3 | 二娃 | 6 | 1.63 | girl | 2 |
| 4 | 三娃 | 5 | NULL | unknow | 3 |
| 5 | 四娃 | 4 | NULL | unknow | 4 |
| 6 | 五娃 | 3 | 1.38 | boy | 1 |
| 7 | 六娃 | 2 | 1.82 | boy | 2 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 |
+----+--------+------+------+--------+--------+
7 rows in set (0.001 sec) MariaDB [test1]> select * from school;
+----+--------------+--------+
| id | name | cla_id |
+----+--------------+--------+
| 1 | 葫芦一班 | 1 |
| 2 | 葫芦二班 | 2 |
| 3 | 葫芦三班 | 3 |
| 4 | 葫芦四班 | 4 |
+----+--------------+--------+ ## 查看表结构(关联键须同type) MariaDB [test1]> desc school;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| cla_id | int(10) unsigned | YES | | NULL | |
+--------+------------------+------+-----+---------+----------------+
3 rows in set (0.001 sec) MariaDB [test1]> alter table huluwa change cla_id cla_id int unsigned;
Query OK, 7 rows affected (0.055 sec)
Records: 7 Duplicates: 0 Warnings: 0 MariaDB [test1]> desc huluwa;
+--------+-----------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| high | decimal(5,2) | YES | | NULL | |
| gender | enum('boy','girl','unknow') | YES | | unknow | |
| cla_id | int(10) unsigned | YES | | NULL | |
+--------+-----------------------------+------+-----+---------+----------------+
## 给葫芦娃表添加外键

-- 外键必须受约束于主键;即(school(id)中的id必须是主键)
-- 外键和主键的结构需要一样,即(type相同) MariaDB [test1]> alter table huluwa add constraint fk foreign key(cla_id) references school(id);
Query OK, 7 rows affected (0.052 sec)
Records: 7 Duplicates: 0 Warnings: 0
## 删除外键

MariaDB [test1]> alter table huluwa drop foreign key fk;
Query OK, 0 rows affected (0.002 sec)
Records: 0 Duplicates: 0 Warnings: 0
## 添加  级联删除的外键(删除父表内容,子表数据级联删除):on delete cascade

MariaDB [test1]> alter table huluwa add constraint fk2 foreign key(cla_id) references school(id) on delete cascade;
Query OK, 7 rows affected (0.058 sec)
Records: 7 Duplicates: 0 Warnings: 0 ## 删除父表内容 MariaDB [test1]> delete from school where id=1;
Query OK, 1 row affected (0.002 sec) ## 查看 MariaDB [test1]> select * from school;
+----+--------------+--------+
| id | name | cla_id |
+----+--------------+--------+
| 2 | 葫芦二班 | 2 |
| 3 | 葫芦三班 | 3 |
| 4 | 葫芦四班 | 4 |
+----+--------------+--------+
3 rows in set (0.000 sec) MariaDB [test1]> select * from huluwa;
+----+--------+------+------+--------+--------+
| id | name | age | high | gender | cla_id |
+----+--------+------+------+--------+--------+
| 3 | 二娃 | 6 | 1.63 | girl | 2 |
| 4 | 三娃 | 5 | NULL | unknow | 3 |
| 5 | 四娃 | 4 | NULL | unknow | 4 |
| 7 | 六娃 | 2 | 1.82 | boy | 2 |
| 8 | 七娃 | 3 | 1.83 | girl | 3 |
+----+--------+------+------+--------+--------+
## 查看外键  

-- show create table  表名

索引

  • 索引作用:当数据库中数据量很大时,可以加快索引速度,但不是越多越好,数据y有大量变动的不适合添加索引;
-- create index 索引名 on 表名(字段名)

MariaDB [test1]> create index age_index on huluwa(age);
Query OK, 0 rows affected (0.013 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 查看索引

show index from 表名;
-- 删除索引

drop index 索引名 on 表名;

MariaDB数据库----查(实例演示)的更多相关文章

  1. MariaDB数据库 ----数据库简介,用户管理,数据库创建,数据类型、数据增删改(实例演示)

    数据库简介 数据库--即电子文件柜,用户可以对文件中的数据进行增,删,改,查等操作. 数据库分类 关系型数据库 关系型数据库管理系统(Relational Database Management Sy ...

  2. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  3. java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)

    1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  4. 最简实例演示asp.net5中用户认证和授权(3)

    上接: 最简实例演示asp.net5中用户认证和授权(2) 在实现了角色的各种管理接口后,下一步就是实现对用户的管理,对用户管理的接口相对多一些,必须要实现的有如下三个: 1 public inter ...

  5. 最简实例演示asp.net5中用户认证和授权(2)

    上接最简实例演示asp.net5中用户认证和授权(1) 基础类建立好后,下一步就要创建对基础类进行操作的类了,也就是实现基础类的增删改查(听起来不太高大上),当然,为了使用asp.net5的认证机制, ...

  6. MySQL/MariaDB数据库的主从复制

     MySQL/MariaDB数据库的主从复制  作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制概述 1>.传统扩展方式 垂直扩展(也叫向上扩展,Sacle ...

  7. MySQL/MariaDB数据库的用户和权限管理

    MySQL/MariaDB数据库的用户和权限管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.元数据数据库(mysql) 系统授权表(均在mysql数据库中): db hos ...

  8. oracle数据库_实例_用户_表空间之间的关系(转)

    数据库:Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库.可 ...

  9. CentOS 7.0下配置MariaDB数据库

    刚刚配置了下CentOS 7.0版本的服务器,配置数据库时发现# mysql_secure_installation命令用不了,之后网上查了一下发现CentOS 7.0版本用MariaDB替换了mys ...

随机推荐

  1. JavaCV FFmpeg AAC编码

    上次成功通过FFmpeg采集麦克风的PCM数据,这次针对上一次的程序进行了改造,使用AAC编码采集后的数据. (传送门) JavaCV FFmpeg采集麦克风PCM音频数据 采集麦克风数据是一个解码过 ...

  2. 【项目实践】SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    以项目驱动学习,以实践检验真知 前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个 ...

  3. Termux键盘配置

    通过编辑~/.termux/termux.properties配置 extra-keys = [\ ['ESC', 'CTRL', '&', '$', '!', '%', '<', '& ...

  4. 值得推荐的C#不同版本语言特性

    C#语言在不断地版本升级中,为我们提供了很多新的语言特性.其中,有很多使用的语言特性,我觉得在实际开发中用起来很方便,能够简化我们的代码,增强可读性,提高开发效率. 小编不才,在这里给大家整理了一些实 ...

  5. Goland 设置代码格式化

    前言 之前一直喜欢 VsCode 的代码自动格式化和其他的一些功能 今天了解到原来 Goland 也有这些功能, 想想也对, 毕竟这么大 正文 Goland设置代码格式化 进入设置,按需选择要使用的, ...

  6. 7.prometheus之查询API

    一.格式概述 二.表达式查询 2.1 Instant queries(即时查询) 2.2 范围查询 三.查询元数据 3.1 通过标签匹配器找到度量指标列表 3.2 获取标签名 3.3 查询标签值 四. ...

  7. Java开发手册之异常日志

    1.捕获异常的时候,有一种特殊情况,就是方法体内部所抛出的并不是Exception而是Error,这个时候,上层方法捕获Exception就会失败.所以在某些场合需要捕获更高一级别的Throwable ...

  8. 【Linux】centos7中 root家目录中perl5文件夹无法删除问题解决

    由于新项目上线,安装了一些perl的一些包 但是发现,在/root下有一个perl5/的文件夹,删除后,重新登录又会出现,很是烦人,而且他还没有内容,就是一个空文件 那么着手搞掉他 环境:centos ...

  9. 【EXP】WINDOWS下如何导出

    有些时候需要在windows下通过远程来导出数据 那么windows下怎么导出呢 例子: exp hr/hr@192.168.1.222:1521/zhang file=d:backup.dmp lo ...

  10. 【Oracle】11g direct path read介绍:10949 event、_small_table_threshold与_serial_direct_read

    转自刘相兵老师的博文: http://www.askmaclean.com/archives/11g-direct-path-read-10949-_small_table_threshold-_se ...