mysql相关知识
mysql相关知识
创建数据库
create database data_test;
查看数据库
show databases;
选择数据库
use databases;
删除数据库
drop database databasename;
show engines
格式化语句
\G
创建表
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32) NOT NULL);
查看表定义
DESCRIBE TABLE
查看建表语句
SHOW CREATE TABLE TATA(v)
删除表
drop table test;
验证是否表存在
describe test;
修改表名
alter old_table rename new_table
表新增字段
alter table test2 add name varchar (20);
修改表新增字段
alter table test2 add age varchar(10) first;
表指定字段后添加字段
alter table test2 add gagggg varchar(10) after asdf;
表删除字段
alter table test2 drop asdf;
修改表字段类型
alter table test2 modify age varchar(11);
修改表字段名和字段属性
alter table test2 change age age2 varchar(15);
修改表字典顺序
alter table test2 modify gagggg varchar(10) after name;
alter table test2 modify gagggg varchar(10) first name;
restraint 约束
DEFAULT | 设置字段的默认值 |
UNIQUE KEY | 约束字段唯一值(不允许重复) |
PRIMARY KEY | 约束字段的表主键,可以记录该表唯一标识 |
AUTO_INCREMENT | 约束字段自动增加 |
FOREIGN KEY | 约束字段为表为外键 |
表设置非空约束not null
create table test1( age varchar(10) NOT NULL);
表设置默认字段
create table test3( age varchar(10) DEFAULT 'de');
表设置唯一约束
create table test4(age varchar(10) unique );
表设置唯一约束名
create table test5(age varchar(10) ,constraint age_un unique(age) );
表设置多个唯一字段
create table t11(age varchar(10) ,name varchar(10) ,constraint age_name_un unique(age,name) );
表设置主键约束
create table t8(name int primary key);
表设置主键约束名多个主键
create table t14( age int ,name varchar(11) ,constraint age_un_ha primary key (age,name) );
表设置自动增加字段
CREATE TABLE t19(age INT AUTO_INCREMENT,PRIMARY KEY (age));
表设置外建约束
创建主表
create table t_one(id int primary key)
创建外建表
create table t_two(w_id int primary key, two_id int ,constraint one_two foreign key(two_id) references t_one(id) );
索引
创建普通索引
create table t16(id int , index index_id (id));
在已经存在表上创建普通索引
create index t1_index on t8(name);
创建唯一索引
create table t17(id int ,unique index index_id (id));
验证索引
explain select * from t15;
在已经存在的表上创建唯一索引
create unique index t1_index on t1(col1);
alter 修改表唯一索引
alter table t8 add unique index index_name(name);
创建全文索引(全文索引主要是char/varchar/text)
create table t20(id varchar(10) ,fulltext index index_id(id));
在已经存在的表上创建全文索引
create fulltext index age_inedex on test1(age);
alter修改全文表
alter table test2 add fulltext index name_index (name);
创建多列索引
create table t21(age int ,name int , index more_index(age,name));
alter 修改表多列索引
alter table test7 add index more_index(age,name);
删除索引
drop index age on test7;#age为字段 test7为表名
drop index more_index on t21;#more_index 索引名
视图
MySQL中的视图(view)是一种虚拟表,其内容由查询定义,是一个逻辑表,本身并不包含数据。视图看起来和真实的表完全相同,但其中的数据来自定义视图时用到的基本表,并且在打开视图时动态生成。
创建视图
create view view_t21 as select * from t21;
查看视图
show tables;
desc view_t21;
删除视图
drop view view_t21;
drop view view_t21,iew_t22;#删除多个视图
修改视图
alter view view_t21 as select age from t21;
利用视图添加基本表数据
insert into view_t21 (age ) values(11);
利用视图删除基本表数据
delete from view_t21 where age ='11';
利用视图更新基本表数据
update view_t21 set age=2 where age =1;
触发器
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作
创建一个insert 触发器
create trigger tri_t21_t20_2 before insert on t21 for each row insert into t20 values(1);
insert into t21 (age,name) values(1,2);
查看触发器
show triggers \G;
删除触发器
drop trigger tri_t21_t20;
数据操作
插入数据
insert into t21 (age) values(1);
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| age | varchar(10) | YES | MUL | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
insert into test6 (age) values(1);#插入数据
插入多条数据
insert into test6 (age) values(1),(2),(3);
更新条件数据
update test6 set name= '1' where age=1;
删除数据
delete from test6 where age =1;
查询
查询表全部字段
select * from test6;
查询指定字段
select age from test6;
查询去重
select distinct(name)from test6;
mysql支持的比较运算符/逻辑运算符
> | 大于 |
< | 小于 |
= | 等于 |
!=(<>) | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
mysql 支持的逻辑运算符
and(&&) | 逻辑与 |
or(||) | 逻辑或 |
xor | 逻辑异或 |
not(!) | 逻辑非 |
查看表全部数据
mysql> select * from t21;
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
4 rows in set (0.00 sec)
单条件查询
mysql> select * from t21 where age =1;
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
3 rows in set (0.00 sec)
多条件查询
mysql> select * from t21 where age =1 and name =2;
+------+------+
| age | name |
+------+------+
| 1 | 2 |
+------+------+
1 row in set (0.00 sec)
取值范围查询
mysql> select * from t21 where age between 1 and 2;
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
4 rows in set (0.01 sec)
#t21表 age字段1~2
is null 条件查询 字段值为null
select * from t21 where name is null;
+------+------+
| age | name |
+------+------+
| 1 | NULL |
+------+------+
1 row in set (0.00 sec)
is not null 条件查询 字段值非null
mysql> select * from t21;
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
4 rows in set (0.00 sec)
in 条件查询
mysql> select * from t21 where age in (1,2);
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
4 rows in set (0.00 sec)
mysql> select * from t21 where age in (4);
+------+------+
| age | name |
+------+------+
| 4 | NULL |
| 4 | NULL |
+------+------+
2 rows in set (0.00 sec)
not in 查询
mysql> select * from t21 where name not in (1);
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
+------+------+
2 rows in set (0.00 sec)
like 查询
#SQL 模式匹配使您可以使用 _ 来匹配任何单个字符,使用 % 来匹配任意字符
mysql> SELECT * FROM t21 WHERE AGE LIKE '%';
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
11 rows in set (0.00 sec)
mysql> SELECT * FROM t21 WHERE AGE LIKE '_1';
+------+------+
| age | name |
+------+------+
| 21 | NULL |
+------+------+
1 row in set (0.00 sec)
not like 查询
mysql> SELECT * FROM t21 WHERE AGE NOT LIKE '_1';
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
10 rows in set (0.00 sec)
mysql> SELECT * FROM t21 WHERE AGE not LIKE '%2';
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
9 rows in set (0.00 sec)
单字段排序
mysql> select * from t21 order by age;#默认升序 asc
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 2 | 1 |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 33 | NULL |
| 214 | NULL |
+------+------+
11 rows in set (0.01 sec)
mysql> select * from t21 order by age asc;
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 2 | 1 |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 33 | NULL |
| 214 | NULL |
+------+------+
11 rows in set (0.00 sec)
mysql> select * from t21 order by age desc;#降序
+------+------+
| age | name |
+------+------+
| 214 | NULL |
| 33 | NULL |
| 32 | NULL |
| 21 | NULL |
| 6 | NULL |
| 4 | NULL |
| 4 | NULL |
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
11 rows in set (0.00 sec)
多字段排序
mysql> select * from t21 order by age desc ,name desc;#先按照age 降序,相同字段在按照name 降序
+------+------+
| age | name |
+------+------+
| 214 | NULL |
| 33 | NULL |
| 32 | NULL |
| 21 | NULL |
| 6 | NULL |
| 4 | NULL |
| 4 | NULL |
| 2 | 1 |
| 1 | 3 |
| 1 | 2 |
| 1 | NULL |
+------+------+
11 rows in set (0.00 sec)
限制查询结果数量
mysql> select * from t21 limit 21;#查询结果数据小于限制,现在全部数据
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
11 rows in set (0.00 sec)
mysql> select * from t21 limit 2;3查询结果数据大于限制,结果是限制数据数量
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from t21 limit 1,2; #limit 1为起始位,2为数量(显示第二条开始,2条数据)
+------+------+
| age | name |
+------+------+
| 1 | 2 |
| 1 | 3 |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from t21 where age =1 limit 1,2;#加入查询条件,限制查询数据数量
+------+------+
| age | name |
+------+------+
| 1 | 3 |
| 1 | NULL |
+------+------+
2 rows in set (0.00 sec)
统计函数
count() | 字段条数 |
avg() | 字段值平均值 |
sun() | 字段值总数 |
max() | 字段值中最大值 |
min() | 字段值中最小值 |
mysql> select count(*) from t21 ;
+----------+
| count(*) |
+----------+
| 11 |
+----------+
1 row in set (0.01 sec)
mysql> select avg(age) from t21 ;
+----------+
| avg(age) |
+----------+
| 29.0000 |
+----------+
1 row in set (0.00 sec)
mysql> select sum(age) from t21 ;
+----------+
| sum(age) |
+----------+
| 319 |
+----------+
1 row in set (0.00 sec)
mysql> select max(age) from t21 ;
+----------+
| max(age) |
+----------+
| 214 |
+----------+
1 row in set (0.00 sec)
mysql> select min(age) from t21 ;
+----------+
| min(age) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
AS 结果重命名字段
mysql> select min(age) as min_age from t21 ;结果重名为min_age
+---------+
| min_age |
+---------+
| 1 |
+---------+
1 row in set (0.00 sec)
分组查询
#5.7开始提示:SQL 错误 [1055] [42000]: Expression 可修改步骤为
select @@GLOBAL.sql_mode;#1
set sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';#2
mysql> select * from t21 group by name # 分组查询显示查询结果 按照name分组,每组显示1条
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
+------+------+
4 rows in set (0.00 sec)
mysql> select * from t21 group by age ;
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
8 rows in set (0.00 sec)
mysql> select * from t21 ;#t21表全部数据
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
11 rows in set (0.00 sec)
select group_concat(name) ,age from t21 group by age ;按照age分组,分组中name的值
+--------------------+------+
| group_concat(name) | age |
+--------------------+------+
| 2,3 | 1 |
| 1 | 2 |
| NULL | 4 |
| NULL | 6 |
| NULL | 21 |
| NULL | 32 |
| NULL | 33 |
| NULL | 214 |
+--------------------+------+
8 rows in set (0.00 sec)
mysql> select age,name from t21 group by age,name ;按照age分组,每组在按照name分组
+------+------+
| age | name |
+------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
+------+------+
10 rows in set (0.00 sec)
having 限制查询
mysql> select * from t21 ;
+--------+------+
| age | name |
+--------+------+
| 2 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | NULL |
| 4 | NULL |
| 4 | NULL |
| 6 | NULL |
| 21 | NULL |
| 32 | NULL |
| 214 | NULL |
| 33 | NULL |
| 1 | 3 |
| 2 | 3 |
| 123123 | 2 |
+--------+------+
14 rows in set (0.00 sec)
mysql> select age ,count(name) from t21 group by age having age >2;查询按照age 年龄分组age>2,相同name总数结果
+--------+-------------+
| age | count(name) |
+--------+-------------+
| 4 | 0 |
| 6 | 0 |
| 21 | 0 |
| 32 | 0 |
| 214 | 0 |
| 33 | 0 |
| 123123 | 1 |
+--------+-------------+
7 rows in set (0.00 sec)
mysql> select age ,count(name) from t21 group by age having count(name) >2;按照age分组,相同name数量大于2的结果
+------+-------------+
| age | count(name) |
+------+-------------+
| 1 | 3 |
+------+-------------+
1 row in set (0.00 sec)
ROUND() 函数用来把数值字段舍入为指定的小数位数
mysql> select * from t21 ;
+--------+------+------+
| age | name | kpi |
+--------+------+------+
| 2 | 1 | NULL |
| 1 | 2 | NULL |
| 1 | 3 | NULL |
| 1 | NULL | NULL |
| 4 | NULL | NULL |
| 4 | NULL | NULL |
| 6 | NULL | NULL |
| 21 | NULL | NULL |
| 32 | NULL | NULL |
| 214 | NULL | NULL |
| 33 | NULL | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
+--------+------+------+
17 rows in set (0.00 sec)
mysql> select round(kpi) from t21 ;
+------------+
| round(kpi) |
+------------+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+------------+
17 rows in set (0.00 sec)
mysql> select round(kpi,1) from t21 ;
+--------------+
| round(kpi,1) |
+--------------+
| 1.2 |
| 1.2 |
| 1.2 |
| 1.2 |
| 1.2 |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+--------------+
17 rows in set (0.00 sec)
mysql> select round(kpi,2) from t21 ;
+--------------+
| round(kpi,2) |
+--------------+
| 1.22 |
| 1.22 |
| 1.22 |
| 1.22 |
| 1.22 |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+--------------+
17 rows in set (0.00 sec)
mysql> select * from t21 ;
+--------+------+--------+
| age | name | kpi |
+--------+------+--------+
| 2 | 1 | 1.22 |
| 1 | 2 | 1.22 |
| 1 | 3 | 1.22 |
| 1 | NULL | 1.22 |
| 4 | NULL | 1.2222 |
| 4 | NULL | NULL |
| 6 | NULL | NULL |
| 21 | NULL | NULL |
| 32 | NULL | NULL |
| 214 | NULL | NULL |
| 33 | NULL | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
+--------+------+--------+
17 rows in set (0.00 sec)
mysql> select round(kpi,2) from t21 ;#kpi字段,2位小数
+--------------+
| round(kpi,2) |
+--------------+
| 1.22 |
| 1.22 |
| 1.22 |
| 1.22 |
| 1.22 |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+--------------+
17 rows in set (0.00 sec)
多表查询
UNION:将两个查询块中的所有结果合并为一个结果,省略任何重复项
mysql> select * from t20;
+------+
| id |
+------+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+------+
16 rows in set (0.00 sec)
mysql> select * from t21;
+--------+------+--------+
| age | name | kpi |
+--------+------+--------+
| 2 | 1 | 1.22 |
| 1 | 2 | 1.22 |
| 1 | 3 | 1.22 |
| 1 | NULL | 1.22 |
| 4 | NULL | 1.2222 |
| 4 | NULL | NULL |
| 6 | NULL | NULL |
| 21 | NULL | NULL |
| 32 | NULL | NULL |
| 214 | NULL | NULL |
| 33 | NULL | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
+--------+------+--------+
17 rows in set (0.00 sec)
mysql> select age from t21 union all select id from t20;
+--------+
| age |
+--------+
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 4 |
| 6 |
| 21 |
| 32 |
| 214 |
| 33 |
| 1 |
| 2 |
| 123123 |
| 1 |
| 2 |
| 123123 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+--------+
33 rows in set (0.00 sec)
UNION ALL:将两个查询块中的所有结果合并为一个结果
select age as t21_t20 from t21 union all select id from t20; #结果显示第一个查询列名
+---------+
| t21_t20 |
+---------+
| 2 |
| 1 |
| 1 |
| 1 |
| 4 |
| 4 |
| 6 |
| 21 |
| 32 |
| 214 |
| 33 |
| 1 |
| 2 |
| 123123 |
| 1 |
| 2 |
| 123123 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+---------+
33 rows in set (0.00 sec)
Cartesian product 笛卡尔积 合并
笛卡尔乘积是指[外链图片转存中...(img-hoJxFLFP-1704566677215)]
mysql> select * from t20;
+------+
| id |
+------+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+------+
16 rows in set (0.00 sec)
mysql> select * from t21;
+--------+------+--------+
| age | name | kpi |
+--------+------+--------+
| 2 | 1 | 1.22 |
| 1 | 2 | 1.22 |
| 1 | 3 | 1.22 |
| 1 | NULL | 1.22 |
| 4 | NULL | 1.2222 |
| 4 | NULL | NULL |
| 6 | NULL | NULL |
| 21 | NULL | NULL |
| 32 | NULL | NULL |
| 214 | NULL | NULL |
| 33 | NULL | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
+--------+------+--------+
17 rows in set (0.00 sec)
mysql> select * from t21,t20;#等于第一个表数量乘以第二表数量16*17=272,字段数1+3=4
+--------+------+--------+------+
| age | name | kpi | id |
+--------+------+--------+------+
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 2 | 1 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | 3 | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 1 | NULL | 1.22 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | 1.2222 | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 4 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 6 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 21 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 32 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 214 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 33 | NULL | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 1 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 2 | 3 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
| 123123 | 2 | NULL | 1 |
+--------+------+--------+------+
272 rows in set (0.00 sec)
INNER JOIN内连接
使用 INNER JOIN 来合并表。INNER JOIN 允许任一表中的行 当且仅当两个表都满足 ON 子句中指定的条件时,才会出现在结果中。在这个 例如,ON 子句指定 pet 表中的 name 列必须与 事件表。如果名称出现在一个表中,而另一个表中未显示,则该行不会出现在结果中 因为 ON 子句中的条件失败。
mysql> select * from t20;
+------+------+
| id | name |
+------+------+
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
| 1 | 1 |
+------+------+
16 rows in set (0.00 sec)
+--------+------+--------+
| age | name | kpi |
+--------+------+--------+
| 2 | 1 | 1.22 |
| 1 | 2 | 1.22 |
| 1 | 3 | 1.22 |
| 1 | NULL | 1.22 |
| 4 | NULL | 1.2222 |
| 4 | NULL | NULL |
| 6 | NULL | NULL |
| 21 | NULL | NULL |
| 32 | NULL | NULL |
| 214 | NULL | NULL |
| 33 | NULL | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
| 1 | 3 | NULL |
| 2 | 3 | NULL |
| 123123 | 2 | NULL |
+--------+------+--------+
17 rows in set (0.00 sec)
mysql> select * from t21 inner join t20 on t20.name =t21.name;
+------+------+------+------+------+
| age | name | kpi | id | name |
+------+------+------+------+------+
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
| 2 | 1 | 1.22 | 1 | 1 |
+------+------+------+------+------+
16 rows in set (0.00 sec)
自然连接
mysql> select * from t21 natural join t20;
+------+------+------+------+
| name | age | kpi | id |
+------+------+------+------+
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
+------+------+------+------+
16 rows in set (0.00 sec)
mysql> select * from t21 natural left join t20;
+------+--------+--------+------+
| name | age | kpi | id |
+------+--------+--------+------+
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 1 | 2 | 1.22 | 1 |
| 2 | 1 | 1.22 | NULL |
| 3 | 1 | 1.22 | NULL |
| NULL | 1 | 1.22 | NULL |
| NULL | 4 | 1.2222 | NULL |
| NULL | 4 | NULL | NULL |
| NULL | 6 | NULL | NULL |
| NULL | 21 | NULL | NULL |
| NULL | 32 | NULL | NULL |
| NULL | 214 | NULL | NULL |
| NULL | 33 | NULL | NULL |
| 3 | 1 | NULL | NULL |
| 3 | 2 | NULL | NULL |
| 2 | 123123 | NULL | NULL |
| 3 | 1 | NULL | NULL |
| 3 | 2 | NULL | NULL |
| 2 | 123123 | NULL | NULL |
+------+--------+--------+------+
32 rows in set (0.00 sec)
mysql> select * from t21 natural right join t20;
+------+------+------+------+
| name | id | age | kpi |
+------+------+------+------+
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
| 1 | 1 | 2 | 1.22 |
+------+------+------+------+
16 rows in set (0.00 sec)
外连接
左外连接
mysql> select t1.name,age,id,t2.name,kpi from t21 as t1 left join t20 as t2 on t1.name =t2.name;
+------+--------+------+------+--------+
| name | age | id | name | kpi |
+------+--------+------+------+--------+
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 2 | 1 | NULL | NULL | 1.22 |
| 3 | 1 | NULL | NULL | 1.22 |
| NULL | 1 | NULL | NULL | 1.22 |
s q l| NULL | 4 | NULL | NULL | 1.2222 |
| NULL | 4 | NULL | NULL | NULL |
| NULL | 6 | NULL | NULL | NULL |
| NULL | 21 | NULL | NULL | NULL |
| NULL | 32 | NULL | NULL | NULL |
| NULL | 214 | NULL | NULL | NULL |
| NULL | 33 | NULL | NULL | NULL |
| 3 | 1 | NULL | NULL | NULL |
| 3 | 2 | NULL | NULL | NULL |
| 2 | 123123 | NULL | NULL | NULL |
| 3 | 1 | NULL | NULL | NULL |
| 3 | 2 | NULL | NULL | NULL |
| 2 | 123123 | NULL | NULL | NULL |
+------+--------+------+------+--------+
32 rows in set (0.00 sec)
右外连接
mysql> select t1.name,age,id,t2.name,kpi from t21 as t1 right join t20 as t2 on t1.name =t2.name;
+------+------+------+------+------+
| name | age | id | name | kpi |
+------+------+------+------+------+
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
| 1 | 2 | 1 | 1 | 1.22 |
+------+------+------+------+------+
16 rows in set (0.00 sec)
存储过程
I F语句
SELECT IF(condition, true_value, false_value) FROM table_name;
SELECT name, IF(age >= 18, 'Adult', 'Minor') AS status FROM users;
在MySQL中,可以使用IF函数结合逻辑运算符来实现多条件判断。以下是一个示例:
sql
SELECT IF(condition1 AND condition2, true_value1, IF(condition3 OR condition4, true_value2, false_value)) AS result
FROM table_name;
在上述示例中,首先使用AND运算符将两个条件condition1和condition2组合在一起。如果这两个条件都为真,则返回true_value1。否则,使用OR运算符将两个条件condition3和condition4组合在一起,并返回相应的true_value2或false_value。
CASE THEN
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
FROM table_name;
SELECT
CASE
WHEN age >= 18 THEN 'Adult'
WHEN age < 18 THEN 'Minor'
ELSE 'Unknown'
END
AS status FROM users;
#mysql#