狂神说Mysql课堂学习笔记,jdbc(含代码,下载链接)

这篇博客详细记录了MySQL的学习过程,包括连接数据库、数据表的创建和修改、数据管理(DML操作)、DQL查询、函数应用、事务处理、索引、权限管理以及JDBC的使用,内容涵盖了从基础到进阶的多个方面,是学习MySQL数据库的良好参考资料。
摘要由CSDN通过智能技术生成

连接数据库

命令行连接!

mysql -uroot -p123456

命令行连接

mysql -uroot -p123456 --连接数据库


show databases; -- 查看所有的数据库

mysql > use school; -- 切换数据库use数据库名
database changed

show tables; -- 查看数据库中所有的表
describe student; -- 显示数据库中所有的表的信息

create database westos; -- 创建一个数据库 

创建数据库

CREATE DATABASE IF NOT EXISTS westos

删除数据库

DROP DATABASE IF EXISTS westos

2操作数据库

2.2数据库的列类型

数值

tinyint 十分小的数据 一个字节

smallint 较小的数据 两个字节

int 标准的数据 四个字节

字符串类型

char 0-255

varchar 可变字符串 0-65535

text 文本串 2^16 - 1 保存大文本

时间日期类型

date YYYY-MM-DD 日期格式

time HH:MM:SS 事件格式

datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式

null类型

没有值,位置

2.4 创建数据表

创建一个school数据库
目标
学号int,姓名name,密码varchar (20),性别varchar(2),出生日期(datatime),家庭佳址,email
注意点,使用英文 ()表的名称 和字段尽量使用

AUTO INCREMENT = 自增

NOT NULL = 非空

DEFAULT ‘匿名’ = 默认值为 :匿名

PRIMARY KEY(`id`) = 主键,一般写在后面

CREATE TABLE IF NOT EXISTS `student2` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`birthdey` DATETIME DEFAULT NULL COMMENT '生日',
	`adress` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
	`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8

格式

CREATE TABLE [IF NOT EXISTS] `表名` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`字段名` 列类型 [属性] [索引] [注释]
	PRIMARY KEY(`id`)
)[表类型] [字符集设置]

SHOW CREATE DATABASE school --查看创建数据库的语句
SHOW CREATE TABLE student – 查看student数据表的定义语句

DESC student – 显示表的结构

engine : 引擎

右键-改变表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oy5i7Hda-1646288483975)(C:\Users\胡子恒\AppData\Roaming\Typora\typora-user-images\image-20220205231141849.png)]

数据库引擎:

innodb 默认使用

myisam 早些年使用的

区别

myisam innodb
事务(两个sql语句执行,
要么都成功要么都失败)
不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为两倍
  • myisam 节约空间
  • innodb 安全性高,事务的处理,多表多用户操作

在物理空间存在的位置

myisam 对应的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FnkHvj2Z-1646288483976)(C:\Users\胡子恒\AppData\Roaming\Typora\typora-user-images\image-20220205234510642.png)]

  • .myd --表结构的定义文件
  • .frm --数据文件(data) sdi
  • .myi --索引文件(index)

innodb对应的是ibd文件

字符集编码设置

charset = utf8

mysql 默认的编码是latin1

不支持中文

在my.ini中配置默认的编码

character-set-server = utf8

2.5修改表名

ALTER TABLE student2 RENAME AS student1  
--修改表名
ALTER TABLE student1 ADD age INT(11)
--修改字段名
ALTER TABLE student1 MODIFY age VARCHAR(11)
--修改约束modify
ALTER TABLE student1 CHANGE age age1 INT(1)
--字段重命名change
ALTER TABLE student1 DROP age1; 
--删除表中的字段age1

DROP TABLE IF EXISTS teacher1
--删除表

3 mysql的数据管理

3.1 外键(了解)

ALTER TABLE `student1`
ADD CONSTRAINT `fk_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
--将student1的gradeid设为外键,(grade中的gradeid就不能轻易删除了)

3.2DML语言(全记住)

dml数据操作语言

  • insert
  • update
  • delete

