快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → mysql笔记-&&-SQL语句简单的增删改查

mysql笔记-&&-SQL语句简单的增删改查

时间:2022-09-19 11:45:03人气:作者:快盘下载我要评论

文章目录

mysql来源navicat快捷键mysql数据库语言分类DQL简单查询条件查询模糊查询分组查询使用limit字句多表查询在增删改句子中使用子查询排序显示当前使用数据库语句执行顺序;desc 表名; DML数据表记录的插入数据表记录的修改数据表记录的删除 DDLalter 改create 增drop 删 TCLDCL 导入数据库数据处理函数单行处理函数lower 转换小写upper 转换大写substr取子串concat字符串拼接length取长度trim去空格首字母小写str_to_date将字符串转化成日期date_format格式化日期format设置千分位round四舍五入rand()生成随机数ifnull函数case..when..then..when..then..else..end 分组函数;多行处理函数;分组函数;多行处理函数;

mysql来源

mysql是mysqlAB公司的。

mysqlAB公司被sun公司收购了。

sun公司又被Oracle公式收购了。

mysql现在是由oracle公司负责维护。

Oracle是收费的;mysql是免费的

navicat快捷键

在行尾;Shift;Home键选中当前行。

在行尾;Ctrl;Shift;Home键 从光标处一直选中文本开头

在行首;Shift;End键选中当前行。

在行首;Shift;End键 从光标处一直选中文本末尾

运行已选择的;Ctrl;Shift;R。

复制当前行;Ctrl;D。


Ctrl;q    打开查询窗口

Ctrl;;   注释MySQL语句

ctrl;shift ;/  解除注释

ctrl;r           运行查询窗口的sql语句

ctrl;shift;r   只运行选中的sql语句

F6               打开一个mysql命令行窗口

ctrl;l            删除一行

ctrl;n           打开一个新的查询窗口

ctrl;w          关闭一个查询窗口

mysql数据库语言分类

DQL

数据查询语言;凡是带select关键字的都是查询语句都是DLQ

简单查询

select 字段名 from 表名

#查看kc表中的所有数据
mysql> select * from kc;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 206    | 高等数学     |        3 |    3 |
| 208    | 数据结构     |        5 |    6 |
| 209    | 操作系统     |        6 |    3 |
| 210    | 计算机组装   |        4 |    4 |
| 212    | ORACLE数据库 |        2 |    5 |
| 301    | 计算机网络   |        1 |    4 |
| 302    | 软件工程     |        7 |    2 |
;--------;--------------;----------;------;
9 rows in set (0.01 sec)

#distinct消除重复数据
mysql> select distinct(学分) from kc;
;------;
| 学分 |
;------;
|    3 |
|    6 |
|    4 |
|    5 |
|    2 |
;------;
5 rows in set (0.00 sec)

# 查询多个字段
mysql> select 课程号,课程名 from kc;
;--------;--------------;
| 课程号 | 课程名       |
;--------;--------------;
| 102    | c语言        |
| 212    | ORACLE数据库 |
| 209    | 操作系统     |
| 208    | 数据结构     |
| 101    | 计算机基础   |
| 210    | 计算机组装   |
| 301    | 计算机网络   |
| 302    | 软件工程     |
| 206    | 高等数学     |
;--------;--------------;
9 rows in set (0.00 sec)

#列起别名
mysql> select 课程号 as jkj from kc;
;-----;
| jkj |
;-----;
| 102 |
| 212 |
| 209 |
| 208 |
| 101 |
| 210 |
| 301 |
| 302 |
| 206 |
;-----;
9 rows in set (0.00 sec)

mysql> select 课程号 as ;jkj hkh; from kc;
;---------;
| jkj hkh |
;---------;
| 102     |
| 212     |
| 209     |
| 208     |
| 101     |
| 210     |
| 301     |
| 302     |
| 206     |
;---------;
9 rows in set (0.00 sec)
#注意;
#as可省略
#双引号不标准;在mysql中可用;在Oracle中不可用
#单引号标准;都可用

#列参与数学运算
mysql> select 课程名 课程,学分*18 分数 from kc;
;--------------;------;
| 课程         | 分数 |
;--------------;------;
| 计算机基础   |   54 |
| c语言        |   54 |
| 高等数学     |   54 |
| 数据结构     |  108 |
| 操作系统     |   54 |
| 计算机组装   |   72 |
| ORACLE数据库 |   90 |
| 计算机网络   |   72 |
| 软件工程     |   36 |
;--------------;------;
9 rows in set (0.00 sec)

