sql知识
1.关联式资料库存储形式
以表格形式存储,然后表格之间会有关联。即表格是数据存储的单元。
表格的描述:行row为一笔资料。列column为一个表格的属性。
每个表格里至少需要一个属性作为主键。
主键:唯一确定一笔资料的标识。我们不想一张表里出现两笔同样的数据。
外键:一张表和另外一张表有关系的属性。A表的数据范畴和B的数据范畴有关联时就需要外键。
这里以公司的员工和部门数据为例。
以员工id为主键来唯一确定一条员工的资料。员工表和部门表有所属关系。然后就在员工表后面再加一条部门id属性作为外键。
1.1外键性质
1.注意:一张表的外键必须另一张表的主键。
原因是在这个所属关系里,如果这个外键它不是主键,就意味着这个外键在另外一张表里会有两个该条属性对应的资料。那么这个外键到底对应哪条资料呢。会出现对应歧义。
2.外键对应的主键可以是自己表的主键。只要你心里清楚这个对应主键的关系所代表的含义。这里的一条员工资料外键对应的主键表示上下级关系。(我觉得应该先给资料想关系,然后再想这个外键对应的这个主键是否合法。)
1.2主键性质
如果一笔资料以一个属性作为主键不能唯一确定该条资料,那么就要新增属性为主键,直到可以唯一确定一条资料为止。额外的:mysql是数据库管理系统。当然需要语言来对数据/资料操纵。当然也包含了建表,以及基本的增删查改操作。
1.3资料库的创建、删除、所有资料库的显示
资料库关键字DATABASE。
创建资料库:CREATE DATABASE `name`; //一般把自己创建的资料库用反引号引起来,避免和关键字混淆
显示所有资料库:SHOW DATABASES
删除资料库:DROP DATABASE `name`
资料库创建好之后,就要根据你想要存储的资料去设计表格,表格创建出来。然后我们再把资料存入表格。
资料库创建流程:创建资料库;选择使用哪个资料库;设计表格;
1.4资料属性的数据类型
INT --整型
DECIMAL(m,n) --浮点数类型,m表示该浮点数一共几位。n表示浮点数小数点后有几位
VARCHAR(n) --字符串,n为字符串长度
BLOB --(Binary Large Object)图片,视频,档案型数据
DATE --格式为 'YYYY-MM-DD'的日期
TIMESTAMP --格式为 'YYYY-MM-DD HH:MM:SS' 的日期和时间。常用来记录某笔资料的更改时间
2.表格操纵
2.1表格创建
先使用USE `资料库名` ; //定位到哪个资料库,在哪个资料库里建表
创建表使用:CREAT TABEL `表名`;。
表的创建如下格式:
CREAT TABLE `表名` (
`属性1名` 属性类型,
`属性2名` 属性类型,
`属性3名` 属性类型,
PRIMARY KEY(`属性名`)
);
2.2查看表格属性
DESCRIBE `表名`; //只显示表的属性,不是显示整个表的资料
2.3删除表格
DROP TABLE `表名`
2.4表格增添属性和删除属性
增加属性:ALTER TABLE `表名` ADD 属性名 属性类型;删除属性:ALTER TABLE `表名` DROP COLUMN 属性名;
表格增加和删除属性是alter+table关键词开头。
3.资料操纵
3.1资料存入
用
INSERT INTO `表名` VALUES (属性1值, 属性2值, 属性3值); //注意:值类型的插入顺序一定要和建表的属性值的类型对应
往表中插入一笔资料。
也可以自己在参数列表里把插入的值打乱顺序,值最终会插到对应的属性上去。
INSERT INTO '表名' (`属性3`, `属性2`, `属性1`) VALUES (属性3值,属性2值,属性1值);
3.2属性的限制和约束
常见限制关键词:NOT NULL、UNIQUE、DEFAULT XX、AUTO_INCREMENT。在设计表格属性时,限制关键词写在属性的声明后面,即属性类型后面。
注意:学习时,只学习了VARCHAR类型属性的默认值设置,DEFAULT后面写上一个默认的字符串即可,作为默认填充的参数。
额外的:
1.按默认填充表的方式写入数据,对于未加not null限制的属性以及设置了默认值的属性也不可不填。否则编译会报不匹配错误。
3.2.1 AUTO_INCREMENT
适用于主键自增的限制。在自定义填充属性时,主键加了此限制后,我们可不填充主键。主键值会自动递增填充。
3.3资料修改和删除
为了练习更多sql语句,我们会使用SET SQL_SAFE_UPDATES = 0; 来关闭mysql的安全模式。等于1则是打开。安全模式是指UPDATE语句和DELETE语句未加WHERE条件会造成数据全部修改的情况。如果安全模式打开,资料修改或删除不加where则会报错,提示需要加where。
资料修改使用
UPDATE `表名`
SET `属性名` = 目标值
WHERE `属性名` = 查找值;
(WHERE `属性1` = 查找值 OR `属性2` = 查找值)
来修改目标表里的某列属性中的某个值。即查找是在某列属性里查找的。UPDATE关键词提供要更新的表名。像英语语法一样,先用SET关键词提供预期修改的结果。再是WHERE关键词定位到某个属性里要被更改的值。
where是一个查找条件。既然是条件,那么where就支持多个条件的‘且’和‘或’连接。比如在学生表里面生物和化学系统统称为生化。那么这时where条件里的属性就从major里找,属性值未生物或化学。要改的目标值就改为生化。
结果的设置同样也支持对不同属性里的值进行修改。由于这里不是条件的连接,所以多个属性值的修改用逗号隔开。比如根据某个学生id把他的名字和主修改掉。
如果UPDATE语句不写WHERE条件,mysql会把整个set定位的属性下的所有值都改成目标值。
资料删除使用
DELETE FROM `表名`
WHERE `属性名` = 属性值; -- 由于where是条件,这里可以写等号也可以写小于、大于等判断号。sql语句不等于是'<>'。
资料删除语句和资料修改语句对应。删除没有一个预期结果,只需要一个条件语句就可以了。
同样的,如果DELETE语句不加WHERE条件,整个表的所有资料都会被删除。
3.4资料的取得
由于数据库是后端嘛,资料的取得语句也许是给前端的程序用的。
资料取得用
SELECT 属性名, 属性名
FROM `表名`
+ 约束ORDER BY `属性名1`, `属性名2` ASC/DESC + LIMIT 数字,等约束。
或者
SELECT 属性名, 属性名
FROM `表名`
+条件WHERE `属性名` = 属性值
+ 约束ORDER BY `属性名1`, `属性名2` ASC/DESC + LIMIT 数字,等约束。
资料取得语句一般就是上面那样的结构。select * from中的 ‘*’ 就表示所有属性。ASC是ascension升序的缩写。DESC是descesion降序的缩写。asc和desc作为后缀放到属性名后面。oder by后面跟多个属性,先按在前面的属性排序,比如属性1值相同的情况下,再按属性2排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律