Mysql 基本操作(表的增删改查)

news/2024/11/29 10:46:44/

基本使用

连接服务器:    mysql -h 127.0.0.1 -P 2206 -u root -p

创建数据库:    create database helloworld;

使用数据库:    use helloworld;

创建数据库表:

create table student(id int,name varchar(32),gender varchar(32));

表中插入数据:    insert into student (id, name, gender) values (1, '张三', '男');

查看表中的数据:    select * from student;

查看引擎:    show engines;

查看表结构:    desc student;

库的操作

创建一个使用 utf8 字符集的数据库:create databases helloworld charset = utf8;

创建一个使用 utf 字符集,并带校对规则的数据库:    create database helloworld charset = utf8 collate utf8_general_ci;

查看系统默认字符集以及校验规则:    show variables like 'character_set_database'; 

                                                          show variables like 'collation_database';

查看数据库支持的字符集:    show charset;

查看数据库所支持的字符校验规则:    show collation;

字符校验规则对数据库的影响:

操纵数据库

查看数据库:    show databases;

显示创建语句:    show create database;

数据库删除:    drop database if exists helloworld;

数据库备份:     mysqldump -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径;

                          mysqldump -u root -p mytest > ./mytest.sql

数据库的还原:    source /root/Desktop/mytest.sql;

数据库备份不是整个数据库:    mysqldump -u root -p密码 数据库名 表名1  表名2  > ./mytest.sql

备份多个数据库:    mysqldump -u root -p密码 -B 数据库名1  数据库名2 ... > 数据库存放路径

查看连接情况:    show processlist

表的操作

创建表:    

create  table  users (id int,name varchar(20) comment '用户名',password char(32) comment '密码是32位的md5值',birthday date comment '生日' ) character set utf8 engine MyISAM;

查看表结构:    desc student;

修改表:    

在users表添加一个字段,用于保存图片路径: 

alter table users add assets varchar(100) comment '图片路径' after birthday;

修改name,将其长度改成60:

alter table users modify name varchar(60);

删除password列:

alter table users drop password;

修改表名为employee:

alter table users rename to employee;

将name列修改为xingming:

alter table employee change name xingming varchar(60); --新字段需要完整定义

表的增删改查:    

增加;


create table goods(id int unsigned primary key,goods_name varchar(50) not null default '', price float not null default 0.0 );

插入两条记录:    insert into goods values(100, '牛排', 78.5); 

                            insert into goods values(101, '披萨', 27.5);

注意细节:

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

2、数据的大小应在规定的范围内

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

4、字符和日期类型应包含在单引号中

5、插入空值,不指定或指定为 null:insert into table values(null)

6、批量插入:insert into goods values(1,'aa',3.3),(2,'bb',4.4),(3,'cc',5.5);

7、隐含列插入,给表中的所有字段添加数据,可以不写前面的字段名称:

insert into goods values(4,'phone',2.5);--如果没有给出字段名称,values中必须给出 所有的字段值

增加进阶:

在数据插入的时候,假设主键对应的值已经存在:插入失败!

insert into goods values(101, 'ccc', 20.5) on duplicate key update

replace into goods values(100, 'huawei', 999);    //主键不冲突直接插入

更新:

1、将所有产品的价格修改为300块:update goods set price=300;

2、将id为100的产品价格修改为1000:update goods set price=1000 where id=100;

3、将id为101的产品价格增加200块:update goods set price=price+200 where id=101;

4、goods表中有5条ccc产品。我们希望将前3条改成ddd:

update goods set goods_name='ddd' where goods_name='ccc' limit 3;

update使用细节:

1、update 语法可以用新值更新原有表中的各列值 

2、set子句指示要修改哪些列和要给予哪些值 

3、where子句指定应更新哪些行。如果没有where子句,则更新所有行 

4、where子句后面指定limit,更新限制数量的符合条件的行

删除:

1、删除表中id为101的数据:delete from goods where id=101;

2、复制表结构: create table goods2 like goods;

3、把goods表的数据复制到goods2:insert into goods2 select * from goods;

4、删除表中的所有记录:delete from goods; --删除整个表的数据,但是表的结构还存在

5、使用truncate清空表中数据:truncate table goods; --这个指令也把整个表记录删除