#根据生日求年龄
select 姓名,year(now())-year(出生日期) as 年龄 from 信息管理学生表;

条件查询

=         等于
><或!=    不等于
<         小于
<=	      小于等于
>         大于
>=        大于等于
between……and……两个值之间;等同于   >= and <=
is null   为null(is not null 不为空)
and或&&      并且
or或||        或
in          包含;相当于多个or;not in 不在这个范围中;
not         取非;;主要用在is或in中;
any			满足子条件查询的任意一条件
all			满足子条件查询的所有条件
#eg;
mysql> select * from kc;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 206    | 高等数学     |        3 |    3 |
| 208    | 数据结构     |        5 |    6 |
| 209    | 操作系统     |        6 |    3 |
| 210    | 计算机组装   |        4 |    4 |
| 212    | ORACLE数据库 |        2 |    5 |
| 301    | 计算机网络   |        1 |    4 |
| 302    | 软件工程     |        7 |    2 |
;--------;--------------;----------;------;
9 rows in set (0.00 sec)

mysql> select * from kc where 学分 != 3;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 208    | 数据结构     |        5 |    6 |
| 210    | 计算机组装   |        4 |    4 |
| 212    | ORACLE数据库 |        2 |    5 |
| 301    | 计算机网络   |        1 |    4 |
| 302    | 软件工程     |        7 |    2 |
;--------;--------------;----------;------;
5 rows in set (0.00 sec)

模糊查询

like        模糊查询;支持%或下划线匹配
          %匹配任意个字符
       一个_只能匹配一个字符
#找出课程号中含有1的
mysql> select * from kc where 课程号 like %1%;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 210    | 计算机组装   |        4 |    4 |
| 212    | ORACLE数据库 |        2 |    5 |
| 301    | 计算机网络   |        1 |    4 |
;--------;--------------;----------;------;
5 rows in set (0.00 sec)
#找出课程号开头为1的
mysql> select * from kc where 课程号 like ;1%;
;--------;------------;----------;------;
| 课程号 | 课程名     | 开课学期 | 学分 |
;--------;------------;----------;------;
| 101    | 计算机基础 |        1 |    3 |
| 102    | c语言      |        1 |    3 |
;--------;------------;----------;------;
2 rows in set (0.01 sec)
#找出课程号结尾为1的
mysql> select * from kc where 课程号 like %1;;
;--------;------------;----------;------;
| 课程号 | 课程名     | 开课学期 | 学分 |
;--------;------------;----------;------;
| 101    | 计算机基础 |        1 |    3 |
| 301    | 计算机网络 |        1 |    4 |
;--------;------------;----------;------;
2 rows in set (0.00 sec)
#找出课程名第三个为机的
mysql> select * from kc where 课程名 like ;__机%;
;--------;------------;----------;------;
| 课程号 | 课程名     | 开课学期 | 学分 |
;--------;------------;----------;------;
| 101    | 计算机基础 |        1 |    3 |
| 210    | 计算机组装 |        4 |    4 |
| 301    | 计算机网络 |        1 |    4 |
;--------;------------;----------;------;
3 rows in set (0.00 sec)

分组查询

group by

#查找xs表中各专业男生的人数
mysql> select 专业名,count(性别) as 男生人数 from xs where 性别=;男; group by 专业名 ;
;----------;----------;
| 专业名   | 男生人数 |
;----------;----------;
| 软件技术 |        8 |
| 网络技术 |        3 |
| 信息管理 |        1 |
| 建筑智能 |        1 |
;----------;----------;
4 rows in set (0.00 sec)
#为什么分组函数不能直接使用在where后面?
mysql> select 分数 from cj where 分数>max(分数);
ERROR 1054 (42S22): Unknown column ;分数; in ;field list;  //报错
因为分组函数在使用时必须分组之后才能使用;where执行的时候还没有分组;所以where之后不能用分组函数

使用limit字句

