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

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


http://www.kler.cn/a/586455.html

相关文章:

  • 无标签数据增强+高效注意力GAN:基于CARLA的夜间车辆检测精度跃升
  • easy-poi导出and导入一对多数据excel
  • 动手学深度学习11.8. RMSProp算法-笔记练习(PyTorch)
  • 【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2
  • 麒麟系统利用pycharm生成deb文件
  • 机器视觉条形光源应用解析
  • UDP__网络编程——Linux
  • SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入
  • 《Python实战进阶》No23: 使用 Selenium 自动化浏览器操作
  • Go string 字符串底层逻辑
  • 用Python玩转Hyperledger:构建企业级区块链解决方案
  • HTML5-基础知识
  • Android 底部 Tab 导航终极指南:封装 BottomTabHelper 实现高效、灵活的 Tab 布局
  • kafka rocketmq rabbitmq 都是怎么实现顺序消费的
  • C#控制台应用程序学习——3.11
  • 如何选择适合您智能家居解决方案的通信协议?
  • 《GitHub网路访问不稳定:解决办法》:此文为AI自动生成
  • SQL语言的编译原理
  • leetcode top100矩阵题73.54.48.240
  • 【react】react中的<></>和React Fragment的用法及区别详解