delete和truncate两种删除整表的区别:

1、效果一样,truncate速度快

2、delete返回被删除的记录数,而truncate返回0 

3、清空表数据,建议使用truncate

delete使用细节: 

1、配合where子句,可以灵活的删除满足条件的记录 

2、delete语句不能删除某一列的值(可以用update置null) 

3、使用delete语句仅删除记录,不删除表本身(drop table)

查询:

--创建一张学生表

 

create table student (id int not null default 1,name varchar(20) not null default '',chinese float not null default 0.0 comment '语文成绩',  english float not null default 0.0 comment '英语成绩',  math float not null default 0.0 comment '数学成绩');

--插入数据

insert into student values(1, '李涛', 89,78, 90);

insert into student values(2, '唐僧', 67,98, 56);

insert into student values(3, '孙悟空', 87,78, 77);

insert into student values(4, '老妖婆', 88,98, 90);

insert into student values(5, '红孩儿', 82,84, 67);

insert into student values(6, '如来佛祖', 55,85, 45);

insert into student values(7, '菩萨', 75,65, 30);

--查询

select --子句

--1.可以指定查询哪些列,比如:查询id,姓名,数学成绩

select id, name, math from student;

--2.distinct 如果结果中有完全相同的行,就去除重复行

select distinct math from student;

--3.select语句中可以使用as起别名

select column as 别名 from 表;

--4.在所有学生分数上加上10分(查询所有学生的总分再加10分)

select name, chinese+math+english+10 as total from student;

--5.将所有姓唐的学生成绩增加60%(查询总分再增加60%)

select name, (chinese+math+english)*1.6 as total from student where name like '唐%';

where --子句

--1.查询姓李的学生的成绩

select * from student where name like '李';

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

select * from student where english > 90;

--3.查询总分大于200分的所有同学

select id, name, math+english+chinese as 'total' from student where math+english+chinese >200; --  where后的条件不能使用total别名

--4.查询姓李并且成id大于10的学生

select * from student where name like '李%' and id > 10;

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

select * from student where english > chinese;

--6.查询总分大于200分并且数学成绩小于语文成绩的姓唐的学生

select * from student where (math+english+chinese) > 200 and math < chinese and name like '唐%';

--7.查询英语分数在80 - 90 之间的同学

select * from student where english>=80 and english<=90;

select * from student where english between 80 and 90;

--8.查询数学成绩为89,90,91的同学

select * from student where math=89 or math=90 or math=91; --推荐

select * from student where math in(89,90,91);

--删除表中的的重复复记录,重复的数据只能有一

--创建一张表:

create table tt(id int, name varchar(20));

--创建一张空表tmp_tt,空表的结构和tt一样

create table tmp_tt like tt;

--将tt表进行distinct,把数据导入空表tmp_tt

insert into tmp_tt select distinct * from tt;

--删除tt表

drop table tt;

--将tmp_tt改名成tt

alter table tmp_tt rename tt;

order by --子句

`order by 指定排序的列,排序的列可以使表中的列名,也可以是select语句后指定的别名

asc升序(默认),desc降序

order by 子句应该位于select语句的结尾`

--1.对数学成绩进行排序

select * from student order by math;

--2.对总分进行排序后,按从高到低输出

select id, name, math+english+chinese as total from student order by total desc;

--3.对姓李的学生按成绩进行从低到高排序,(因为表中只有一个姓李的学生,所以我插入一条记录)

insert into student values(8,'李雅',79,31,56);

select id, name, math+english+chinese as total from student where name like '李%' order by total;

limit --分页

--按学生的id号升序取数,每页显示3条记录。请分别显示第一页,第二页,第三页

-- 第一页

select * from student limit 0,3;

-- 第二页

select * from student limit 3,3;

-- 第三页

select * from student limit 6,3;

聚合函数

--count

--count(列名)返回某一列,行的总数

select count(*)|count(列名) from tbl_name where condition

--1.统计一个班级共有多少学生

select count(*) from student;

--2.统计数学成绩大于等于90的学生有多少人

select count(*) from student where math>=90;

--3.统计总分大于250的人数有多少

select count(*) from student where math+english+chinese>250;

sum

--1.统计一个班级数学总成绩

select sum(math) from student;

