MySQL 笔记3 -- SQL 语言
MySQL 笔记3 – SQL 语言
MySQL 系列笔记是笔者学习、实践MySQL数据库的笔记
课程链接: MySQL 数据库基础入门教程
参考文档:
MySQL 官方文档
一、 SQL语言规范
- SQL关键字、对象名、和列名不区分大小写
- 字符值和日期值要区分大小写
- 在应用程序中如果SQL语句文本很长,可以将语句分布到多行上,并且可以通过使用跳格和缩进提高代码的可读性
- SQL语句以分号(;)结束。
二、 DDL:数据定义(definition)语言
功能 | 语句 |
---|---|
创建数据库 | create database 数据库名 character set utf8; |
修改数据库 | alter database 数据库名 charactor set gbk; |
创建表 | CREATE TABLE 表名(列名1 类型 [约束],列名2 类型 [约束]); |
添加一列 | ALTER TABLE 表名 ADD 列名 数据类型; |
查看表的字段信息 | DESC 表名; |
修改表的字段类型 | ALTER TABLE 表名 MODIFY 字段名 数据类型; |
删除一列 | ALTER TABLE 表名 DROP 字段名; |
修改表名 | RENAME TABLE 原始表名 TO 要修改的表名; |
查看表的创建细节 | SHOW CREATE TABLE 表名; |
修改表的字符集 | ALTER TABLE 表名 CHARACTER SET 字符集名称; |
修改表的列名 | ALTER TABLE 表名 CHANGE 原始列名 新列名 数据类型; |
删除表 | DROP TABLE 表名; |
三、 DML:数据操作(manipulation)语言
1、插入操作
语句:
单行插入:INSERT INTO 表名(列名1,列名2 …)VALUE (列值1,列值2…);
多行插入:INSERT INTO 表名(列名1,列名2 …)VALUES (列值1,列值2…),(列值1,列值2…);
要点:
- 列名与列值的类型、个数、顺序要一一对应
- 值不要超出列定义的长度
- 插入的日期和字符一样,都使用引号括起来
- 可以省略列名,VALUE 按表头顺序填写
2、更新操作
语句:
更新某几列值:UPDATE 表名 SET 列名1=列值1,列名2=列值2
更新某行的某几列值:UPDATE 表名 SET 列名1=列值1,列名2=列值2 WHERE 列名=值;
要点:
- 如果列值为数字类型,可以使用运算符
实例: 修改数据库密码
------
# 方法1:适用于旧版
# 进入数据库
use mysql;
# 修改表
update user set password=password('abc') WHERE User='root';
------
# 方法2:适用于新版
# 直接在数据库管理系统中修改
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
# 刷新MySQL的系统权限相关表
flush privileges;
------
# 方法3:适用命令行
mysqladmin -u root -p password 12356
3、删除操作
语句:
删除1:DELETE FROM 表名 [WHERE 列名=值]
删除2:TRUNCATE TABLE 表名;
区别:
- DELETE 删除表中的数据,表结构还在,删除后的数据可以找回
- TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表,删除的数据不能找回,执行速度比DELETE快
四 、 DQL:数据查询(query)语言
1、基本查询语句
功能 | 语句 |
---|---|
查询所有列 | SELECT * FROM 表名; |
查询指定列 | SELECT 列名1,列名2… FROM 表名; |
条件查询 | SELECT * FROM 表名 WHERE 条件 |
2、条件查询
条件查询运行符及关键字:
运行符/关键字 | 语句 |
---|---|
=(等于)、!=(不等于)、<>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于); | SELECT * FROM 表名 WHERE 列名>=值 |
BETWEEN…AND;值在什么范围 | SELECT * FROM 表名 WHERE 列名 BETWEEN 列值1 AND 列值2; |
IN(set);固定的范围值 | SELECT * FROM 表名 WHERE 列名 IN(列值1,列值2,…) |
IS NULL;(为空)、IS NOT NULL(不为空) | SELECT * FROM 表名 WHERE 列名 IS NULL; |
AND;与、OR;或、NOT; 非 | SELECT * FROM 表名 WHERE 列名1=列值 AND 列名2=列值; |
3、模糊查询
语句: SELECT * FROM 表名 WHERE 列名 LIKE 匹配表达式;
通配符:
通配符 | 说明 |
---|---|
_ | 任意一个字符 |
% | 任意0~n个字符 |
常用匹配表达式:
表达式 | 说明 |
---|---|
‘____’ | 几个_就表示匹配几个字符 |
‘%字符%’ | 匹配包含某个/些字符的列值 |
‘字符%’ | 匹配以某个/些字符开头的列值 |
‘%字符’ | 匹配以某个/些字符结尾的列值 |
4、字段控制查询
功能 | 语句 |
---|---|
去除重复记录 | SELECT DISTINCT 列名 FROM 表名; |
查询结果进行运算,必须都要是数据型 | SELECT *,列名1+列名2 FROM 表名; |
查询结果进行条件替换 | SELECT *,IFNULL(列名,0) FROM 表名; |
对查询结果起别名 | SELECT *,列名1+列名2 AS 别名 FROM 表名; |
5、排序
语句: 可以多级排序
SELECT * FROM 表名 ORDER BY 列名1,列名2 排序类型;
排序类型:
- ASC:升序,从小到大,默认
- DESC:降序,从大到小
6、聚合函数
语句:
SELECT 聚合函数(*) AS 别名 FROM 表名;
常用聚合函数:
函数 | 功能 |
---|---|
COUNT() | 统计指定列不为NULL的记录行数; |
MAX() | 计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; |
MIN() | 计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; |
SUM() | 计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; |
AVG() | 计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0; |
7、分组查询
语句: SELECT 字段名 from 表名 GROUP BY 字段名;
要点:
- 当 GROUP BY 单独使用时,只显示出每组的第一条记录
- 在使用分组时,SELECT 后面直接跟的字段一般都出现在 GROUP BY 后
(1)group by + group_concat():
- GROUP_CONCAT(字段名)可以作为一个输出字段来使用表示分组之后,根据分组结果,使用GROUP_CONCAT()来放置每一组的某字段的值的集合
# 语句
SELECT 字段名,GROUP_CONCAT(字段名) from 表名 GROUP BY 字段名;# 示例:查询性别名称和各性别的人的名字
SELECT gender,GROUP_CONCAT(name) from employee GROUP BY gender;
(2)group by + 聚合函数:
- GROUP BY 统计出每个分组的某字段的值的集合,再通过集合函数来对这个"值的集合"做一些操作
# 语句
SELECT 字段名1,聚合函数(字段名2) FROM 表名 GROUP BY 字段名1;# 示例:查询每个部门的部门名称和每个部门的工资和
SELECT department,SUM(salary) FROM employee GROUP BY department;
(3)group by + having:
- having 作用和 where 一样,但 having 只能用于 group by
- having 是在分组后对数据进行过滤,where 是在分组前对数据进行过滤
- having 后面可以使用分组函数(统计函数),where 不可以
# 语句
SELECT 字段名,聚合函数(字段名) from 表名 GROUP BY 字段名 HAVING 聚合函数(字段名)的条件;# 示例:各部门个人工资大于2000的总和大于6000,降序排列
SELECT department, SUM(salary) FROM employee WHERE salary >2000
GROUP BY department HAVING SUM(salary)>6000 ORDER BY SUM(salary) DESC;
8、LIMIT
语句:
SELECT * FROM 表名 LIMIT 参数1, 参数2;
- 参数1:从哪一行开始查
- 参数2:要查几行
- 行数的索引从0开始
示例:
# 分页查询格式
SELECT * FROM 表名 LIMIT (当前页数-1)*每页的行数,每页的行数# 实例
SELECT * FROM tabel LIMIT (cyr_page-1)*page_size,page_size
GOOD LUCK!
MySQL 笔记3 -- SQL 语言相关推荐
- Mysql数据库以及sql语言
mysql 安装请点击 mysql下载速度慢请点击 可视化工具请点击(不想用命令行的) mysql和java集成:jdbc mysql 索引的创建以及含义 mysql一般函数的使用(需要一定的sql基 ...
- 2020年中级数据库系统工程师考试笔记9—SQL语言
目录 8. SQL语言 8.1 本章考点 8.2 SQL概述与数据库定义 8.3 数据库定义 8.4 数据操作 8.4.1 Select 8.4.2 Insert/update/delete 8.5 ...
- 【MySQL基础】SQL语言的概述、组成及特点
目录 一.SQL的概述 二.SQL语言的组成 三.SQL语言的特点 语法特点:
- 【MySQL数据库】一天学完MySQL笔记——纯SQL文档版
查看建表语句 show create table `表名` 全部笔记 -- Notepad++快捷键: -- CTRL D复制一行 -- CTRL L删除一行-- Eclipse快捷键: -- ALT ...
- MySQL笔记(一)SQL基础
SQL 数据定义语言(Data Definition Language,DDL) 用来创建或删除数据库以及表等对象,主要包含以下几种命令: DROP:删除数据库和表等对象 CREATE:创建数据库和表 ...
- 《童虎学习笔记》SQL语言超简单新手入门教程实战环境
数据库客户端工具 Navicat Premium 16 数据库连接信息 IP 10.211.55.7 端口 3306 用户名 dbuser 密码 111 样本数据下载地址 websites.sql a ...
- java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法
在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...
- 第8章 SQL语言(一)
1.SQL(Structured Query Language),结构化查询语言,1974年Boyce和Chhamberlin提出,是一种通用的.功能强大的关系数据库的标准语言 2.SQL包含数据查询 ...
- mysql的sql语言学习笔记总结
文章目录 SQL -1.SQL通用语法 -2.SQL分类 -3.DDL -4.DML -5.DQL -6.DCL SQL -1.SQL通用语法 SQL语句可以单行或多行书写,以分好结尾 SQL语句可以 ...
最新文章
- 递归循环子组件_算法一看就懂之「 递归 」
- 日常生活 -- 数据结构与算法告一段落
- 记录Pandas处理数据的两个小技巧
- 规模化微服务——《微服务设计》读书笔记
- sscanf与正则表达式
- log4j无厘头异常
- LeetCode 1851. 包含每个查询的最小区间(排序 + 离线查询 + 优先队列)
- Qt文档阅读笔记-ToolBar QML Type
- mac matlab 中文乱码,MAC让Matlab编辑器显示中文的方法
- Python大数据系列-01-关系数据库基本运算
- 数据库设计是否应该允许空值的存在
- C#中水晶按钮的程序生成【转载】
- 如何选择项目管理软件?
- Android-黑客技术-实现类似电脑版软件破解版
- CS架构客户端软件升级方案
- 计算机硬盘copy,diskgenius硬盘拷贝的方法
- 计算机word表格怎么求和,【Word文档怎么求和】- 虎课网
- JAVA 实现《捕鱼达人》游戏
- 【Transformers】第 5 章 :文本生成
- Excel导入导出详细教程------EasyExcel功能整合
热门文章
- LruCache缓存bitmap(一)
- JS-JavaScript学习笔记(一)
- PYTHON自动化Day3-列表/元组/切片/字典/字符串处理方法
- 在下载jar包时,要有三个包,分别为使用的把class、查看文档的api、查看源代码的资源包...
- 201703-4 地铁修建
- ubuntu基于apache+postgresql编译安装zabbix
- php模拟socket一次连接,多次发送数据的实现
- Solaris 10绝非儿戏
- 谷歌否认街景服务侵犯隐私
- 任务管理器taskmgr查看几核