Mysql常用命令练习(一)

news2024/9/21 12:39:49

Mysql常用命令练习(一)

  • 一、数据库的三层结构
  • 二、数据库
    • 2.1、创建数据库
    • 2.2、查看、删除数据库
    • 2.3、备份和恢复数据库
  • 三、表
    • 3.1、创建表
      • mysql常用的数据类型(列类型)
      • 创建表
      • 查看表
      • 查看表结构
        • 练习
    • 3.2、修改表
      • 修改表名
      • 修改表的字符集
      • 添加列
      • 修改列
      • 删除列
        • 练习
    • 3.3、删除表
  • 四、增删改查
    • 4.1、Insert(添加数据)
        • Insert注意事项
        • 练习
    • 4.2、Delete(删除数据)
        • Delete注意事项
        • 练习
    • 4.3、Update(更新数据)
        • Update注意事项
        • 练习
    • 4.4、Select(查找数据)
        • Select注意事项
    • 单表
      • 运算
      • AS(别名)
        • 练习(查询)
      • WHERE(过滤)
        • 练习
      • order by(排序)
        • order by注意事项
        • 练习
      • limit(分页查询)
        • 练习

注:语句中所有大写的都是固定格式

一、数据库的三层结构

请添加图片描述

二、数据库

2.1、创建数据库

注意:在创建数据库、表的时候,为了规避关键字,可以使用``反引号解决

CRETATE DATABASE db_name;

CRETATE DATABASE lcl_db01;		#创建数据库lcl_db01,默认字符集为utf8,默认校验规则utf8_general_ci
CRETATE DATABASE lcl_db02 CHARACTER SET utf8;	#创建数据库lcl_db02,指定字符集utf8

CRETATE DATABASE lcl_db03 CHARACTER SET utf8 COLLATE utf8_bin;	#创建数据库lcl_db02,指定字符集utf8,指定校验规则utf8_bin

1. CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认utf8
2. COLLATE:指定数据库宇符集的校对规则(常用的utf8_bin[区分大小写]、utf8_general_ci[不区分大小写]注意默认是utf8_general_ci)[举例说明database.sql文件]

2.2、查看、删除数据库

显示数据库语句

SHOW DATABASES;

显示数据库创建的语句

SHOW CRETAE DATABASE db_name;

删除数据库语句

DROP DATABASES db_name

2.3、备份和恢复数据库

备份数据库

mysqldump -h主机地址 -u用户名 -p密码 -B db_name1 db_name2 > 文件名.sql		#在linux命令行执行		-B备份多个数据库
mysqldump -h主机地址 -u用户名 -p密码 db_name 表1 表2 > 文件名.sql				#备份表
mysqldump -h192.168.153.123 -uroot -p123456 -B lcl_01 > /home/ydwl/lcl_01.sql	#将lcl_01库备份到/home/ydwl目录下命名为lcl_01.sql
mysqldump -h192.168.153.123 -uroot -p123456 -B lcl_01 > d:\\lcl_01.sql			#将lcl_01库备份到d盘下命名为lcl_01.sql

恢复数据库

source 文件名.sql				#mysql命令行执行
mysqldump -u用户名 -p密码 < 文件名.sql			#linux命令行执行
source /home/ydwl/lcl_01.sql	
soucre d:\\lcl_01.sql

三、表

3.1、创建表

mysql常用的数据类型(列类型)

请添加图片描述

创建表

CRETAE TABLE 表名 (列名1 数据类型,列名2 数据类型);		#创建表
CRETAE TABLE 表名 (列名1 数据类型,列名2 数据类型) character set 字符集 collate 校对规则 engine 引擎;		#创建表,指定字符集和校对规则

field:指定列名 datatype:指定列类型(字段类型)
character set 如不指定则为所在数据库字符集
collate:如不指定则为所在数据库校对规则
engine:引擎
CRETAE TABLE `user` (id INT,`name` VARCHAR(255),`password` VARCHAR(255));	#创建user表,指定字段和字段类型

查看表

查看当前数据库下的表

show tables;

查看其他数据库下的表

show tables from db_name;

查看表结构

查看数据表基本结构

show columns from tb_name;
describe tb_name;
desc tb_name;

查看数据表详细结构

show create table tb_name;

练习

创建emp表

字段属性
id整形
name字符型
sex字符型
brithday日期型(date)
entry_date日期型(date)
job字符型
salary小数型
resume文本型
CREATE TABLE `emp` (
	id int,
	name varchar(32),
	sex char(1),
	brithday date,
	entry_date DATETIME,
	job varchar(32),
	salary double,
	resume text
	) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;			#指定字符集 校验规则 引擎

