MySQL数据库(一):MySQL概述、SQLyog操作数据库、SQL代码创建表、修改表、删除表、查询表(select)、联表查询
程序员文章站
2022-04-03 22:41:11
...
一、MySQL概述
1.什么是数据库?
数据库就是一个按照某种规则来组织,存储和管理数据的仓库
2.MySQL简介
MySQL数据库是一个关系型数据库管理系统
最早属于瑞典MySQL AB 公司
现在是 Oracle 旗下产品
MySQL数据库的特点:开源、体积小、速度快、总体拥有成本低
这些特点导致了MySQL的流行
3.什么是SQLyog?
SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理你的数据库
4.使用SQLyog对数据库进行操作
下载安装好SQLyog后,双击打开,然后连接数据库
新建一个school数据库
拟定数据库的名称,字符集选择utf8,目的是为了使中文不乱码,排序规则选择utf8_general_ci,如果不选则默认也是utf8_general_ci
school数据库创建完成后,接着在school数据库下创建一张student表
一个数据库是由一张张的表构成的,我们的数据也存储在这一张张表中
刚刚创建的student表
查看刚刚创建的student表
二、代码操作表
1.使用SQL代码创建表
-- 需求:使用SQL创建学生表
-- 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住 址,email
CREATE TABLE IF NOT EXISTS `student1` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(30) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`adress` VARCHAR(100) DEFAULT NULL COMMENT '住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
怎样运行写好的代码?
结果:
2.修改表
-- 修改表名
ALTER TABLE student1 RENAME AS teacher2
-- 添加表的字段
ALTER TABLE student1 ADD age INT(3)
-- 修改约束
ALTER TABLE student1 MODIFY age VARCHAR(11)
-- 字段重命名
ALTER TABLE student1 CHANGE age age1 INT(3)
-- 删除表
DROP TABLE IF EXISTS teacher2
插入一张年级表
-- 插入一张年级表
CREATE TABLE `grade1`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
- 插入语句 insert into
-- 插入语句 insert into
INSERT INTO `grade`(`gradename`)VALUES('大四')
INSERT INTO `grade`(`gradename`)VALUES('大三')
INSERT INTO `grade`(`gradename`)
VALUES('大三'),('大四')
INSERT INTO `student1`(`name`)VALUES('张三')
INSERT INTO `student1`(`name`,`pwd`,`sex`)VALUES('李四','aaaaaa','男')
INSERT INTO `student1`(`name`,`pwd`,`sex`)
VALUES('王五','bbbbbb','男'),('赵六','cccccc','男')
- 修改语句 update
UPDATE `student` SET `name`='czx' WHERE id=1
UPDATE `student` SET `name`='长江七号' -- 不指定条件的情况下,会将所有人的名字都改成‘长江七号’
UPDATE `student` SET `name`='菜鸡',`adress`='阿拉伯联合酋长国' WHERE id=1
- 删除语句 delete from
DELETE FROM `student1` WHERE id=1
3.查询
- 查询student中的所有学生信息
SELECT * FROM `student`
在student表中查询StudentNo
,StudentName
SELECT `StudentNo`,`StudentName` FROM `student`
- 为了列名更易理解,可以给列重新起名字
-- 给字段起别名 查询
SELECT `StudentNo` AS 学号,`StudentName` AS 姓名 FROM `student` AS s
- 拼接查询
SELECT CONCAT('姓名:',`StudentName`,'性别:',`Sex`) AS 新名字 FROM `student`
- 在我们查询的信息中由很多重复的,我们只需要显示一次,这就需要去重
-- 去重查询
SELECT `StudentNo` FROM `result`
SELECT DISTINCT `StudentNo` FROM `result` -- 去重
- where语句 固定了查询的范围
-- where 语句
SELECT `StudentNo`,`StudentResult` FROM `result`
WHERE `StudentResult`>=95 AND `StudentResult`<=100
- 按名字查询
-- 学生名字查询 所有姓刘的学生
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE `StudentName` LIKE '刘%'
-- 查询姓刘的同学,名字后面只有一个字的
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '刘_'
-- 查询姓刘的同学,名字后面只有两个字的
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE StudentName LIKE '刘__'
- 如果想要查询显示的内容在两张表里,我们需要将其一起显示出来时,就需要联表查询
-- 联表查询
SELECT s.`StudentNo`,`StudentName`,`SubjectNo`,`StudentResult`
FROM `student` AS s
INNER JOIN `result` AS r
ON s.`StudentNo`=r.`StudentNo`
例一:查询参加考试的同学信息: 学号,学生姓名,科目名,分数
-- 查询了参加考试的同学信息: 学号,学生姓名,科目名,分数
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM `student` s
INNER JOIN `result` r
ON s.`StudentNo`=r.`StudentNo`
INNER JOIN `subject` sub
ON sub.`SubjectNo`=r.`SubjectNo`
例二:查询学员所属的年级 (学号,学生的姓名,年级名称)
-- 查询学员所属的年级 (学号,学生的姓名,年级名称)
SELECT `StudentNo`,`StudentName`,`GradeName`
FROM `student` s
INNER JOIN `grade` g
ON s.`GradeId`=g.`GradeID`
例三:查询科目所属的年级 (科目名称,年级名称)
-- 查询科目所属的年级 (科目名称,年级名称)
SELECT `SubjectName`,`GradeName`
FROM `subject` sub
INNER JOIN `grade` g
ON sub.`GradeID`=g.`GradeID`
例四:查询参加 数据库结构-1 考试的同学信息: 学号,学生姓名,科目名,分数
-- 查询了参加 数据库结构-1 考试的同学信息: 学号,学生姓名,科目名,分数
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM `student` s
INNER JOIN `result` r
ON s.`StudentNo`=r.`StudentNo`
INNER JOIN `subject` sub
ON sub.`SubjectNo`=r.`SubjectNo`
WHERE `SubjectName`='数据库结构-1'
例五:排序 ASC升序 DESC降序
-- 排序 ASC升序 DESC降序
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM `student` s
INNER JOIN `result` r
ON s.`StudentNo`=r.`StudentNo`
INNER JOIN `subject` sub
ON sub.`SubjectNo`=r.`SubjectNo`
WHERE `SubjectName`='数据库结构-1'
ORDER BY `StudentResult` ASC
例六:分页
-- 分页
SELECT s.`StudentNo`,`StudentName`,`SubjectName`,`StudentResult`
FROM `student` s
INNER JOIN `result` r
ON s.`StudentNo`=r.`StudentNo`
INNER JOIN `subject` sub
ON sub.`SubjectNo`=r.`SubjectNo`
WHERE `SubjectName`='数据库结构-1'
ORDER BY `StudentResult` ASC
LIMIT 5,5
推荐阅读
-
mysql数据库表的创建以及字段的增删改查操作及一些常用的查询命令介绍
-
mysql数据库表的创建以及字段的增删改查操作及一些常用的查询命令介绍
-
MySQL_1 关系型数据库的存储结构 数据库的添加,修改,删除,查询操作 数据库表的添加,修改,删除,查询操作 数据库表记录的添加,修改,删除,查询
-
MySQL(二)代码实现对数据库的一些操作(创建、修改、删除表)、字段属性、数据库的列类型
-
MySQL基础1(概述、SQLyog(安装、概述)、命令行操作数据库、sql语句操作数据库、数据库数据类型、字段属性、创建数据库、修改删除表)
-
MySQL数据库(一):MySQL概述、SQLyog操作数据库、SQL代码创建表、修改表、删除表、查询表(select)、联表查询