当前位置: 移动技术网 > IT编程>数据库>Mysql > Mysql(1)

Mysql(1)

2020年07月14日  | 移动技术网IT编程  | 我要评论

一、列的数据类型

二、字段属性

三、数据表

[ ]里边的是可选属性

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

u=4290522242,3737623717&fm=26&gp=0.jpg (966Ã760)

第一种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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网