#查询前三条数据记录
mysql> select * from xs limit 3;
;--------;--------;----------;------;------------;--------;------;
| 学号   | 姓名   | 专业名   | 性别 | 出生日期   | 总学分 | 备注 |
;--------;--------;----------;------;------------;--------;------;
| 001101 | 王金华 | 软件技术 | 男   | 1990-02-10 |   NULL | NULL |
| 001102 | 程周杰 | 软件技术 | 男   | 1991-02-01 |   NULL | NULL |
| 001103 | 王元   | 软件技术 | 男   | 1989-10-06 |   NULL | NULL |
;--------;--------;----------;------;------------;--------;------;
3 rows in set (0.01 sec)
#查询第四条数据记录
mysql> select * from xs limit 3,1;
;--------;--------;----------;------;------------;--------;------;
| 学号   | 姓名   | 专业名   | 性别 | 出生日期   | 总学分 | 备注 |
;--------;--------;----------;------;------------;--------;------;
| 001104 | 严蔚敏 | 信息管理 | 女   | 1990-08-26 |   NULL | NULL |
;--------;--------;----------;------;------------;--------;------;
1 row in set (0.00 sec)

多表查询

#查询最高分学生的详细信息
mysql> select distinct cj.学号,姓名,成绩 from xs,cj where cj.学号=xs.学号 and 成绩 = (select max(成绩) from cj) order by 成绩 desc;
;--------;--------;------;
| 学号   | 姓名   | 成绩 |
;--------;--------;------;
| 001110 | 张晓晖 | 95.0 |
;--------;--------;------;
1 row in set (0.00 sec)
#查询及格学生的详细信息
mysql> select distinct 姓名 as 及格学生的姓名,课程号,成绩 from xs,cj  where cj.学号=xs.学号 && 成绩 in (select 成绩 from cj where 成绩 >= 60) order by 成绩 desc;
;----------------;--------;------;
| 及格学生的姓名 | 课程号 | 成绩 |
;----------------;--------;------;
| 张晓晖         | 101    | 95.0 |
| 张晓晖         | 102    | 95.0 |
| 李明           | 101    | 85.0 |
| 严蔚敏         | 102    | 84.0 |
| 张飞           | 102    | 83.0 |
| 王元           | 206    | 81.0 |
| 李伟           | 206    | 80.0 |
| 刘超           | 102    | 80.0 |
| 马妮啦         | 102    | 79.0 |
| 王金华         | 102    | 78.0 |
| 程周杰         | 102    | 78.0 |
| 程周杰         | 206    | 78.0 |
| 刘超           | 101    | 78.0 |
| 王金华         | 206    | 76.0 |
| 李长江         | 206    | 76.0 |
| 李伟           | 102    | 71.0 |
| 王元           | 102    | 70.0 |
| 张飞           | 206    | 70.0 |
| 刘超           | 206    | 68.0 |
| 张飞           | 101    | 66.0 |
| 严蔚敏         | 101    | 65.0 |
| 严蔚敏         | 206    | 65.0 |
| 李伟           | 101    | 65.0 |
| 李明           | 102    | 64.0 |
| 刘敏           | 101    | 63.0 |
| 王元           | 101    | 62.0 |
| 王金华         | 101    | 61.0 |
| 李天飞         | 206    | 60.0 |
;----------------;--------;------;
28 rows in set, 1 warning (0.00 sec)

在增删改句子中使用子查询

insert语句中使用子查询
mysql> create table rom414  like xs;
Query OK, 0 rows affected (0.03 sec)

mysql> insert into rom414 select * from xs limit 20,4;
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from rom414;
;--------;--------;--------;------;------------;--------;------;
| 学号   | 姓名   | 专业名 | 性别 | 出生日期   | 总学分 | 备注 |
;--------;--------;--------;------;------------;--------;------;
| 200308 | 郑明鑫 | NULL   | 男   | 2003-04-05 |   NULL | NULL |
| 200326 | 唐辉阳 | NULL   | 男   | 2003-02-06 |   NULL | NULL |
| 200327 | 徐斌   | NULL   | 男   | 2003-03-05 |   NULL | NULL |
| 200336 | 李昌城 | NULL   | 男   | 2003-06-03 |   NULL | NULL |
;--------;--------;--------;------;------------;--------;------;
4 rows in set (0.00 sec)
update语句中使用子查询
#在成绩表中把学C语言的学生成绩全部加5
mysql> update cj set 成绩=成绩;5 where 课程号 = (select 课程号 from kc where 课程名 = ;c语言;);
Query OK, 10 rows affected (0.01 sec)
Rows matched: 10  Changed: 10  Warnings: 0

