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