实验笔记

lab1

1 建表

step1

点击新建数据库,选中MySQL,点击下一步
Pasted image 20250315202208.png

step2

密码 Fuchen20050420
Pasted image 20250315202247.png
如果连接时,JDBC报错Public Key Retrieval is not allowed,可在mysql后加上 ?allowPublicKeyRetrieval=true
Pasted image 20250315202309.png

2 一些操作

关于script
新建

Pasted image 20250315202539.png

运行

Pasted image 20250315202636.png

可视化操作
设置主键

右键表-创建-约束-设置主键
Pasted image 20250315202836.png
Pasted image 20250315202926.png

设置外键

右键表-创建-外键
Pasted image 20250315203003.png
Pasted image 20250315203144.png

编辑数据

Alt+Insert 新建一行
Delete 删除一行数据
Pasted image 20250315203333.png

查看ER图

右键-查看图
Pasted image 20250315203544.png

语法

数据类型

Pasted image 20250315202701.png
Pasted image 20250315203223.png
Pasted image 20250315203232.png
Pasted image 20250315203243.png

语法
插入数据

Pasted image 20250315203453.png

主键约束
  • 用于约束该字段的值具有唯一性,至多有一个,可以没有,并且非空。比如学号、员工编号等。
  • 语法
    • 定义时:<字段名> <数据类型> PRIMARY KEY
    • 定义后:[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
    • 修改表:ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
  • tips
    如果主键有两列或更多列,则需设置联合主键,如设置st_id和name为联合主键:
    PRIMARY KEY(st_id,name)
外键约束
  • 外键约束是表的一个特殊字段,普遍会和主键约束一起使用,用来确保数据的一致性。
    对于两个具有关联关系的表来说,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
    所以外键就是用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性
  • 语法
    • 定义后:[CONSTRAINT <约束名>] FOREIGN KEY [<外键名>](字段名1,字段名2...) REFERENCES <主表名>(主键字段名)
  • tips
    表的外键关联的必须是主表的主键,且主键和外键的数据类型必须一致!
唯一约束
  • 唯一约束就是指所有记录中字段的值不能重复出现,比如给'id'字段加上唯一约束之后,每条记录的id值都是唯一的,不能出现重复的情况。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的,虽然只能有一个空值
  • 语法
    • 定义时:<字段名> <数据类型> UNIQUE
    • 修改表:ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
检查约束:
  • 检查约束是用来检查数据表中字段值有效性的一种约束。
  • 语法
    • 定义时:CHECK(<约束条件>)
    • 修改表:ALTER TABLE <表名> ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)
非空约束
  • 用来约束表中的字段不能为空。
  • 语法
    • 定义时:<字段名> <数据类型> NOT NULL
默认值约束
  • 默认值约束是当数据表中某个字段不输入值的时候,自动为其添加一个已经设置好的值。
  • 语法
    • 定义时:<字段名> <数据类型> DEFAULT <默认值>

本次实验只需掌握简单的SELECT FROM WHERE即可
通俗理解就是 SELECT <你要挑出来的列名及其函数变换> FROM <要查询的表> WHERE <查询条件>

数据查询语言DQL(Data Query Language)
  • 用于:关系运算后筛选取出数据
    SELECT 字段1, 字段2, ... (或者 *) (选择哪些数据列)
    FROM 表名[, 表名...] (从哪些表里选择)
    [JOIN 表名 ON 相等条件表达式] (这些表怎么连接)
    [WHERE 条件表达式] (得到的数据怎么筛选)
    [GROUP BY 字段] (需不需要对结果集进行分组)
    [HAVING 条件表达式] (筛选分组后通过聚合函数得到的值)
    [ORDER BY 字段]; (指定排序方式)
时间相关函数

NOW() 返回当前的日期和时间
CURDATE 返回当前的日期
CURTIME() 返回当前的时间
DATE() 提取日期或日期/时间表达式的日期部分
EXTRACT() 返回日期/时间按的单独部分
DATE_ADD() 给日期添加指定的时间间隔
DATE_SUB() 从日期减去指定的时间间隔
DATEDIFF() 返回两个日期之间的天数
DATE_FORMAT() 用不同的格式显示日期/时间
用于以不同的格式显示日期/时间数据,实现将日期转换为字符
DATE_FORMAT(date,format)
通过参数设置的方式可实现多样的日期格式转化:
例子: 输出结果
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') Dec 29 2008 11:45 PM
DATE_FORMAT(NOW(),'%m-%d-%Y') 12-29-2008
DATE_FORMAT(NOW(),'%d %b %y') 29 Dec 08
DATE_FORMAT(NOW(),'%d %b %Y %T:%f') 29 Dec 2008 16:25:46

聚合函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和

Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式

Built with MDFriday ❤️