#根据生日求年龄并写入到表格
update 信息管理学生表 set 年龄 = year(now())-year(出生日期);
在delete语句中使用子查询
#在成绩表中删除张飞c语言的成绩
mysql> delete from cj where 学号 = (select 学号 from xs where 姓名=;张飞;) && 课程号 = (select 课程号 from kc where 课程名 = ;c语言;);
Query OK, 1 row affected, 1 warning (0.01 sec)

排序

#查询kc表;以学分为升序排序
mysql> select * from kc order by 学分 asc;  //默认是升序
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 302    | 软件工程     |        7 |    2 |
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 206    | 高等数学     |        3 |    3 |
| 209    | 操作系统     |        6 |    3 |
| 210    | 计算机组装   |        4 |    4 |
| 301    | 计算机网络   |        1 |    4 |
| 212    | ORACLE数据库 |        2 |    5 |
| 208    | 数据结构     |        5 |    6 |
;--------;--------------;----------;------;
9 rows in set (0.00 sec)
#查询kc表;以学分为降序排序
mysql> select * from kc order by 学分 desc;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 208    | 数据结构     |        5 |    6 |
| 212    | ORACLE数据库 |        2 |    5 |
| 210    | 计算机组装   |        4 |    4 |
| 301    | 计算机网络   |        1 |    4 |
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 206    | 高等数学     |        3 |    3 |
| 209    | 操作系统     |        6 |    3 |
| 302    | 软件工程     |        7 |    2 |
;--------;--------------;----------;------;
9 rows in set (0.00 sec)

#多个字段排序
要求查询课程名和学分;学分按升序排序;如果学分相同;就按课程名以升序排序
mysql> select 课程名,学分 from kc order by 学分,课程名;
;--------------;------;
| 课程名       | 学分 |
;--------------;------;
| 软件工程     |    2 |
| c语言        |    3 |
| 操作系统     |    3 |
| 计算机基础   |    3 |
| 高等数学     |    3 |
| 计算机组装   |    4 |
| 计算机网络   |    4 |
| ORACLE数据库 |    5 |
| 数据结构     |    6 |
;--------------;------;
9 rows in set (0.00 sec)

mysql> select 课程名,学分 from kc order by 2;//这里的2表示第二列;不建议这样写
;--------------;------;
| 课程名       | 学分 |
;--------------;------;
| 软件工程     |    2 |
| 计算机基础   |    3 |
| c语言        |    3 |
| 高等数学     |    3 |
| 操作系统     |    3 |
| 计算机组装   |    4 |
| 计算机网络   |    4 |
| ORACLE数据库 |    5 |
| 数据结构     |    6 |
;--------------;------;
9 rows in set (0.00 sec)
#找出学分在3到5之间的数据按学分降序进行排列
mysql> select * from kc where 学分 between 3 and 5 order by 学分 desc;
;--------;--------------;----------;------;
| 课程号 | 课程名       | 开课学期 | 学分 |
;--------;--------------;----------;------;
| 212    | ORACLE数据库 |        2 |    5 |
| 210    | 计算机组装   |        4 |    4 |
| 301    | 计算机网络   |        1 |    4 |
| 101    | 计算机基础   |        1 |    3 |
| 102    | c语言        |        1 |    3 |
| 206    | 高等数学     |        3 |    3 |
| 209    | 操作系统     |        6 |    3 |
;--------;--------------;----------;------;
7 rows in set (0.00 sec)

显示当前使用数据库

mysql> select database();
;------------;
| database() |
;------------;
| cjgl1      |
;------------;
1 row in set (0.00 sec)

语句执行顺序;

第一步;from

第二步;where

第三步;group by

第四步;select

第五步;order by;排序总是最后执行;

desc 表名;

#不查看表中的数据;只查看结构
mysql> desc kc;
;----------;------------------;------;-----;---------;-------;
| Field    | Type             | Null | Key | Default | Extra |
;----------;------------------;------;-----;---------;-------;
| 课程号   | char(3)          | NO   | PRI | NULL    |       |
| 课程名   | varchar(20)      | NO   | UNI | NULL    |       |
| 开课学期 | tinyint unsigned | NO   |     | 1       |       |
| 学分     | tinyint unsigned | YES  |     | NULL    |       |
;----------;------------------;------;-----;---------;-------;
4 rows in set (0.01 sec)

