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表
-- 需求:使用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
-- 修改表名
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 `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 `student` SET `name`='czx' WHERE id=1
UPDATE `student` SET `name`='长江七号' -- 不指定条件的情况下,会将所有人的名字都改成‘长江七号’
UPDATE `student` SET `name`='菜鸡',`adress`='阿拉伯联合酋长国' WHERE id=1
DELETE FROM `student1` WHERE id=1
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 语句
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降序
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