3.3 添加insert

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FPZ77Ef-1646288483976)(C:\Users\胡子恒\AppData\Roaming\Typora\typora-user-images\image-20220207034822352.png)]

INSERT INTO `grade`(`gradename`,`gradeid`) VALUES('大四','3')
INSERT INTO `grade` VALUES('2','一二三') --省略字段,但要一一对应
INSERT INTO `student1`(`id`,`name`,`pwd`,`sex`) VALUES('2','胡子','12345','男')


INSERT INTO `student1`(`id`,`name`) VALUES('3','张三'),('4','李四')
--同时插入多个数据

3.4 修改update

 ` UPDATE `student1` SET `name`='狂神2' WHERE id = '2'

--再student1 表中,id为2的name改为狂神2

UPDATE `student1` SET `name` = '狂神2' , `email` = '8191131892@qq.com' WHERE id = 2
--修改多个属性

条件where 子句,id等于某个值,再某个区间修改。。。

操作符 含义 范围 结果
= 等于
<> 或 != 不等于 5<>6 true
>= 大于
between 2 and 4 2和4范围内
and
or
UPDATE `student1` SET `name` = '小虎' WHERE NAME='狂神2' AND pwd='12345'
--and  多个条件

3.5 删除delete 和truncate

DELETE FROM `student1` WHERE `name` = '小虎'


DELETE FROM `student1`
--删除表student1的所有

**truncate **用它清空

作用:完全清空一个数据表,表的结构和索引约束不会变

TRUNCATE `student`

相同点

  • 相同点:都能删除数据,不改变表结构
  • 不同点:
    • truncate 重新设置自增列, 计数器归零
    • truncate 不会影响事务

delete 删除表后不会改变自动增量

(了解即可)delete表后,重启数据库

  • INNODB 自增会从1开始
  • MYISAM 继续从上一个增量开始

4 DQL查询数据(最重点)

4.1 DQL

(data query language 数据查询语言)

年级表代码

-- 创建年级表
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade`(
	`gradeid` INT(11) NOT NULL AUTO_INCREMENT COMMENT '年级编号',
	`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
	PRIMARY KEY (`gradeid`)
) ENGINE=INNODB AUTO_INCREMENT = 6 DEFAULT CHARSET = utf8;

-- 创建科目表
DROP TABLE IF EXISTS `subject`;
CREATE TABLE `subject`(
	`subjectno`INT(11) NOT NULL AUTO_INCREMENT COMMENT '课程编号',
    `subjectname` VARCHAR(50) DEFAULT NULL COMMENT '课程名称',
    `classhour` INT(4) DEFAULT NULL COMMENT '学时',
    `gradeid` INT(4) DEFAULT NULL COMMENT '年级编号',
    PRIMARY KEY (`subjectno`)
)ENGINE = INNODB AUTO_INCREMENT = 19 DEFAULT CHARSET = utf8;

-- 创建成绩表
DROP TABLE IF EXISTS `result`;
CREATE TABLE `result`(
	`studentno` INT(4) NOT NULL COMMENT '学号',
    `subjectno` INT(4) NOT NULL COMMENT '课程编号',
    `examdate` DATETIME NOT NULL COMMENT '考试日期',
    `studentresult` INT (4) NOT NULL COMMENT '考试成绩',
    KEY `subjectno` (`subjectno`)
)ENGINE = INNODB DEFAULT CHARSET = utf8;


INSERT INTO `grade`(`GradeID`, `GradeName`)
VALUES (1, '大一'),
       (2, '大二'),
       (3, '大三'),
       (4, '大四'),
       (5, '预科班');
       
INSERT INTO `result`(`StudentNo`, `SubjectNo`, `ExamDate`, `StudentResult`)
VALUES (1000, 1, '2013-11-11 16:00:00', 85),
       (1000, 2, '2013-11-12 16:00:00', 70),
       (1000, 3, '2013-11-11 09:00:00', 68),
       (1000, 4, '2013-11-13 16:00:00', 98),
       (
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值