1、配置Mysql
Docker配置Mysql可参考之前写的博文:https://blog.csdn.net/weixin_/article/details/
2、数据库操作
2.1 创建数据库
刷新数据库连接后,可以看到新创建的数据库 testsql
2.2 删除数据库
再次刷新数据库连接,testsql数据库已删除
3、表操作
3.1 创建表
右键表,选择设计表,可以看到表的字段类型和长度跟创建时是一样的。
3.2 删除表
把表userinfo删除后,刷新连接,表userinfo已删除
3.3 修改表
为了后面的测试,在把userinfo创建回来。
修改表达用alert语句
3.3.1 向表中添加新字段
再次查看设计表,看到新增的status字段,类型为int
3.3.2 删除表中的已有字段
再次查看表设计,email字段已被删除
3.3.3 修改表中已有字段的名称
modify不能用来修改字段名,change可以
再次查看表设计,username已经变成login_name。
后续不再截图,执行sql语句后,可自行打开设计表进行查看效果。
3.3.4 修改表中已有字段的类型
3.3.5 同时修改字段名和字段类型
3.3.6 修改字段在表中的显示位置
4、数据完整性约束-实体完整性
4.1 主键约束
4.1.1 已有表添加主键约束
每个表有且只能有一个主键约束。
语法:
- 关键字:primary key
- 添加约束语法:
alter table 表名 add constraint 约束名 primary key(字段名); - 约束名: PK_字段
4.1.2 删除表主键约束
语法:
删除约束语法:alter table 表名 drop primary key;
4.1.3 创建表指定主键
4.2 唯一约束
特点:不能重复,可以为空,可以添加多个
- 关键字:unique
- 添加约束语法:alter table 表名 add constraint 约束名 unique(字段名);
- 约束名: UQ_字段
- 删除约束语法:alter table 表名 drop key 约束名;
4.2.1 创建表指定唯一约束
4.2.2 已有表添加唯一约束
4.2.3 已有表删除唯一约束
4.3 主键自增
- 特点:从1开始,每次自身加1(在oracle中不能使用)
- 关键字: auto_increment
- 只能在创建表的时候添加主键自增的约束,而且必须是主键才可以添加
4.3.1 创建表添加主键约束且自增
4.3.2 删除表主键自增
5、数据完整性约束-域完整性
域完整性约束:保证字段的数据准确的
域完整性包括类型约束、非空约束、默认值
1)非空约束
- 特点:字段不允许为空
- 关键字: not null
2)默认值 - 特点:设置默认的值
- 关键字: default
6、数据完整性约束-引用完整性
一张表中通用列的取值必须参考另外一张表的主键
引用完整性有外键约束
1)外键约束
- 特点:设置外键的字段的取值只能参考另一张表中同一个字段的值
- 关键字: foreign key
- 添加外键约束的语法:
alter table 表名1 add constraint 约束名 foreign key(字段名) references 表名2(字段名) - 删除外键的语法:alter table 表名 drop foreign key 约束名;
注意:
1、主外键关联
2、外键关联字段名称可以不一样,但是类型必须一致
6.1 创建表使用外键约束
6.2 已有表添加外键约束
- 语法:alter table 表名1 add constraint 约束名 foreign key(字段名)
references 表名2(字段名) - 约束名: FK_字段名
6.3 删除表的外键约束
注:如果表A有外键约束,是表B中的主键。那么删除表B时,应该先删除表A的外键约束,才能删除表B。例如,要想删除classroom表,要先删除student表的外键约束,才能删掉classroom表。
7、增删改查Sql
7.1 insert插入数据
语法:insert into 表名[(字段名….)] values(值….)
示例1:
示例2:
当两个表结构完全相同时,将一个表中的数据插入到另一个表中
7.2 删除表中满足条件的数据
7.3 删除表中所有数据
7.4 truncate和delete的区别
-
truncate清空表的数据
-
语法:truncate table 表名;
-
注意:delete与truncate的区别是什么
-
delete是逐行删除,truncate是文件级别的清空
-
delete删除后,自增性会继续执行,不会重置
-
truncate删除后,自增性重置
7.5 Update更新已有数据
7.6 Select语句
8、Select语句
员工表:emp
部门表:
8.1 查询全部信息
8.2 查询部分列信息
8.3 查询列(表达式)
SELECT子句中的目标列,可以是属性列,也可以是表达式。比如,sal+sal*0.05就是一个计算表达式。还可以是函数、字符串常量等。例如,lower(ename)
8.4 查询列指定别名
8.5 DISTINCT去除重复行
清除数据重复的行,使用DISTINCT关键词。
注意是行。对查询结果进行去重,如果查询结果有很多列,所有列数据都完全相同时,才会被去重。
例如两条数据,(3000,SCOTT)和(3000,FORD)就不是重复的数据,不会被去重。
8.6 Where子句
查询满足条件的组,通过WHERE 子句。多个查询条件中间用AND或者OR连接。AND优先级大于OR
8.6.1 比较
8.6.2 范围查询:Between and
8.6.3 集合查询:IN、Not in
8.6.4 字符匹配:LIKE、NOT LIKE
字符匹配,使用LIKE和NOT LIKE,后跟匹配串,匹配串可以包含通配符。
任意长度的字符串(
长度可以为0)。例如a%b,代表以a开头,以b结尾任意长度的字符串。如ab,aaab, acb都满足_(下横线)代表任意
单个字符。a_b代表以a开头以b结尾的任意长度是3的字符串。
注:如果要查询的数据本身包含通配符,要用ESCAPE进行转义,如DB_Design
ESCAPE表示’‘是换码字符,这样匹配串‘’后面紧跟的’_’
就不是通配符,转义为普通的’_’字符
其他示例:以DB_开头的,倒数第3个字符是i的课程的Cno
8.6.5 空值查询:IS NULL、IS NOT NULL
8.6.6 多条件查询:AND、OR
8.7 ORDER BY子句
用处:根据查询结果的1个或者多个列属性进行升降序排列。默认升序ASC (ASC可省略)。降序为DESC
如果有空值,排序时次序按照具体系统实现来决定。例如升序,含空值的组最后显示。降序,含空值的组最先显示。不同系统实现可以不同,只要保持一致即可。
8.7.1 升序ASC
8.7.2 降序DESC
8.7.3 limit
limit m,n
m:开始的位置,索引值默认从0开始 n:取值的长度(个数)
limit 0, 100和limit 100等效。
9、聚集函数
当聚合函数有空值时,除COUNT(*)外都是跳过空值只处理非空值。因为COUNT是统计数据条数,所以组中某一列或者部分列有空值并不影响COUNT的统计结果。
注:只有SELECT子句和GROUP BY的HAVING子句才可以用聚集函数,WHERE子句不能使用。
SUM(DISTINCT/ALL 列名)统计表中Grade列值的
总和,必须是数值型
AVG(DISTINCT/ALL 列名)统计表中Grade列值的
平均值,必须是数值型
MAX(DISTINCT/ALL 列名)统计表中Grade列值的
最大值,必须是数值型
MIN(DISTINCT/ALL 列名)统计表中Grade列值的
最小值,必须是数值型
10、GROUP BY子句
将查询结果按某一列或者多列的值进行分组,值相等的为一组
WHERE 子句和HAVING短句的区别在于作用对象不同。WHERE作用于基本表和视图。HAVING短句作用于组,从中选择满足条件的组。having后面可接聚合函数,where后不能接聚合函数
注:如果没有对查询结果进行分组,那么聚集函数作用域是整个查询结果。如果有对分组,聚集函数作用域是每个分组。
例如:APP首页的底部有3个btn,事件名是一样的,参数值是btn的名字。查询今天APP底部btn的数据量。如果没有使用分组,那么将统计的是整个3个btn量的总和。采用分组,那将分别统计每个btn的量
共14个员工,3个来自部门No.10,5个来自部门No.20,30个来自No.30
10.1 where后不能接聚合函数
11、SQL关联查询
关联查询又叫做连接查询,常见的连接查询可分为:内连接、外连接、自然连接、自连接
11.1 内连接
没有主从表之分,只会将两个表中相等的值列出在结果集中。取的是两边相交的共同部分。
关键字:inner join …on
emp表中并没有在40编号的部门,都是编号10,20,30部门的员工。
dept表中有4个部门:10, 20, 30, 40
两张表相等的值就是,在10,20,30这3个部门的员工,共14个人。
11.2 左外连接
left join 前面的是主表,后面的是从表,会遍历主表中的每一个条记录
关键字:left join …on
从上面两个查询结果可以看出,谁是主表,谁是从表,查询结果的不同。
11.3 右外连接
主表、从表 right join 前面的是从表,后面的是主表,会遍历主表中的每一个条记录
关键词:right join … on
11.4 自连接
给当前表起不同的别名,从而实现自身的连接查询
例如:将emp表指定两个别名,分别是e和p。从e表中获取ename并且给列指定别名“员工”;从p表中获取ename并且给列指定别名“上级领导”。
11.5 子查询
嵌套查询,将一个查询结果当做另一个Navicat Premium 8.1.12激活查询的条件或结果集。子查询最接近思考方式,最自然的查询。
分类:单行子查询,多行子查询
今天的文章
Navicat Premium 8.1.12激活(MySql数据库增删改查操作)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/104258.html