Mysql(1)
一、列的数据类型
二、字段属性
三、数据表
[ ]里边的是可选属性
1.格式
2.常用命令
3.数据表类型
MYISAM 和 INNODB 区别
4.修改和删除数据表字段
--修改表名(Alter table 旧表名 RENAME AS 新表名)
Alter TABLE student RENAME AS student1
--增加表的字段(Alter table 表名 ADD 字段名 列属性)
Alter TABLE student ADD id INT(11)
--修改表的字段(重命名,修改约束)
Alter TABLE student CHANGE id id1 INT(11) --重命名,不能修改字段类型和约束
Alter TABLE student MODIFY id VARCHAR(20) --修改约束,不能修改字段名
--删除表的字段(ALTER TABLE student DROP 字段名)
ALTER TABLE student DROP id1
--删除表(DROP TABLE 表名)
DROP TABLE IF EXISTS student --所有的创建和删除尽量加上判断
四、Mysql数据管理*
1.外键(了解)
创建方式一
删除有外键关系的表时,必须要先删除引用别人的表(从表),在删除被引用的表(主表)
创建方式二
ALTER TABLE 从表名
ADD CONSTRAINT 约束名 FOREIGN KEY (作为外键的列) REFERENCES 主表名(哪个列)
以上都是物理外键操作,数据库级别的外键,不建议使用(要想删一个表还要看他有没有别的表跟他关联,避免数据库过多造成看困扰)
2.DML语言(全部记住)
数据库的意义:数据存储和管理
DML语言:数据操作语言
增(Insert)
--字段与值一一对应
--插入一列值
insert into 表名([字段名1,字段名2,...]) values ('值1','值2',...)
--插入多列值
insert into 表名([字段名1,字段名2,...]) values ('值1','值2',...),('值1','值2',...)
删(Delete、Truncate)
DELETE命令
--删除表所有数据
DELETE FORM 表名
--删除符合条件的数据
DELETE FORM 表名 WHERE ...(省略各种条件语句)
TRUNCATE命令
--清空表
TRUNCATE 表名
两个命令的区别
相同点:都能删除数据,都不会删除表结构
不同:TRUNCATE :重新设置 自增列 计数器归零,不会影响事务
改(Update)
where条件
--1.不带where的修改,会修改表中所有数据
格式:UPDATE TABLE 表名 SET 字段名=修改的值
UPDATE student SET `name`=5
--2.带where的修改,会修改表中指定数据
格式:UPDATE TABLE 表名 SET 字段名=修改的值 WHERE 字段名=值
--修改一个属性
UPDATE student SET `name`=5 WHERE id=1
--修改多个属性(逗号隔开)
UPDATE student SET `name`=5,`sex`='男' WHERE `id`=1
五、DQL语言
1.查询(SELECT)
--查询全部
SELECT FROM 表名
--查询指定字段
SELECT 查询的列 FROM 表名
SELECT `id` FROM student
--给字段和表起别名
SELECT 查询的列 AS 别名 FROM 表名 AS别名
SELECT `id` AS `编号` FROM student AS s
--函数 Concat(a,b) 拼接字符串
SELECT CONCAT('想显示的字符串',字段名)AS '别名' FROM 表名
SELECT CONCAT('name:',`name`)AS '别名' FROM student
2.去重
--去除SELECT语句中重复的数据,结果只显示一条
SELECT DISTINCT 字段名 FROM 条件
3.数据库表达式
数据库中的表达式:文本值,列,Null,函数,计算表达式,系统变量....
格式:SELECT 表达式 FROM 表名
--查询数据库版本(可以理解为函数)
SELECT VERSION()
--计算(表达式)
SELECT 4*26-1 AS 计算结果
--查询自增步长(变量)
SELECT @@auto_increment_increment
--指定的字段运算(对那个字段的所有数据进行操作)
SELECT `name`*2 AS newname FROM student
SELECT `name`-2 AS newname FROM student
SELECT `name`/2 AS newname FROM student
SELECT `name`%2 AS newname FROM student
......
4.*WHERE条件子句
逻辑运算符
--逻辑与
SELECT `studentno`,`studentresult` FROM result
WHERE `studentresult` BETWEEN 50 AND 80 --[50,80]
等价于
SELECT `studentno`,`studentresult` FROM result
WHERE `studentresult` = 50 AND `studentresult` = 80
--逻辑或
SELECT `studentno`,`studentresult` FROM result
WHERE `studentresult`=50 OR `studentresult`=80
--逻辑非
SELECT `studentno`,`studentresult` FROM result
WHERE NOT `studentresult` BETWEEN 50 AND 80
等价于
SELECT `studentno`,`studentresult` FROM result
WHERE `studentresult` != 50 AND `studentresult` != 80
模糊查询:比较运算符
一般like结合 %(0到任意个字符)和 _(1个字符)使用
--like使用
SELECT *FROM `subject`
WHERE `subjectname` LIKE '高%'
--In使用
SELECT *FROM `subject`
WHERE `subjectno` IN(1,2,3,4)
--括号里边是具体的值,不能使用%,_的模糊查询
5.联表查询
七种JOIN理论
第一种INNER JOIN
--查询student表的studentno,studentname和result表的studentresult
SELECT s.`studentno`,`studentname`,`studentresult`
FROM `student` AS s
INNER JOIN `result` AS r
WHERE s.`studentno`=r.`studentno`
当要查询的数据在student表中找不到时候,就回去result表中查找
第二种RIGHT JOIN
--查询student表的studentno,studentname和result表的result
SELECT s.`studentno`,`studentname`,`studentresult`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.`studentno`=r.`studentno`
第三种LEFT JOIN
--查询student表的studentno,studentname和result表的result
SELECT s.`studentno`,`studentname`,`studentresult`
FROM `student` AS s
LEFT JOIN `result` AS r
ON s.`studentno`=r.`studentno`
这里出现了一个赵强的学生,是因为我在student表中有这个人,而result表中没有这个人加上用的是LEFT JOIN ,所以查询的时候呀,会返回result表中没有的值
注意:JOIN ON是一个语句,可以和WHERE一起使用,ON是判断语句
--查询三个表 student的studentno,studentname | result表的studentresult | subject表的subjectname
SELECT s.`studentno`,`studentname`,`studentresult`,`subjectname`
FROM `student` AS s
RIGHT JOIN `result` AS r
ON s.`studentno`=r.`studentno`
INNER JOIN `subject` sub
ON sub.`subjectno`=r.`subjectno`
6.自连接
自己和自己的表连接,核心:一张表拆为两张一样的表
现在有一张表如图
对它进行自查询
先拆分成两张表,根据pid进行分类,pid=1的为父类
就能得到这样的父子对应图
本文地址:https://blog.csdn.net/weixin_45916005/article/details/107303982
上一篇: set—ES6的新数据结构
下一篇: 红魔6r对比realme GT哪个好?