3.2、修改表

使用ALTER TABLE 语句追加,修改,或删除列的语法

修改表名

ALTER TABLE 旧表名 rename to 新表名;
rename table 旧表名 to 新表名;

修改表的字符集

ALTER TABLE 表名 character set 字符集;

添加列

ALTER TABLE tb_name ADD 新列名 数据类型;							#默认最后一列
ALTER TABLE tb_name ADD 新列名 数据类型 after 已存在列名;			#在已存在的列名后面追加一列
ALTER TABLE tb_name ADD 新列名 数据类型 first;					#新增的列名放在第一位

修改列

修改表列名

ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型;

修改列的数据类型

ALTER TABLE tb_name MODIFY 列名 数据类型;

修改列的排列位置

ALTER TABLE tb_name MODIFY 列名1 数据类型 alter 列名2;			#将列名1修改到列2后面
ALTER TABLE tb_name MODIFY 列名 数据类型 first;				#将列名1修改到第一位置

删除列

ALTER TABLE tb_name DROP 列名;

练习

根据前面创建的emp表进行修改

1、员工表emp的上增加一 个image列,varchar类型 (要求在resume后面)

ALTER TABLE emp ADD image varchar(32);

2、修改job列,使其长度为60

ALTER TABLE emp MODIFY VARCHAR(60);

3、删除sex列

ALTER TABLE emp drop sex;

4、表名改为employee

ALTER TABLE emp rename employee;

5、修改表的字符集为utf8

ALTER TABLE employee character set utf8;

6、列名name修改为user_name

ALTER TABLE employee change name user_name varchar(32);

3.3、删除表

DROP TABLE tb_name;

DROP TABLE if exists tb_name1,tb_name2;			#可以一次删除一个或多个没有被其他表关联的数据表

四、增删改查

4.1、Insert(添加数据)

INSERT INTO tb_name (列名1,列名2,列名3) 
		values(数据1,数据2,数据3);				#添加单行记录
	
INSERT INTO tb_name (列名1,列名2,列名3) 
		values(数据1,数据2,数据3),
		(数据1,数据2,数据3);						#添加多行记录

Insert注意事项

  1. 插入的数据应与字段的数据类型相同。

    例如:把’abc’添加到int类型会错误

  2. 数据的长度应在列的规定范围内。

    例如:不能将一个长度为80的字符串加到长度为40的列中。

  3. 在values中列出的数据位置必须与被加入的列的排列位置相对应。

  4. 字符和日期型数据应包含在单引号中。

  5. 列可以插入空值 [前提是该字段允许为空],insert into table value(null)

  6. insert into tab_name (列名…) values (),(),()形式添加多条记录

  7. 如果是给表中的所有字段添加数据,可以不写前面的字段名称

  8. 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错

练习

创建一张商品表goods (id int, goods_name varchar(10),price double)

添加两条记录

CREATE TABLE `goods` (id int,goods_name varchar(10),price double);

INSERT INTO `goods` (id,goods_name,price)
		VALUES(1,'华为手机','4000'),
		(2,'OPPO手机','3500');

使用 INSERT 语句向表 employee 中插入两个员工信息

INSERT INTO employee (id ,user_name ,brithday ,entry_date ,job ,Salary ,resume ,image)
    VALUES(2 ,'ly' ,'2000-6-10' ,'2022-4-26' ,'pc' ,'700' ,'无' ,' ');
INSERT INTO employee VALUES(3 ,'ds' ,'2005-4-6' ,'2022-8-20' ,'pf' ,'700' ,'无' ,' ');		

4.2、Delete(删除数据)

DELECT FROM tb_name;		#可以加WHERE语句进行筛选,不加删除整张表内容

