首页 > 数据库 >mysql系列基础篇01---通用的语法及分类

mysql系列基础篇01---通用的语法及分类

时间:2023-06-28 11:33:12浏览次数:47  
标签:COMMENT 01 数据库 mysql --- 字段 表名 TABLE 字段名

通用语法及分类

  • DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML: 数据操作语言,用来对数据库表中的数据进行增删改
  • DQL: 数据查询语言,用来查询数据库中表的记录
  • DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限

一、DDL(数据定义语言)

1、数据库操作

1.1 创建数据库:
CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ];
1.2 删除数据库:
DROP DATABASE [ IF EXISTS ] 数据库名;

注意:UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集

2、表操作

2.1 查询表结构:
DESC 表名;
2.2 查询指定表的建表语句:
SHOW CREATE TABLE 表名;

2.3 创建表:

CREATE TABLE 表名(
    字段1 字段1类型 [COMMENT 字段1注释],
    字段2 字段2类型 [COMMENT 字段2注释],
    字段3 字段3类型 [COMMENT 字段3注释],
    ...
    字段n 字段n类型 [COMMENT 字段n注释]
)[ COMMENT 表注释 ];

2.4 添加字段:
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
例:ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

2.5 修改数据类型:
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
2.6 修改字段名和字段类型:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
例:将emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

2.7 删除字段:
ALTER TABLE 表名 DROP 字段名;

2.8 修改表名:
ALTER TABLE 表名 RENAME TO 新表名

2.9 删除表:
DROP TABLE [IF EXISTS] 表名;
2.10 删除表,并重新创建该表:
TRUNCATE TABLE 表名;

二、DML(数据操作语言)

1、插入数据库

方法一:

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

方法二:

INSERT INTO 表名 (字段名1, 字段名2) 
SELECT 
值1, 值2 FROM 表名01

2、更新数据库

方法一:直接更新表

UPDATE emp SET name = 'Jack' WHERE id = 1;

方法二:联表更新

update t_sett_readysettledetail a 
 inner join t_stockmanage_deptproductbatchstocktrack b on a.trackcode = b.TrackCode and a.deptid=b.deptid
 set a.supplierid = b.supplierid ,a.suppliername = b.SupplierName
where a.supplierId is null

三、DQL(数据查询语言)

1、语法

 

SELECT
    字段列表
FROM
    表名字段
WHERE
    条件列表
GROUP BY
    分组字段列表
HAVING
    分组后的条件列表
ORDER BY
    排序字段列表
LIMIT
    分页参数

 

2、条件

比较运算符功能
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
<> 或 != 不等于
BETWEEN … AND … 在某个范围内(含最小、最大值)
IN(…) 在in之后的列表中的值,多选一
LIKE 占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL 是NULL
逻辑运算符功能
AND 或 && 并且(多个条件同时成立)
OR 或 || 或者(多个条件任意一个成立)
NOT 或 ! 非,不是

3、聚合函数

3.1 不分组语法:
SELECT 聚合函数(字段列表) FROM 表名;
例:
SELECT count(id) from employee where workaddress = "广东省";

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

3.3 where 和 having 的区别:

    • 执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
    • 判断条件不同:where不能对聚合函数进行判断,而having可以。
    • 执行顺序:where > 聚合函数 > having

4、分页查询

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

5、DQL执行顺序

FROM -> WHERE -> GROUP BY -> SELECT -> ORDER BY -> LIMIT

 

四、DCL(数据库控制语言)

-- 创建用户test,能在任意主机访问
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密码
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 删除用户
drop user 'test'@'localhost';

 

标签:COMMENT,01,数据库,mysql,---,字段,表名,TABLE,字段名
From: https://www.cnblogs.com/zhengwei-cq/p/17510947.html

相关文章

  • AWS Certificate SAA - Course 2 IAM & AWS CLI
    IAM:Users&GroupsIAM=IdentityandAccessManagement,GlobalserviceRootaccountcreatedbydefault,shouldn'tbeusedorsharedUsersarepeoplewithinyourorganization,andcanbegroupedIAM:PermisionsUsersareGroupscanbeassigne......
  • 如何解析和读取mysql binlog
    要解析和读取MySQL的二进制日志(binlog),可以使用一些工具和方法。MySQL官方提供的工具:MySQL自带了一个名为mysqlbinlog的命令行工具,可以用于解析和读取二进制日志。通过执行以下命令,您可以查看二进制日志的内容:mysqlbinlog[options][binlog_files]options是......
  • Transaction rolled back because it has been marked as rollback-only大概问题及解
    Transactionrolledbackbecauseithasbeenmarkedasrollback-only问题:前几天遇到一个问题,代码没有抛出我想要的带自定义提示消息的异常,却报了个这个,去搜了一下,大概原因如下:因为我在controller的方法上写了@Transactional注解,里边调用的service的方法上也写了@Transactiona......
  • C++ - 连接mysql数据库
    1.准备工作1.1把libmysql.dll和libmysql.lib文件复制到工程目录下首先,我们要找到刚刚开始下载的MySQL数据库的安装目录,打开目录,并且将libmysql.dll文件和libmysql.lib文件复制到工程目录下~我安装MySQL的路径:C:\ProgramFiles\MySQL\MySQLServer5.7\lib 1.2......
  • 【雕爷学编程】Arduino动手做(133)---LCD1602扩展板模块
    7款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 03-定时器与数码管
    目录一.定时器基础概念一.定时器基础概念时钟周期时钟周期T是时序中最小的时间单位,具体计算的方法就是1/时钟源频率,例如C51时钟周期=1/11059200秒机器周期指单片机完成一个操作的最短时间.机器周期主要针对汇编语言而言,每条语句都是机器周期的整数倍.一......
  • Kubernetes编程——client-go基础—— Go语言中的 Kubernetes 对象介绍
    Go语言中的Kubernetes对象介绍 我们接下来更详细了解在Go语言的语境下的Pod(或者其他任何Kubernetes资源)是什么样的? Kubernetes中的资源(或者更准确说是对象)都是某种类型的实例。我理解意思是说:在Kubernetes中,资源或对象是指由Kubernetes控......
  • Linux 使用yum安装telnet-server、telnet、xinetd以及telnet本机ip
    一、查看telnet-server、telnet是否安装rpm-qatelnet-serverrpm-qatelnet没有输出telnet的版本,什么都没有输出,表示未安装二、安装telnet服务yumlist|greptelnetyuminstall-ytelnet-server.x86_64yuminstall-ytelnet.x86_64三、检查xinetd是否开启servi......
  • CSS font-weight
    主要理解UI给得英文名对应得数值字体粗细:‘font-weight’属性名称:font-weight取值:normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900初始:normal适用于:  所有元素继承:是百分比:  (不适用)媒介:视觉计算值:  详见描述动画:-‘......
  • 解决:远程连接mysql:报异常,1044 - Access denied for user ‘root‘@‘%‘ to database
    Navicat报错:使用Navicat远程连接,Docker中的mysql5.6时报异常,:1044-Accessdeniedforuser'root'@'%'todatabase'xxx'问题原因:(1)根本原因:远程连接用户权限不足!(2)直接原因:应该是创建远程连接用户‘root@%’时,没有添加访问数据库的权限。解决办法:#这里为刚才创建的root@......