当前位置: 首页 > news >正文

mysql学习-常用sql语句

1、安装mysql参考网上链接,进入mysql数据库

mysql -u root -p

2、数据库操作

2.1、创建数据库

create database `数据库名` default character set utf8;

2.2、显示所有数据库

show databases;

2.3、选择数据库

use elementInfo;

2.4、删除数据库

drop database `数据库名`;

3、表操作

3.1、创建表

CREATE TABLE `class`(
`cid` int(3) NOT NULL AUTO_INCREMENT,
`caption` varchar(32) NOT NULL,
PRIMARY KEY(`cid`)
) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

在数据库中创建一个名位class的表。

cid int(3) NOT NULL  AUTO_INCREMENT:定义了一个名为cid的整数类型字段,显示宽度被指定为3,此字段是自动递增的(AUTO_INCREMENT),意味着每添加一条新记录时,如果没有明确的指定cid值,数据库会自动为其分配一个唯一的递增值。此外,由于设置了NOT NULL,所以每一行都必须为此列提供一个值,但由于它是自动递增的,实际上不需要手动提供。

PRIMARY KEY(cid): 指定cid为主键,这表示它在一个表中的每一行中都必须有唯一值,并且用来唯一标识表中的记录。

ENGINE=INNODB:指定了存储引擎为InnoDB。

AUTO_INCREMETN=5:设置了自增的起始值为5,刚开始向表中插入新纪录时,第一条记录的cid将从5开始计数。

DEFAULT CHARSET=utf8:设置了表的默认字符集为utf8。

备注:实际写sql语句时,也可以使用Navicat Premium客户端,操作会方便一些

3.2、查看表相关信息(包括列名、数据类型、是否允许NULL、键信息等)

desc 表名

3.3、增加数据

INSERT INTO `class` VALUES ('1', '2021年');
INSERT INTO `class` VALUES ('2', '2021年');
INSERT INTO `class` VALUES ('3', '2022年');

3.4、删除表

drop table `表名`

3.5、删除表中数据

delete from `表名` where 条件

3.6、改表中数据

update table_name set field1=new_value1;

4、各种查询语句

4.1、全部查询

-- 全部查询
select * from student;

4.2、只查询部分字段

-- 只查询部分字段
select `sname`,`class_id` from student;

4.3、别名、列名(相当于给列起别名)

select `sname` as '姓名',`class_id` as '班级id' from student;

4.4、把查询出来的结果重复记录去掉

-- 把查询出来的结果的重复记录去掉
select distinct `class_id` from student;

4.5、条件查询

-- 查询姓名为 张三 的学生信息
 select* from `student` where `sname` = '张三';

-- 查询性别为 男 并且班级为2 的学生信息
select* from `student` where `gender` = '男' and `class_id`=2;

4.6、范围查询

-- 查询班级id 1 到 3 的学生信息
select * from student where `class_id` BETWEEN 1 AND 3;

4.7、判空查询

-- 判断不为空字符串
select * from student where `gender` <> '';

-- 判断为空字符串
select * from student where `gender` = '';

4.8、模糊查询

-- 使用like关键字,"%"代表任意数量的字符,"_"代表占位符
-- 查询名字为 李 开头的学生信息
select * from student where `sname` like '李%';

-- 查询第二个字为 四的学生信息
select * from student where `sname` like '_四%';

4.9、分页查询

-- 分页查询主要用于查看第N条 到 第M条的信息,通常和查询一起使用
-- 使用limit关键字,第一个参数表示从第几条开始,第二个参数表示要显示的数目
select * from student limit 0,3;

4.10、查询后排序

-- 关键字order by field asc:升序 desc:降序
select* from `score` order by `num` asc;

-- 按照多个字段排序
select* from `score` order by `course_id` desc, `num` desc;

4.11、聚合查询

-- 分组加group_cat
-- 按性别分组,并把班级id聚合起来
select `gender`, group_concat(`class_id`) as '班级id' from student group by `gender`;

-- 按性别分组,统计男生、女生人数
select `gender`, count(*) as '总数' from student group by 'gender';

4.12、联表查询

INNER JOIN:只取俩张表有对应关系的记录
LEFT JOIN:在内连接的基础上保留左表没有对应关系的记录

RIGHT JOIN:在内连接的基础上保留右表没有对应关系的记录

-- 表course 和 表teacher中id相同,获取cid信息
select `cid` from `course` INNER JOIN `teacher` on course.teacher_id = teacher.tid

4.13、子查询/合并查询

-- 相当于select返回的结果,又作为另一个select语句的输入
select * from `course` where teacher_id = (select tid from teacher where tname = '谢小二老师');

备注:要多动手练练

学习链接:https://github.com/0voice

相关文章:

  • 解决SpringCloud整合Nacos启动报java.lang.IllegalArgumentException: illegal dataId
  • 设计C语言的单片机接口
  • Springdoc 全部注解一文解释清楚
  • Python的Pytest测试框架(1)
  • 实验一:统计字符个数
  • 【QT】-toUtf8() 和 toBase64()的区别
  • mysql5.7主从部署(docker-compose版本)
  • 【责任链模式的多种实现方式及其应用】
  • Modbus协议
  • LeetCode[142] 环形链表 II
  • 【C++】memset和memcpy函数
  • 案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.2案例:某游戏公司“特种作战小组“模式
  • NAT及P2P通信
  • 本地部署deepseek-r1建立向量知识库和知识库检索实践【代码】
  • defineExpose函数
  • matlab R2024b下载教程及安装教程(附安装包)
  • 嵌入式面经-C语言:智能指针,`#define` 和 `const`,`typedef`,头文件中定义静态变量
  • turfjs多边形切割多边形求交集
  • centos 如何将 nginx reload权限给其他用户
  • Linux安装部署Elasticsearch8 全过程记录
  • 《九龙城寨之围城》斩获香港金像奖九项大奖,包括最佳影片
  • 从“网点适老化”到“社区嵌入式”,“金融为老上海模式”如何探索?
  • 2025年上海空间信息大会举行,重大项目集中签约
  • 四川一国企“80后”掌门人为报领导“知遇之恩”,盲目决策致数亿损失
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事
  • 航天科技集团质量技术部部长严泽想升任集团副总经理