--2.统计一个班级语文,英语,数学各科的总成绩

select sum(chinese), sum(english), sum(math) from student;

--3.统计一个班级语文,英语,数学的成绩总和

select sum(chinese+english+math) from student;

--4.统计一个班级语文成绩平均分

select sum(chinese)/count(name) from student;

avg

--1.求一个班级的数学平均分

select avg(math) from student;

--2.求一个班级总分平均值

select avg(math+chinese+english) from student;

max/min

--求班级最高和最低分

select max(chinese+english+math), min(chinese+english+math) from student;

group by --子句

--1.如何显示每个部门的平均工资和高工资

select deptno,avg(sal),max(sal) from EMP group by deptno;

--2.显示每个部门的每种岗位的平均工资和低工资

select avg(sal),min(sal),job, deptno from EMP group by deptno, job;

显示平均工资低于2000的部门和它的平均工资

--1.统计各个部门的平均工资

select avg(sal) from EMP group by deptno

---2.having和group by配合使用,对group by结果进行过滤

select avg(sal) as myavg from EMP group by deptno having myavg<2000


http://www.ppmy.cn/news/179795.html

相关文章

2021年全球与中国实验室级冰箱行业市场规模及发展前景分析

2021年全球与中国实验室级冰箱行业市场规模及发展前景分析 本报告研究全球与中国市场实验室级冰箱的发展现状及未来发展趋势&#xff0c;分别从生产和消费的角度分析实验室级冰箱的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品…

2022-2028全球轻商型冰箱行业调研及趋势分析报告

据恒州诚思调研统计&#xff0c;2021年全球轻商型冰箱市场规模约 亿元&#xff0c;2017-2021年年复合增长率CAGR约为%&#xff0c;预计未来将持续保持平稳增长的态势&#xff0c;到2028年市场规模将接近 亿元&#xff0c;未来六年CAGR为 %。 本文调研和分析全球轻商型冰箱发展…

实验室冰箱的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

本文研究全球与中国市场实验室冰箱的发展现状及未来发展趋势&#xff0c;分别从生产和消费的角度分析实验室冰箱的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产…

Python使用selenium自动化测试爬取苏宁冰箱价格及型号并保存在csv中

苏宁易购上对于冰箱的价格信息&#xff0c;是被Js渲染过的&#xff0c;无法通过request、bs4库或者是scrapy直接爬取下来的&#xff0c;所以今天学习并使用了selenium库&#xff0c;并将所有冰箱的价格及型号全部保存在csv中。 使用selenium库之前&#xff0c;需要在网站上下载…

<Linux>《Linux 扩容 LVM操作大全》

[TOC](《Linux 扩容 LVM》 1 谨记2 创建目录2.1 fdisk -l 查看磁盘情况2.2 df -T 查看文件系统类型2.3 fdisk /dev/sba 操作2.3.1 修改设备&#xff0c;并查看帮助2.3.2 创建分区2.3.3 格式化创建的分区 2.4 创建pv物理卷2.5 创建vg2.6 创建lv2.7 当前文件系统的类型2.8 格式化…

设计模式--创建模式--Factory

Mark&#xff5e; Factory有2个模式一个是Factory Method和Abstract Factory这个模式基本相同只是在复杂度上的不同&#xff5e; Factory Method适用比较简单的&#xff0c;比如一个公司(如DELL)有电脑业务&#xff1a;卖台式机、笔记本、上网本。这个时候我们就是FM。 由于…

职场近一年,工作总结

下一站&#xff0c;老城区 Jun 8.2011 前段时间&#xff0c;老板电话里头的那番话&#xff0c;现在仍犹在耳边&#xff0c;似乎是一种微微的召唤&#xff01;技术人&#xff0c;总是向往着更好的工作氛围与技术挑战&#xff01;老板的一番话&#xff0c;那一句“近来业务较多&a…

【软件测试】软件测试管理

软件测试管理 软件测试环境测试环境的要素测试环境管理员 软件测试计划⭐测试计划目标测试计划主题测试计划制订过程定义工作进度的过程测试策略 软件缺陷(bug)管理缺陷的主要属性如何报告缺陷⭐如何跟踪缺陷缺陷度量 软件配置管理&#xff08;SCM&#xff09;软件配置管理的基…