【MySQL】SQL语句(数据定义语言-DDL+数据操作语言-DML+数据查询语言-DQL+数据控制语言-DCL)

SQL语句

1). SQL语句可以单行或多行书写,以分号结尾。

2). SQL语句可以使用空格/缩进来增强语句的可读性。

3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

4). 注释: 单行注释:-- 注释内容 或 # 注释内容 多行注释:/* 注释内容 */

分类说明
DDL数据定义语言,用来定义或修改(重定义)数据库对象(数据库,表, 字段)
DML数据操作语言,用来对数据库表中的数据进行增删改
DQL数据查询语言,用来查询数据库中表的记录
DCL数据控制语言,用来创建数据库用户、控制数据库的 访问权限

1. 数据定义语言-DDL

数据库操作

-- 显示所有数据库
show databases;
-- 查询当前所在数据库
select database() ;
-- 创建数据库
CREATE DATABASE 数据库名;#使用默认数据集
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
-- 删除数据库
drop database [if exists] 数据库名;
-- 切换到另一个数据库test
use test;

表操作

-- 显示当前数据库中的所有表
show tables;
-- 查看数据表结构
-- describe 表名;
desc 表名;
-- 创建数据表
CREATE TABLE pet (
    name VARCHAR(20) [COMMENT ‘字段注释’],
    owner VARCHAR(20),	-- 最大长度为20,也就意味着如果超过20将会报错
    species VARCHAR(20),
    sex CHAR(1),
    birth DATE,
    death DATE
)[COMMENT ‘表注释’];
-- 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
-- 删除表
DROP TABLE [IF EXISTS] 表名;
-- 删除指定表, 并重新创建表(一般不用)
TRUNCATE TABLE 表名;

MySQL数据类型

在MySQL中常用数据类型主要分为以下几类

  1. 数值类型
  2. 字符串类型
  3. 日期时间类型
类型大小描述
tinyint1B小整数值
samllint2B大整数值
mediumint3B大整数值
int4B大整数值
bigint8B极大整数值
float4B单精度浮点数
double8B双精度浮点数
decimmal小数–依赖于M(精度)和D(标度)的 值
类型大小描述
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
类型大小范围格式描述
DATE3B1000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3B-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR1B1901 至 2155YYYY年份值
DATETIME8B1000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4B1970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

字段操作

-- 添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [约束] [COMMENT 注释];
-- 修改字段数据类型(包括增加约束)
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度) [约束];
-- 修改字段名和字段数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [约束] [COMMENT 注释];
-- 删除字段
ALTER TABLE 表名 DROP 字段名;

2. 数据操作语言-DML

添加数据-insert into

-- 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
-- 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
-- 批量添加数据
-- 给指定字段批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;
-- 给全部字段批量添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;

插入数据时,指定的字段顺序需要与值的顺序一一对应

字符串和日期型数据应该包含在引号中

插入的数据大小,应该在字段的规定范围内

修改数据-update

UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
update employee set name = '小昭' , gender = '女' where id = 1;

删除数据-delete

DELETE FROM 表名 [WHERE 条件] ;
delete from employee where gender = '女';
-- 删除数据后,导致自增id不连续,可以调整
SET @auto_id = 0;# 会话用户自定义变量,仅会话期间有效
UPDATE 表名 SET 自增字段名 = (@auto_id := @auto_id + 1);
ALTER TABLE 表名 AUTO_INCREMENT = 1;

DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数 据。

DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即可)。

当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击 Execute即可。

3. 数据查询语言-DQL

基本查询(不带任何条件)

-- 查询多个字段
SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;
* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)
-- 字段设别名,as可省略
SELECT 字段1 [AS 别名1] , 字段2 [AS 别名2] ... FROM 表名;
SELECT 字段1 [别名1] , 字段2 [别名2] ... FROM 表名;# 可省略as
-- 去除重复记录查询
SELECT DISTINCT 字段列表 FROM 表名;

条件查询(WHERE)

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
运算符功能
>、>=、<、<=、=、<>或!=比较运算符
between…and…在某个范围之内(含最小、最大值)
in(…)在in之后的列表中的值,多选一
like 占位符模糊匹配(_匹配单个字符, %匹配任意个字符)
IS NULL是null?
AND 或 &&
OR 或 ||
NOT 或 !

聚合函数(count、max、min、avg、sum)

SELECT 聚合函数(字段列表) FROM 表名 ;

NULL值是不参与所有聚合函数运算的。

分组查询(group by)

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件 ];

where与having的区别

1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。

2.判断条件不同:where不能对聚合函数进行判断,而having可以。

3.执行顺序: where > 聚合函数 > having

-- 支持多字段分组, 具体语法为 : group by columnA,columnB
select dept_id,count(*) from emp where age>25 group by dept_id;
-- 统计每个部门age>25的人数

排序查询(order by)

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;

ASC : 升序(默认值) DESC: 降序

分页查询(limit)

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。

分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。

如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

4. 数据控制语言-DCL

用户管理

-- 查询用户和权限
select * from mysql.user;
-- 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
-- 删除用户
DROP USER '用户名'@'主机名' ;

权限管理

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
-- 授予权限
SHOW GRANTS FOR '用户名'@'主机名';
-- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值