Delete注意事项

  1. 如果不使用where子句,将删除表中所有数据。(慎用
  2. Delete语句不能删除某一列的值 (可使用update 设为null或者’')
  3. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。drop table tb_name;

练习

使用employee进行测试

1、删除表中名称为ds的记录

DELECT FROM employee WHERE user_name = 'ds';

2、删除表中所有记录

DELECT FROM employee;

4.3、Update(更新数据)

UPDATE tb_name SET 列名=值;				#可以加WHERE语句进行筛选,不加修改整个列内容

Update注意事项

  1. UPDATE语法可以用新值更新原有表行中的各列。
  2. SET子句指示要修改哪些列和要给予哪些值。
  3. WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。(慎用
  4. 如果需要修改多个字段,可以通过set字段1=值1,字段2=值2…

练习

在上面创建的employee表中修改表中的纪录

1、将所有员工薪水修改为5000元。

UPDATE employee SET Salary = 5000;

2、将姓名为ly的员工薪水修改为3000元。

UPDATE employee SET Salary = 3000 WHERE user_name = 'ly';

3、将ds的薪水在原有基础上增加1000元。

UPDATE employee SET Salart = Salart + 1000 WHERE user_name = 'ds';

4.4、Select(查找数据)

SELECT [DISTINCT] * | 列名1,列名2,列名3 FROM tb_name;		#可以加WHERE语句进行筛选,不加查找整个列表内容

Select注意事项

  1. Select指定查询哪些列的数据。
  2. column指定列名。
  3. *号代表查询所有列。
  4. FROM指定查询哪张表。
  5. DISTINCT可选,指显示结果时,去掉重复数据

单表

运算

SELECT *,(列1 运算符 列2 运算符 列3) FROM tb_name;

AS(别名)

SELECT 字段名 AS 别名 FROM tb_name

练习(查询)

创建学生表

create TABLE student(
id int not null DEFAULT 1,
name VARCHAR(20) not null DEFAULT '',
chinese FLOAT not null DEFAULT 0.0,
english FLOAT not null DEFAULT 0.0,
math FLOAT not null DEFAULT 0.0
);

INSERT INTO student (id,name,chinese,english,math) VALUES (1,'李小',89,78,90);
INSERT INTO student (id,name,chinese,english,math) VALUES (2,'张飞',67,98,56);
INSERT INTO student (id,name,chinese,english,math) VALUES (3,'宋江',87,78,77);
INSERT INTO student (id,name,chinese,english,math) VALUES (4,'关羽',88,98,90);
INSERT INTO student (id,name,chinese,english,math) VALUES (5,'赵云',82,84,67);
INSERT INTO student (id,name,chinese,english,math) VALUES (6,'欧阳锋',55,85,45);
INSERT INTO student (id,name,chinese,english,math) VALUES (7,'黄蓉',75,65,30);
INSERT INTO student (id,name,chinese,english,math) VALUES (8,'韩信',45,65,99);
INSERT INTO student (id,name,chinese,english,math) VALUES (9,'李信',65,87,90);

1、查询表中所有学生的信息。

SELECT * FROM student;

2、查询表中所有学生的姓名和对应的英语成绩。

SELECT name,english FROM student;

3、过滤表中英语重复数据distinct

SELECT DISTINCT english FROM student;

注:要查询的记录,每个字段都相同,才会去重

4、统计每个学生的总分

SELECT name, (chinese + english + math) FROM student;

5、在所有学生总分上加10分

SELECT name, (chinese + english + math) + 10 FROM student;

SELECT name, (chinese + english + math + 10) FROM student;

6、使用别名表示学生分数

SELECT name, (chinese + english + math) + 10 AS total FROM student;

SELECT name, (chinese + english + math + 10) AS total FROM student;

WHERE(过滤)

在where语句中经常使用的运算符

请添加图片描述

练习

1、查询姓名为赵云的学生成绩

SELECT * FROM student WHERE name = '赵云';

2、查询英语成绩大于90分的同学

SELECT * FROM student WHERE english > 90;

3、查询总分大于200的同学

SELECT name,(chinese + english + math) AS total FROM student 
	WHERE (chinese + english + math) > 200;

4、查询math大于60且id大于4的学生成绩

SELECT * FROM student 
	WHERE math > 60 AND id > 4;

5、查询英语成绩大于语文成绩的同学

SELECT name,chinese,english FROM student 
	WHERE english > chinese;

6、查询总分大于200且语文成绩小于数学成绩姓李的学生

SELECT name,(chinese + english + math) AS total FROM student 
	WHERE (chinese + english + math) > 200 AND chinese < math AND name LIKE '李%';		#李%表示名字以韩开头的

7、查询语文分数在70-80之间的同学 #BETWEEN是闭区间,包含AND两边的内容

SELECT name,chinese FROM student WHERE chinese BETWEEN 71 AND 79;			

8、查询总分数为257,241,233的同学

SELECT name,(chinese + english + math) AS total FROM student 
	WHERE (chinese + english + math) in(257,241,233);

9、查询所有姓李 或者 姓宋的学生成绩

SELECT * FROM student 
	WHERE name LIKE '李%' OR name LIKE '宋%';

10、查询数学成绩别语文成绩多30分的同学

SELECT * FROM student 
	WHERE math - chinese > 30;			#运算符加减乘除都可以用

order by(排序)

SELECT 列名1,列名2,列名2 FROM student ORDER BY 列名 asc|desc		#默认asc

order by注意事项

  1. order by 指定排序的列,排序的列既可以是表中的列名,也可以是select语句指定的列名
  2. asc 升序[默认]、Desc 降序
  3. order by 字句应该位于select语句的结尾

练习

1、对数学成绩排序后输出【升序】

SELECT name,math FROM student ORDER BY math asc;

2、对总分按从高到底的顺序输出

SELECT name,(chinese + english + math) AS total FROM student
	ORDER BY total desc;

3、对姓李的学生总成绩排序输出【升序】

SELECT name,(chinese + english + math) AS total FROM student
	WHERE name like '李%' ORDER BY total asc;

limit(分页查询)

SELECT * FROM tb_name limit start,rows;


公式
SELECT * FROM tb_name LIMIT 每页显示记录数*(第几页-1),每页显示记录数

练习

按数学成绩降序取出,每页显示3条记录。请分别显示第二页和第三页

第二页:select * from student order by math desc limit 3,3;

第三页:select * from student order by math desc limit 6,3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻量级网络模型ShuffleNet

在学习ShuffleNet内容前需要简单了解卷积神经网络和MobileNet的相关内容&#xff0c;大家可以去看我之前的一篇博客MobileNet发展脉络&#xff08;V1-V2-V3&#xff09;&#xff0c;&#x1f197;&#xff0c;接下来步入正题~卷积神经网络被广泛应用在图像分类、目标检测等视觉…

易盾sdk引起项目的整体耗时问题?

大家好&#xff1a; 我是烤鸭。今年年初的时候&#xff0c;项目接入易盾sdk之后&#xff0c;随着接口调用次数增多(用到易盾sdk的接口)&#xff0c;项目整体性能变差。写篇文章做个复盘记录&#xff0c;其实同事已经写过了&#xff0c;我借鉴部分再拓展一些。 问题描述 突然收…

【JavaEE初阶】第五节.多线程 ( 基础篇 ) 线程安全问题(上篇)

目录 文章目录 前言 一、线程安全的概述 1.1 什么是线程安全问题 1.2 存在线程安全问题的实例 二、线程安全问题及其解决办法 2.1 案例分析 2.2 造成线程不安全的原因 2.3 线程加锁操作解决原子性 问题 &#xff1b; 2.3.1 什么是加锁 2.3.2 使用 synchronized关键字…

爆品跟卖商家必读:2023年快速入局TikTok选品5大关键

TikTok商业进程一直有在发展&#xff0c;开启东南亚小店&#xff0c;美国小店内邀……有吸引了不少外贸工厂和传统跨境电商卖家等玩家入局。2022年这一年&#xff0c;不管是直播带货&#xff0c;短视频带货&#xff0c;还是广告投流&#xff0c;数据都有新的变化。据报道&#…

Word 允许西文在单词中间换行,没用/无效 终极办法

有时在写论文中&#xff0c;英文的调整相当麻烦&#xff0c;为了节约版面&#xff0c;会设置允许西文在单词中间换行。但有时不希望这样&#xff0c;特别是在复制网上英文时&#xff0c;会出现单词分断换行情况&#xff0c;如何解决&#xff1a; 1.一般办法。 在Word选择要调整…

C规范编辑笔记(十)

往期文章&#xff1a; C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) 正文&#xff1a; 又是新的一年&#xff0c;2023年的第一篇没想到隔了这么久…

MyBatis-Plus加密字段查询(密文检索)

MyBatis-Plus数据安全保护(加密解密)解释说明 1.字段加密后&#xff0c;数据库存储的字段内容为十六进制格式的密文2.条件查询时&#xff0c;若不对密文进行处理将无法匹配出想要的结果3.处理方式是借助SQL的AES_DECRYPT函数将密文解密后匹配4.SQL的解密函数只有AES_DECRYPT&am…

Java-流和IO

文章目录流InputStreamFileInputStream常用方法详情代码示例BufferInputStream常用方法详情代码示例OutputStreamFileOutputStream常用方法详情代码示例BufferedOutputStream常用方法详情代码示例ReadWriteJava的java.io库提供了IO接口&#xff0c;IO是以流为基础进行输入输出的…

云原生技能树-docker image 操作-练习篇

从Docker Hub 拉取已有镜像 一个Docker 镜像(image)包含了程序代码和程序运行所依赖的所有环境。 Docker 镜像一般存放在镜像仓库服务(Image Registry)里&#xff0c;默认的镜像仓库服务是Docker Hub。 用户可以制作、构建镜像、将镜像上传到镜像仓库服务&#xff0c;从而可以…

100w人在线的 弹幕 系统,是怎么架构的?

Shopee是东南亚及中国台湾地区的电商平台 。2015年于新加坡成立并设立总部&#xff0c;随后拓展至马来西亚、泰国、中国台湾地区、印度尼西亚、越南及菲律宾共七大市场。 Shopee拥有商品种类&#xff0c;包括电子消费品、家居、美容保健、母婴、服饰及健身器材等。 2022年第二…

【STM32学习】GPIO口的八种工作模式

GPIO口的八种工作模式一、参考资料二、施密特触发器1、电路2、电路计算一、参考资料 GPIO原理图详解 强烈建议观看&#xff1a;GPIO为什么这样设计&#xff1f; 施密特触发器—原理 施密特触发器—计算 什么是运放的虚短和虚断&#xff1f; 二、施密特触发器 关于GPIO的原理与…

JavaWeb-JSP

JavaWeb-JSP 1&#xff0c;JSP 概述 JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义 Java代码的动态内容&#xff0c;也就是 J…

设计模式 (二) 工厂模式 Java

目录 一、案例引出 二、简单工厂模式 二、抽象工厂 工厂设计模式&#xff0c;顾名思义类似一家工厂来制造各种产品&#xff0c;目的在于提高代码的可扩展性。 一、案例引出 通过接口来实现一类产品的功能&#xff0c;如目前有飞机、轮船、汽车这类产品的实体类&#xff0c…

Windows 安装 Android Studio

1、下载Android Studio https://r1—sn-2x3edn7s.gvt1.com/edgedl/android/studio/install/2022.1.1.19/android-studio-2022.1.1.19-windows.exe?cms_redirectyes&mhBy&mip175.146.144.124&mm28&mnsn-2x3edn7s&msnvh&mt1673878346&mvm&mvi1…

Pycharm社区版侧边栏没有database按钮

Pycharm有专业版和社区版这两个版本&#xff0c;普通人在大多数情况下我们都会选择社区版进行下载安装。为啥呢&#xff1f;因为社区版免费&#xff0c;专业版收费一般人用不起呀&#xff0c;而且社区版能够基本满足我们的日常需求&#xff08;但是这也就意味着社区版会比专业版…

LINUX学习之查看文件常用命令(四)

cat 命令描述 cat命令是一种用于查看文件内容的命令&#xff0c;它可以将文件的内容直接输出到标准输出 以下是cat命令常用参数&#xff1a; -A &#xff1a;显示所有字符&#xff0c;包括特殊字符-b &#xff1a;显示行号&#xff0c;仅针对非空白行-E &#xff1a;在每行…

【Java集合进阶】Collection 体系集合详解(ArrayList,LinkedList,HashSet,TreeSet...)

文章目录1. 概念2. 集合和数组的区别3. 集合的体系结构4. Collection父接口5. List 子接口6. List 实现类6.1 ArrayList 类6.2 Vector 类6.3 LinkedList 类6.4 ArrayList和LinkedList的区别7. Set 子接口8. Set 实现类8.1 HashSet 类8.2 TreeSet 类9. Collections 工具类Java编…

Vue9-数据代理

数据代理&#xff1a;通过一个对象代理对另一个对象中属性的操作&#xff08;读写&#xff09; 结论&#xff1a;Vue中通过vm&#xff08;实例对象&#xff09;来代理data中的所有数据 1.首先创建了一个vm对象 2.然后 vue就给vm准备了一些数据&#xff0c;当然也将data存放到…

Ubuntu下源码编译VirtualBox二 —— 源码编译(1)

先打个预防针&#xff1a;在Ubuntu下编译VirtualBox可以说相当复杂。 1. 编译指导 &#xff08;1&#xff09;进入技术文档页面 在VirtualBox主页&#xff08;Oracle VM VirtualBox&#xff09;中&#xff0c;鼠标左键点击“Documentation”下的“Technical docs”&#xff0…

【Android安全】安装mitmproxy Https抓包证书 | 安卓SSL抓包

安装mitmproxy Https抓包证书 macbook上 mitmproxy 抓取安卓手机https流量 重点是安装mitmproxy Https抓包证书 前提 手机需要root&#xff0c;macbook上需要安装好mitmproxy macbook安装mitmproxy 需要完成下文1-3&#xff1a; https://github.com/doug-leith/cydia &…