DML

**数据操作语言;**凡是对数据进行增删改操作的语句都是DML

insert delete update

insert 增

delete 删

update 改

这个主要操作表中的data

数据表记录的插入

插入完整记录
mysql> desc xs;
;----------;------------------;------;-----;---------;-------;
| Field    | Type             | Null | Key | Default | Extra |
;----------;------------------;------;-----;---------;-------;
| 学号     | char(6)          | NO   | PRI | NULL    |       |
| 姓名     | char(8)          | NO   |     | NULL    |       |
| 专业名   | varchar(20)      | YES  |     | NULL    |       |
| 性别     | char(2)          | NO   |     | 男      |       |
| 出生日期 | date             | NO   |     | NULL    |       |
| 总学分   | tinyint unsigned | YES  |     | NULL    |       |
| 备注     | text             | YES  |     | NULL    |       |
;----------;------------------;------;-----;---------;-------;
7 rows in set (0.01 sec)

mysql> insert into xs values(;200201;,;张明;,;计算机应用技术;,;男;,;1998-8-5;,;9;,;学习委员;);
Query OK, 1 row affected (0.01 sec)

插入数据就录的一部分
mysql> insert into xs(学号,姓名,性别,出生日期) values(;200326;,;唐辉阳;,;男;,;2003-2-6;);
Query OK, 1 row affected (0.01 sec)

插入多行数据

mysql> insert into xs(学号,姓名,性别,出生日期)
    -> values
    -> (;200336;,;李昌城;,;男;,;2003-6-3;),
    -> (;200327;,;徐斌;,;男;,;2003-3-5;),
    -> (;200308;,;郑明鑫;,;男;,;2003-4-5;);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

数据表记录的修改

mysql> update xs
    -> set 姓名=;魏硕; where 学号=;200201;;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

数据表记录的删除

使用delete语句删除数据
mysql> delete from xs
    -> where 姓名=;高远;;
Query OK, 1 row affected (0.01 sec)

使用truncate语句删除数据

;清空数据记录;

mysql> select * from sss;
;-------;-------;---------;------;--------;
| uid   | uname | ugender | uedu | upor   |
;-------;-------;---------;------;--------;
| 11111 | tang  | n       | bk   |        |
| 22222 | zhang | n       | bk   | 副教授 |
;-------;-------;---------;------;--------;
2 rows in set (0.00 sec)

mysql> truncate sss;
Query OK, 0 rows affected (0.04 sec)

mysql> select * from sss;
Empty set (0.01 sec)

DDL

数据定义语言;凡是带create;drop;alter的都是DDL

DDL主要操作的是表的结构;不是表中的数据

create 增

drop 删

alter 改

这个增删改和DML不同;主要是对表的结构进行操作

alter 改

修改数据表名
alter table cj rename 成绩表;
修改字段名和数据类型

语法格式;

​ alter table 表名 change 旧字段名 新字段名 新数据类型;

alter table 信息管理学生表 change 专业名 zym varchar(15);
修改字段的数据类型

语法格式;

​ alter table 表名 modify 字段名 新数据类型;

alter table 信息管理学生表 modify zy varchar(20);
添加字段

语法格式;

​ alter table 表名 add 新字段名 新数据类型 [约束条件] [first | after 已经存在的字段名];

alter table 信息管理学生表 add 年龄 varchar(3);
删除字段

语法格式;

​ alter table 表名 drop 字段名;

alter  table  xs  drop  备注;

create 增

根据查询创建数据表
create table 软件技术 select 学号,姓名,性别,出生日期,总学分,备注 from xs where 专业名=;软件技术;;

drop 删

删除表
create table zyrs like xs;
drop table zyrs;

TCL

事务控制语言

包括;

​ 事务提交;commit;

​ 事务回滚;rollback;

DCL

数据控制语言

例如;授权grant、撤销权限revoke……

导入数据库

mysql> show databases;
;--------------------;
| Database           |
;--------------------;
| cjgl               |
| cjgl1              |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tang               |
;--------------------;
7 rows in set (0.00 sec)

mysql> use cjgl1;
Database changed
mysql> source D:Program FilesQQ filescjgl-bak.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected, 1 warning (0.04 sec)

