欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Mysql(1)

程序员文章站 2022-03-08 22:23:58
一、列的数据类型二、字段属性*三、数据表[ ]里边的是可选属性1.格式2.常用命令3.数据表类型MYISAM 和 INNODB 区别...

Mysql(1)

一、列的数据类型

Mysql(1)

Mysql(1)

Mysql(1)

Mysql(1)

二、字段属性

Mysql(1)

Mysql(1)

三、数据表

[ ]里边的是可选属性

1.格式 

Mysql(1)

Mysql(1)

 2.常用命令

 Mysql(1)

 3.数据表类型

MYISAM 和 INNODB 区别

Mysql(1)

 Mysql(1)

 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.外键(了解)

创建方式一

Mysql(1)

删除有外键关系的表时,必须要先删除引用别人的表(从表),在删除被引用的表(主表) 

创建方式二

Mysql(1)

ALTER TABLE 从表名 
  ADD CONSTRAINT 约束名  FOREIGN KEY (作为外键的列) REFERENCES 主表名(哪个列)

Mysql(1)

以上都是物理外键操作,数据库级别的外键,不建议使用(要想删一个表还要看他有没有别的表跟他关联,避免数据库过多造成看困扰)

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条件

Mysql(1)

 

--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 

Mysql(1)

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条件子句

逻辑运算符

Mysql(1)

--逻辑与
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

模糊查询:比较运算符

Mysql(1)

一般like结合 %(0到任意个字符)和 _(1个字符)使用  

--like使用
SELECT *FROM `subject`
WHERE `subjectname` LIKE '高%'

Mysql(1)

--In使用 
SELECT *FROM `subject`
WHERE `subjectno` IN(1,2,3,4) 
--括号里边是具体的值,不能使用%,_的模糊查询

 Mysql(1)

5.联表查询

七种JOIN理论

Mysql(1)

Mysql(1)

第一种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表中查找 

Mysql(1)

 第二种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`

Mysql(1)

第三种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表中没有的值

Mysql(1)

注意: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`

Mysql(1)

6.自连接

自己和自己的表连接,核心:一张表拆为两张一样的表

现在有一张表如图Mysql(1)

对它进行自查询

先拆分成两张表,根据pid进行分类,pid=1的为父类

Mysql(1)

就能得到这样的父子对应图

Mysql(1)

Mysql(1)

Mysql(1)

 

 

 

本文地址:https://blog.csdn.net/weixin_45916005/article/details/107303982