mysql 基础笔记一

发布时间:2026/7/10 22:31:10

mysql 基础笔记一 1.SQL通用语法SQL语句可以单行或多行书写以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性不区分大小写关键字建议使用大写注释单行注释-- 注释内容或# 注释内容(MySQL特有)多行注释/* 注释内容 */2.SQL分类DDL数据定义语言用来定义数据库对象(数据库表字段)DML数据操作语言用来对数据库表中的数据进行增删改DQL数据查询语言用来查询数据库中表的记录DCL数据控制语言用来创建数据库用户、控制数据库的访问权限3.数据定义语言DDL3.1 DDL-数据库操作查询所有数据库SHOW DATABASES;查询当前数据库SELECT DATABASE();创建数据库CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];默认的字符集和排序规则分别是utf8mb4字符集和utf8mb4_unicode_ci排序规则也是推荐使用的字符集和排序规则删除数据库DROP DATABASE [IF EXISTS] 数据库名;使用数据库USE 数据库名;3.2 DDL-表操作-查询查询当前数据库所有表SHOW TABLES;查询表结构DESC 表名;查询指定表的建表语句SHOW CREATE TABLE 表名;3.3 DDL-表操作-创建3.4 DDL-表操作-数据类型3.4.1 数值类型整数类型TINYINT1字节小整数范围-128 ~ 127有符号或 0 ~ 255无符号SMALLINT2字节大整数范围-32,768 ~ 32,767有符号或 0 ~ 65,535无符号MEDIUMINT3字节大整数范围-8,388,608 ~ 8,388,607有符号或 0 ~ 16,777,215无符号INT或INTEGER4字节大整数范围-2,147,483,648 ~ 2,147,483,647有符号或 0 ~ 4,294,967,295无符号BIGINT8字节极大整数范围-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807有符号或 0 ~ 18,446,744,073,709,551,615无符号浮点数类型FLOAT4字节单精度浮点数范围-3.402823466 E38 ~ 3.402823466351 E38有符号或 0 和 1.175494351 E-38 ~ 3.402823466 E38近似值DOUBLE8字节双精度浮点数范围-1.7976931348623157 E308 ~ 1.7976931348623157 E308 或 0 和 2.2250738585072014 E-308 ~ 1.7976931348623157 E308近似值DECIMAL(M, D)精确值M 是总位数D 是小数位数。例如DECIMAL(5, 2)可以存储 123.453.4.2 字符串类型CHAR(N)固定长度字符串最多 255 个字符VARCHAR(N)可变长度字符串最多 65,535 个字符TINYBLOB不超过 255 个字符的二进制数据TINYTEXT短文本字符串最多 255 个字符BLOB二进制形式的长文本数据最多 65,535 个字符TEXT长文本数据最多65,535个字符MEDIUMBLOB二进制形式的中等长度文本数据最多 16,777,215 个字符MEDIUMTEXT中等长度文本数据最多 16,777,215 个字符LONGBLOB二进制形式的极大文本数据最多 4,294,967,295 个字符LONGTEXT极大文本数据最多 4,294,967,295 个字符3.4.3 日期时间类型DATE日期值3字节格式为YYYY-MM-DD范围是1000-01-01 至 9999-12-31TIME时间值或持续时间3字节格式为HH:MM:SS范围是-838:59:59 至 838:59:59YEAR年份值1字节格式为YYYY范围是1901 至 2155DATETIME混合日期和时间值8字节格式为YYYY-MM-DD HH:MM:SS范围是1000-01-01 00:00:00 至 9999-12-31 23:59:59TIMESTAMP混合日期和时间值时间戳4字节格式为YYYY-MM-DD HH:MM:SS范围是1970-01-01 00:00:01 至 2038-01-19 03:14:073.4.4 布尔类型BOOLEAN或BOOL底层会自动转换成TINYINT(1)赋值时可以用FALSE和TRUE也可以使用0和13.5 DDL-表操作-修改添加字段ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];修改数据类型ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);修改字段名和字段类型ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];删除字段ALTER TABLE 表名 DROP 字段名;修改表名ALTER TABLE 表名 RENAME TO 新表名;3.6 DDL-表操作-删除删除表DROP TABLE [IF EXISTS] 表名;删除指定表并重新创建该表TRUNCATE TABLE 表名;4.数据操作语言DML4.1 DML-添加数据给指定字段添加数据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,...);插入数据时指定的字段顺序需要与值的顺序是一一对应的字符串和日期型数据应该包含在单引号中插入的数据大小应该在字段的规定范围内4.2 DML-修改数据UPDATE 表名 SET 字段1值1,字段2值2,...[WHERE 条件];如果没有条件会修改整张表的所有数据4.3 DML-删除数据DELETE FROM 表名 [WHERE 条件];DELETE如果没有指定条件会删除整张表的所有数据DELETE不能删除某一个字段的值可以使用UPDATEDELETE仅仅删除表中的数据DROP会把整张表和数据一起删除5.数据查询语言DQL5.1 DQL-语法5.2 DQL-基本查询查询多个字段SELECT 字段1,字段2,... FROM 表名;-- *代表所有字段因为不够直观不建议使用设置别名SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名; -- AS可以省略去除重复记录SELECT DISTINCT 字段列表 FROM 表名;5.3 DQL-条件查询SELECT 字段列表 FROM 表名 WHERE 条件列表;条件比较运算符说明大于大于等于小于小于等于等于或!不等于BETWEEN 最小值 AND 最大值在最小值和最大值之间包含最小值和最大值IN(...)在in之后的列表中的值多选一LIKE 占位符模糊匹配_匹配单个字符, %匹配任意个字符IS NULL是NULLIS NOT NULL不是NULL逻辑运算符说明AND 或 并且 (多个条件同时成立)OR 或 ||或者 (多个条件任意一个成立)NOT 或 !非 , 不是LIKE 后如果要表示单纯的_或%需要用到转义字符\5.4 DQL-聚合函数SELECT 聚合函数(字段列表) FROM 表名;常见聚合函数函数功能COUNT统计个数MAX最大值MIN最小值AVG平均值SUM求和NULL值不参与聚合函数的运算5.5 DQL-分组查询SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后的过滤条件];WHERE和HAVING的区别执行时机不同执行时机不同WHERE是分组之前进行过滤不满足WHERE条件不参与分组而HAVING是分组之后对结果进行过滤判断条件不同WHERE不能对聚合函数进行判断而HAVING可以执行顺序:where 聚合函数 having5.6 DQL-排序查询SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2...;排序方式ASC升序排列默认值DESC降序排列如果是多字段排序当第一个字段值相同时才会根据第二个字段进行排序5.7 DQL-分页查询SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;起始索引从0开始起始索引 查询页码 - 1* 每页显示记录数分页查询是数据库的方言不同的数据库有不同的实现MySQL中是LIMIT如果查询的是第一页数据起始索引可以省略直接简写为 limit 105.8 DQL-执行顺序6.数据控制语言DCL6.1 DCL-管理用户查询用户USE mysql SELECT * FROM user;创建用户CREATE USER 用户名主机名 IDENTIFIED BY 密码;修改用户密码-- MySQL 5.7.6 及以上版本使用ALTER USER 用户名主机名 IDENTIFIED [WITH mysql_native_password] BY 新密码;-- MySQL 5.7.6 以下版本使用SET PASSWORD FOR 用户名主机名 PASSWORD(new_password);修改用户名和主机名RENAME USER 用户名主机名 TO 新用户名新主机名;删除用户DROP USER 用户名主机名;主机名可以用%通配表示所有主机localhost代表当前主机这类语言主要是DBA使用6.2 DCL-权限控制权限说明ALL, ALL PRIVILEGES所有权限SELECT查询数据INSERT插入数据UPDATE修改数据DELETE删除数据ALTER修改表结构DROP删除数据库/表/视图CREATE创建数据库/表查询权限SHOW GRANTS FOR 用户名主机名;授予权限GRANT 权限列表 ON 数据库名.表名 TO 用户名主机名;撤销权限REVOKE 权限列表 ON 数据库名.表名 FROM 用户名主机名;多个权限之间使用逗号分隔USAGE代表用户没有任何权限创建一个用户后用户权限默认是USAGE授权时数据库名或表名可以使用*通配符代表所有数据库或表

相关新闻