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限制的属性以及设置了默认值的属性也不可不填。否则编译会报不匹配错误。
2.对于第一条两种情况,如果想不填,需要自己在存入资料时指定只存那些属性。需要在插入语句表名后面加括号指明只存入哪些属性。如:insert into `student` (`student_id`) values (1);。此时name属性未加任何限制,major属性设置了默认值。

 

  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排序。

 
posted @   小跳蚤幺幺幺  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示