Query OK, 0 rows affected (0.04 sec)

Query OK, 0 rows affected (0.05 sec)

Query OK, 0 rows affected (0.05 sec)

Query OK, 29 rows affected (0.05 sec)
Records: 29  Duplicates: 0  Warnings: 0

Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.06 sec)

Query OK, 0 rows affected (0.06 sec)

数据处理函数

数据处理函数又被称为单行处理函数

单行处理函数的特点;一个输入对应一个输出

和单行处理函数相对的是;多行处理函数;多行处理函数的特点;多个输入;对应一个输出;;

单行处理函数

lower 转换小写

mysql> select lower(课程名) 课程名,开课学期 from kc where 课程号=212;
;--------------;----------;
| 课程名       | 开课学期 |
;--------------;----------;
| oracle数据库 |        2 |
;--------------;----------;
1 row in set (0.01 sec)

mysql> select 课程名,开课学期 from kc where 课程号=212;
;--------------;----------;
| 课程名       | 开课学期 |
;--------------;----------;
| ORACLE数据库 |        2 |
;--------------;----------;
1 row in set (0.00 sec)

upper 转换大写

mysql> select upper(课程名) 课程名,开课学期 from kc;
;--------------;----------;
| 课程名       | 开课学期 |
;--------------;----------;
| 计算机基础   |        1 |
| C语言        |        1 |
| 高等数学     |        3 |
| 数据结构     |        5 |
| 操作系统     |        6 |
| 计算机组装   |        4 |
| ORACLE数据库 |        2 |
| 计算机网络   |        1 |
| 软件工程     |        7 |
;--------------;----------;
9 rows in set (0.01 sec)

mysql> select 课程名,开课学期 from kc;
;--------------;----------;
| 课程名       | 开课学期 |
;--------------;----------;
| 计算机基础   |        1 |
| c语言        |        1 |
| 高等数学     |        3 |
| 数据结构     |        5 |
| 操作系统     |        6 |
| 计算机组装   |        4 |
| ORACLE数据库 |        2 |
| 计算机网络   |        1 |
| 软件工程     |        7 |
;--------------;----------;
9 rows in set (0.00 sec)

substr取子串

#模糊查询课程号中第二位为零的行
mysql> select 课程号 from kc where substr(课程号,2,1)=;0;;
;--------;                           从课程号中第2位开始;取1位
| 课程号 |
;--------;
| 102    |
| 209    |
| 208    |
| 101    |
| 301    |
| 302    |
| 206    |
;--------;
7 rows in set (0.00 sec)

concat字符串拼接

mysql> select concat(;Hello;,;World;) result;
;------------;
| result     |
;------------;
| HelloWorld |
;------------;
1 row in set (0.00 sec)

length取长度

mysql> select length(;hhgjfgks;) as result;
;--------;
| result |
;--------;
|      8 |
;--------;
1 row in set (0.00 sec)

trim去空格

mysql> select trim(;   hkhhukhhyiyy  ;) result;
;--------------;
| result       |
;--------------;
| hkhhukhhyiyy |
;--------------;
1 row in set (0.00 sec)

首字母小写

mysql> select concat(lower(substr(课程名,1,1)),substr(课程名,2,length(课程名)-1)) as result from kc where 课程号=;212;;
;--------------;
| result       |
;--------------;
| oRACLE数据库 |
;--------------;
1 row in set (0.00 sec)

mysql> select 课程名 from kc where 课程号=;212;;
;--------------;
| 课程名       |
;--------------;
| ORACLE数据库 |
;--------------;
1 row in set (0.00 sec)

str_to_date将字符串转化成日期

date_format格式化日期

format设置千分位

round四舍五入

mysql> select round(3.6) as result;
;--------;
| result |
;--------;
|      4 |
;--------;
1 row in set (0.00 sec)
mysql> select round(3.764,2) as result;  //四舍五入保留两位小数
;--------;
| result |
;--------;
|   3.76 |
;--------;
1 row in set (0.00 sec)

rand()生成随机数

