MySql新手入门的基本操作汇总


Posted in MySQL onMay 13, 2021

库操作

查询

1.SHOW DATABASE; ----查询所有数据库

2.SHOW CREATE DATABASE 数据库名称; ----查询某个数据库的创建模式

3.SHOW CREATE DATABASE xxx; ----查询xxx数据库的创建模式

创建

1.CREATE DATABASE 数据库名称; ----创建数据库
注:不可以创建一个已经存在的数据库

2.CREATE DATABASE IS NOT EXISTS 数据库名称; ----判断数据库是否存在,不存在就创建

3.CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称; ----创建数据库并指定字符集,一般使用utf-8

修改

ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称; ----修改数据库的字符集

删除

1.DROP DATABASE 数据库名称; ----删除数据库

2.DROP DATABASE IS EXISTS 数据库名称; ----先判断是否存在再删除

使用

SELETE DATABASE (); ----查询当前正在使用的数据库

USE 数据库名称; ----使用指定数据库

表结构

表的查询

1.SHOW TABLES; ----查询数据库中所有的表

2.DESC 表名; ----查看指定表的结构

3.SHOW TABLE STATUS FROM 库名 LIKE ‘表名'; ----查询表字符集(like没有特别情况下和"="号是等价的)

创建表

CREATE TABLE 表名(
列名1 数据类型1 约束,
列名2 数据类型2 约束,

列名n 数据类型n约束
);

int:整数类型

  • age int

double:小数类型

  • score double(5,2)
  • price double

date:日期,只包含年月日 yyyy-MM-dd

datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss

timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss

  • 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

varchar:字符串

  • name varchar(20):姓名最大20个字符
  • zhangsan 8个字符 张三 2个字符

CREATE TABLE 要创建的表名 LIKE 被复制的表名; ----复制表

修改表

1.ALTER TABLE 表名 RENAME TO 新的表名; ----修改表名

2.ALTER TABLE 表名 CHARACTER SET 字符集名称; ----修改表的字符集

**3.**ALTER TABLE 表名 ADD 列名 数据类型; ----添加新的一列

4.ALTER TABLE 表名 MODIFY 列名 新列名 新数据类型; ----修改新列名和数据类型

表中删除操作

1.DROP TABLE 表名; ----删除表

2.ALTER TABLE 表名 DROP 列名; ----删除列

表中添加数据-INSERT语句

1.INSERT INTO 表名(列名1,列名2,…) VALUES (值1,值2,…); ----向表中添
加数据

2.SELECT * FROM product; ----查看表中所有数据

3.INSERT INTO 表名 VALUES (值1,值2,值3,…); ----默认给全部列添加数据

4.INSERT INTO 表名 VALUES (值1,值2,值3,…),(值1,值2,值3,…),(值1,值2,值3,…); ----批量添加数据

注:

  • 列名和值的数量以及数据类型要对应
  • 除了数字类型,其他数据类型的数据都需要加引号(单引双引都可以,推荐单引)

表中修改数据-updata

UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,… [where 条件];
注:

  • 修改语句中必须加上条件,如果不加条件则修改所有数据

表中删除数据-delete

DELETE FROM 表名 [WHERE 条件];

注:

  • 和修改数据是一样的

单表查询

查询语法:

select

字段列表

from

表名列表

where

条件列表

group by

分组字段

having

分组之后的条件

order by

排序

limit

分页限定

SELECT 列名1,列名2,… FROM 表名; ----多个字段查询

SELECT DISTINCT 列名1,列名2,… FROM 表名; ----去重查询,但只有所查询列都重复才会去重

SELECT 列名1 运算符(+ - * /) 列名2 FROM 表名; ----四则运算

SELECT 列名1,列名2,… AS 别名 FROM 表名; ----as用来起别名,简单易懂

条件查询

条件分类

符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<> 或 != 不等于
BETWEEN … AND … 在某个范围之内(都包含)
IN(…) 多选一
LIKE 占位符 模糊查询 _单个任意字符 %多个任意字符
IS NULL 是NULL
IS NOT NULL 不是NULL
AND 或 && 并且
OR 或 || 或者
NOT 或 ! 非,不是

聚合函数

函数名称及其功能

函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值

聚合函数语法

-- 标准语法
SELECT 函数名(列名) FROM 表名 [WHERE 条件];

-- 计算product表中总记录条数
SELECT COUNT(*) FROM product;

-- 获取最高价格
SELECT MAX(price) FROM product;
-- 获取最高价格的商品名称
SELECT NAME,price FROM product WHERE price = (SELECT MAX(price) FROM product);

-- 获取最低库存
SELECT MIN(stock) FROM product;
-- 获取最低库存的商品名称
SELECT NAME,stock FROM product WHERE stock = (SELECT MIN(stock) FROM product);

-- 获取总库存数量
SELECT SUM(stock) FROM product;
-- 获取品牌为苹果的总库存数量
SELECT SUM(stock) FROM product WHERE brand='苹果';

-- 获取品牌为小米的平均商品价格
SELECT AVG(price) FROM product WHERE brand='小米';

排序查询

分类

关键字 功能
ORDER BY 列名1 排序方式1,列名2 排序方式2 对指定列排序,ASC升序(默认的) DESC降序

- 注:多个排序条件,当前边的条件值一样时,才会判断第二条件

排序语法

-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] ORDER BY 列名1 排序方式1,列名2 排序方式2;

-- 按照库存升序排序
SELECT * FROM product ORDER BY stock ASC;

分组查询

-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式];

分页查询

-- 标准语法
SELECT 列名 FROM 表名 [WHERE 条件] GROUP BY 分组列名 [HAVING 分组后条件过滤] [ORDER BY 排序列名 排序方式] LIMIT 开始索引,查询条数;
-- 公式:开始索引 = (当前页码-1) * 每页显示的条数