mysql> select round(rand(),1) 随机数 from kc;//生成0到1之间的随机数;保留一位小数
;--------;
| 随机数 |
;--------;
|    0.9 |
|      0 |
|    0.4 |
|    0.8 |
|    0.8 |
|    0.6 |
|    0.5 |
|    0.8 |
|    0.6 |
;--------;
9 rows in set (0.00 sec)
mysql> select round(rand()*100,0) result from kc;  //100以内随机数
;--------;
| result |
;--------;
|      6 |
|     76 |
|     60 |
|     76 |
|     97 |
|     58 |
|     98 |
|     19 |
|     98 |
;--------;
9 rows in set (0.00 sec)

ifnull函数

可以将null转化成一个具体的值

注意;

null如果参与运算;最终结果一定是null。为了避免这一现象;需要ifnull函数。

ifnull函数用法;

ifnull;数据;被当做那个值;

如果“数据”为null是;那么这个数据结构当做那个值

mysql> select 6 ; ifnull(备注,8)  result from xs;
;--------;
| result |
;--------;
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|      6 |
|     14 |
|      6 |
|     14 |
|      6 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
|     14 |
;--------;
20 rows in set (0.00 sec)

case…when…then…when…then…else…end

mysql> select 开课学期,学分 from kc;
;----------;------;
| 开课学期 | 学分 |
;----------;------;
|        1 |    3 |
|        1 |    3 |
|        3 |    3 |
|        5 |    6 |
|        6 |    3 |
|        4 |    4 |
|        2 |    5 |
|        1 |    4 |
|        7 |    2 |
;----------;------;
9 rows in set (0.00 sec)
mysql> select  开课学期,(case 开课学期 when ;1; then 学分;1 when ;2; then 学分;2 else 学分 end) new from kc;
;----------;------;
| 开课学期 | new  |
;----------;------;
|        1 |    4 |
|        1 |    4 |
|        3 |    3 |
|        5 |    6 |
|        6 |    3 |
|        4 |    4 |
|        2 |    7 |
|        1 |    5 |
|        7 |    2 |
;----------;------;
9 rows in set (0.00 sec)

分组函数;多行处理函数;

多行处理函数的特点;输入多行;最终输出一行

count 计数

sum 求和

avg 平均值

max 最大值

min 最小值

注意;

分组函数在使用的时候必须先进行分组;才能够使用如果你没有对数据进行分组;那么整张表默认为一组

14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
| 14 |
±-------;
20 rows in set (0.00 sec)


- #### case..when..then..when..then..else..end


;;;mysql
mysql> select 开课学期,学分 from kc;
;----------;------;
| 开课学期 | 学分 |
;----------;------;
|        1 |    3 |
|        1 |    3 |
|        3 |    3 |
|        5 |    6 |
|        6 |    3 |
|        4 |    4 |
|        2 |    5 |
|        1 |    4 |
|        7 |    2 |
;----------;------;
9 rows in set (0.00 sec)
mysql> select  开课学期,(case 开课学期 when ;1; then 学分;1 when ;2; then 学分;2 else 学分 end) new from kc;
;----------;------;
| 开课学期 | new  |
;----------;------;
|        1 |    4 |
|        1 |    4 |
|        3 |    3 |
|        5 |    6 |
|        6 |    3 |
|        4 |    4 |
|        2 |    7 |
|        1 |    5 |
|        7 |    2 |
;----------;------;
9 rows in set (0.00 sec)

分组函数;多行处理函数;

多行处理函数的特点;输入多行;最终输出一行

count 计数

sum 求和

avg 平均值

max 最大值

min 最小值

注意;

分组函数在使用的时候必须先进行分组;才能够使用如果你没有对数据进行分组;那么整张表默认为一组

相关文章

  • Tomcat配置出错:Using-CATALINA_OPTS:-““&&Tomcat启动闪退问题解决

    Tomcat配置出错:Using-CATALINA_OPTS:-““&&Tomcat启动闪退问题解决,Tomcat安装问题...
  • 掌握这份MySQL笔记,面试不愁

    掌握这份MySQL笔记,面试不愁,(注:char保存固定长度的字符串,例如定义char(8),存入hello,那么数据库将会用三个空格将其补全;varchar 保存长度可变的字符串,例如定义varchar(8),存入hello,那么存入数据库的就是hello)()也是既有时间又有日期的日期类型,如果没有日期存入到数据库中,数据库会使用系统的当前时间存入到数据中)()是既有时间又有日期的日期类型,如果没有像数据库中存值,数据库就会使用null存入到数据库中;from:要查询,先得找到数据的位置------即...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。