约束

1.约束的概念和分类

约束的概念

  • 对表中的数据进行限定,保证数据的正确性、有效性、完整性!

约束的分类

约束 说明
PRIMARY KEY 主键约束
PRIMARY KEY AUTO_INCREMENT 主键、自动增长
UNIQUE 唯一约束
NOT NULL 非空约束
FOREIGN KEY 外键约束
FOREIGN KEY ON UPDATE CASCADE 外键级联更新
FOREIGN KEY ON DELETE CASCADE 外键级联删除

2.主键约束

主键约束特点

  • 主键约束包含:非空和唯一两个功能
  • 一张表只能有一个列作为主键
  • 主键一般用于表中数据的唯一标识

建表时添加主键约束

-- 标准语法
CREATE TABLE 表名(
	列名 数据类型 PRIMARY KEY,
    列名 数据类型,
    ...
);

-- 创建student表
CREATE TABLE student(
	id INT PRIMARY KEY  -- 给id添加主键约束
);

-- 添加数据
INSERT INTO student VALUES (1),(2);
-- 主键默认唯一,添加重复数据,会报错
INSERT INTO student VALUES (2);
-- 主键默认非空,不能添加null的数据
INSERT INTO student VALUES (NULL);

-- 查询student表
SELECT * FROM student;
-- 查询student表详细
DESC student;

删除主键

-- 标准语法
ALTER TABLE 表名 DROP PRIMARY KEY;

-- 删除主键
ALTER TABLE student DROP PRIMARY KEY;

建表后单独添加主键

-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY;

-- 添加主键
ALTER TABLE student MODIFY id INT PRIMARY KEY;

3.主键自动增长约束

建表时添加主键自增约束

-- 标准语法
CREATE TABLE 表名(
	列名 数据类型 PRIMARY KEY AUTO_INCREMENT,
    列名 数据类型,
    ...
);

-- 创建student2表
CREATE TABLE student2(
	id INT PRIMARY KEY AUTO_INCREMENT    -- 给id添加主键自增约束
);

-- 添加数据
INSERT INTO student2 VALUES (1),(2);
-- 添加null值,会自动增长
INSERT INTO student2 VALUES (NULL),(NULL);

-- 查询student2表
SELECT * FROM student2;
-- student2表详细
DESC student2;

删除自动增长

-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型;

-- 删除自动增长
ALTER TABLE student2 MODIFY id INT;

建表后单独添加自动增长

-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT;

-- 添加自动增长
ALTER TABLE student2 MODIFY id INT AUTO_INCREMENT;

4.唯一约束

建表时添加唯一约束

-- 标准语法
CREATE TABLE 表名(
	列名 数据类型 UNIQUE,
    列名 数据类型,
    ...
);

-- 创建student3表
CREATE TABLE student3(
	id INT PRIMARY KEY AUTO_INCREMENT,
	tel VARCHAR(20) UNIQUE    -- 给tel列添加唯一约束
);

-- 添加数据
INSERT INTO student3 VALUES (NULL,'18888888888'),(NULL,'18666666666');
-- 添加重复数据,会报错
INSERT INTO student3 VALUES (NULL,'18666666666');

-- 查询student3数据表
SELECT * FROM student3;
-- student3表详细
DESC student3;

删除唯一约束

-- 标准语法
ALTER TABLE 表名 DROP INDEX 列名;

-- 删除唯一约束
ALTER TABLE student3 DROP INDEX tel;

建表后单独添加唯一约束

-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型 UNIQUE;

-- 添加唯一约束
ALTER TABLE student3 MODIFY tel VARCHAR(20) UNIQUE;

5.非空约束

建表时添加非空约束

-- 标准语法
CREATE TABLE 表名(
	列名 数据类型 NOT NULL,
    列名 数据类型,
    ...
);

-- 创建student4表
CREATE TABLE student4(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20) NOT NULL    -- 给name添加非空约束
);

-- 添加数据
INSERT INTO student4 VALUES (NULL,'张三'),(NULL,'李四');
-- 添加null值,会报错
INSERT INTO student4 VALUES (NULL,NULL);

删除非空约束

-- 标准语法
ALTER TABLE 表名 MODIFY 列名 数据类型;

-- 删除非空约束
ALTER TABLE student4 MODIFY NAME VARCHAR(20);

建表后单独添加非空约束

-- 标准语法
 ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL
 
 -- 添加非空约束
 ALTER TABLE student4 MODIFY NAME VARCHAR(20) NOT NULL;

外键约束

外键约束的格式(一般在创建表的最后写这些)

CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)

总结

到此这篇关于MySql新手入门的基本操作汇总的文章就介绍到这了,更多相关MySql基本操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL主从复制断开的常用修复方法
Apr 07 MySQL
MySQL EXPLAIN输出列的详细解释
May 12 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
MySQL 数据类型选择原则
May 27 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL优化及索引解析
Mar 17 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
Apr 09 MySQL
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
Apr 12 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL中你可能忽略的COLLATION实例详解
浅谈mysql执行过程以及顺序
mysql 8.0.24版本安装配置方法图文教程
mysql 8.0.24 安装配置方法图文教程
MySQL 如何分析查询性能
May 12 #MySQL
如何用Navicat操作MySQL
MySQL EXPLAIN输出列的详细解释
May 12 #MySQL
You might like
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue中轮训器的使用
2019/01/27 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
Python制作爬虫采集小说
2015/10/25 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
python 创建一维的0向量实例
2019/12/02 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
2014年三八妇女节活动总结
2014/03/01 职场文书
质量整改通知单
2015/04/21 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL