当前位置: 首页 > news >正文

MySql语言操作数据库---MySql引擎,数据表,约束,基本查询,条件查询

数据库引擎

作用:引擎决定了数据是如何存在于数据库中的.不同引擎存储结构和特征是不同的.
常见引擎: InnoDB,MyISAM,Memory

Mysql引擎操作:
查看支持的引擎: show engines;
给表设置引擎:
create table student2(name varchar(20),age int
)engine = 'InnoDB';
-- todo 展示所有的引擎
show engines ;

清空表数据

方式1: delete from 表名;
方式2: truncate [table] 表名;

-- todo ----清空表数据的两种方式-----------
# 例如,使用命令完成:
# (1) 分别创建student、teacher表,字段包含:整型自动增长、主键的id编号、字符型的name姓名、整型的age年龄:
create table student(id int primary key auto_increment,name varchar(20),age int
);
create table teacher(id int primary key auto_increment,name varchar(20),age int
);# (2) 分别给两个表添加两条数据:
insert into student values (1,'张三',18);
insert into teacher values (1,'李四',19);# (3)分别使用两种删除方式清空数据;
delete from teacher;
truncate student;
# (4)再插入一条新数据并查询,对比数据并观察id编号效果。
insert into student values (null,'张三',18);
insert into teacher values (null,'李四',19);

DataGrip创建sql文件

==方式1: 创建由datagrip自己维护路径的sql文件.==

==方式2: 关联外部指定的目录或者文件==

mysql的约束

主键约束: 非空且唯一 (mysql推荐一个表必须有一个主键) 
非空约束: 数据为空插入失败
唯一约束: 数据重复插入失败
自动增长约束: 不能独立使用.必须依附于键约束的后边.
外键约束: 来关联另一张表.从而对另一张表有约束作用.

主键和自动增长约束

-- tode 主键约束---------------------------------
# 例如,使用命令完成:
# (1)在MySQL中新建一个数据库班级db_game,并设定编码为utf8;
create database db_game character set utf8;
use db_game;# (2) 在库中创建游戏表game1,有4个字段:id编号、first_name曾用名、last_name姓名、skill技能;
# (3) 在创建表时,给id编号添加主键约束:
create table game1(id int primary key ,first_name varchar(20),last_name varchar(20),skill varchar(20)
);# (4) 当建表成功后,使用desc命令查看表结构;
desc game1;# (5) 注意:当id这一列在Key字段对应的值为PRI,则表示主键约束已经添加成功。-- 验证主键约束特性:非空,唯一
insert into game1 values (null,'张','三','唱');         --  Column 'id' cannot be null
insert into game1 values (1,'李','四','rap');
insert into game1 values (1,'王','五','篮球');         -- Duplicate entry '1' for key 'PRIMARY'-- todo 不常用[了解]: 修改表添加主键
create table game2(id int,first_name varchar(20),last_name varchar(20),skill varchar(20)
);alter table game2 add primary key (id);desc db_game.game2;-- todo [了解] 如何删除主键
# 例如,使用命令完成:
# (1)先在库中创建游戏表game3,有4个字段:id编号[主键约束]、first_name曾用名、last_name姓名、skill技能;
create table game3(id int primary key,first_name varchar(20),last_name varchar(20),skill varchar(20)
);
# (2)删除库中的游戏表game3的主键约束;
alter table game3 drop primary key;
# (3)当删除成功后,使用desc命令查看表结构,观察结果;
desc db_game.game3;
# (4)思考:若要给id编号设定可以为空值,该怎么做呢?
alter table game3 modify id int;-- todo  自动增长约束-- 1.列的类型int,2.只能在主键或者外键后边使用自动增长
# 例如,使用命令完成:
# (1)在库中创建游戏表game4,有4个字段:id编号、first_name曾姓名、last_name姓名、skill技能;
# (2)在创建表时,给id编号添加主键约束,整型且自动增长;
create table game4(id int primary key auto_increment,first_name varchar(20),last_name varchar(20),skill varchar(20)
);# (3)给游戏表game4加2条数据,且都不添加id值,查看数据结果;
insert into game4 (first_name, last_name, skill) values ('李','名','蛤蟆功');
insert into game4 (first_name, last_name, skill) values ('张','武','九阴白骨爪');
select * from game4;
# (4)思考1:当添加数据时,给主键id传递null值,效果如何?
insert into game4 (id,first_name, last_name, skill) values (null,'老','六','六脉神剑');
select * from game4;
# (5)思考2:当添加一条设定id = 10的数据后,再不给主键id传值并添加一条新数据,效果如何?
insert into game4 (id,first_name, last_name, skill) values (10,'老','铁','666');   -- 4 / 11
insert into game4 (first_name, last_name, skill) values ('老','八','发发发');
select * from game4;-- 测试删除主键
alter table game4 drop primary key;     -- 删除失败--有自动增长不允许删除主键.
alter table game4 modify id int;        -- 删除自动增长约束.
desc game4;

非空约束

-- todo 非空约束----------------------
# 例如,使用命令完成:
# (1)在库中创建游戏表game5,有4个字段:id编号、first_name曾姓名、last_name姓名、skill技能;
# (2)在创建表时,给id编号添加主键约束、整型且自动增长;
# (3)给last_name姓名字段设定为非空约束;
create table game5(id int primary key auto_increment,first_name varchar(20),last_name varchar(20) not null ,skill varchar(20)
);# (4)思考1:在操作游戏表game5时,不给last_name姓名字段传递数值,效果如何?
insert into game5 (id,first_name, skill) values (1,'八','发发发');  #  Field 'last_name' doesn't have a default value
# (5)思考2:若给last_name姓名字段传递null值,效果又如何?
insert into game5 (id,first_name, skill) values (1,'八','发发发'); -- Column 'last_name' cannot be null

唯一约束

-- todo  唯一约束------unique-------------
# 例如,使用命令完成:
# (1)在库中创建游戏表game6,有4个字段:id编号、first_name曾姓名、last_name姓名、skill技能;
# (2)在创建表时,给id编号添加主键约束、整型且自动增长;
# (3)给last_name字段设定为唯一约束;
create table game6(id int primary key auto_increment,first_name varchar(20),last_name varchar(20)  unique ,skill varchar(20)
);
drop table game6;
# (4)思考:在操作游戏表game6时,先后给last_name姓名字段传递两个一样的值,效果如何?
insert into game6 values (1,'老','八','发发发');
insert into game6 values (2,'小','八','发发发');#Duplicate entry '八' for key 'last_name'

默认值约束

-- todo 默认值约束------default 值-----------
# 例如,使用命令完成:
# (1)在库中创建游戏表game7,有4个字段:id编号、first_name曾姓名、last_name姓名、skill技能;
# (2)在创建表时,给id编号添加主键约束、整型且自动增长;
# (3)给skill字段设定为默认值约束,设定为轻功水上漂~;
create table game7(id int primary key auto_increment,first_name varchar(20),last_name varchar(20) ,skill varchar(20) default '轻功水上漂'
);
# (4)思考1:添加一条数据,并给字段skill技能传递值,观察效果;
insert into game7 values (1,'李','名','暴风星云裂');
# (5)思考2:再添加一条数据,不给字段skill技能传递数据值,观察效果。
insert into game7 (id,first_name,last_name) values (2,'高','明');
select * from game7;

DQL查询准备数据

-- todo DQL 查询语句 select
-- 准备数据---
# 例如:
# (1)先来创建一个数据库db_product1,设定编码为utf8;
create database db_product1 character set utf8;
use db_product1;# (2)在库中创建一个product表,字段有pid商品编号、pname商品名称、price商品价格、category_id商品分类;
create table product(pid int ,pname varchar(20),price int,category_id varchar(20)
);
drop table product;
# (3)当成功添加数据内容后,查看数据结果。
insert into product values
(1, '联想', 5000, 'c001'),
(2, '海尔', 3000, 'c001'),
(3, '雷神', 5000, 'c001'),
(4,'杰克琼斯',800, 'c002'),
(5, '真维斯', 200,'c002'),
(6,'花花公子',440,'c002'),
(7,'劲霸',2000,'c002'),
(8,'香奈儿',800,'c003'),
(9,'相宜本草',200,'c003'),
(10,'面霸',5,'c003'),
(11,'好想你枣',56,'c004'),
(12,'香飘飘奶茶',1,'c005'),
(13,'海澜之家',1000,'c002');

基本查询

# 例如,使用命令完成:
# (1)在数据库班级db_product1中,查询商品表的所有数据信息;
select * from product;
# (2)查询商品表的所有名称信息;
select pname from product;
# (3)查询商品名称、价格、分类的所有结果;
select pname,price,category_id from product;
# (4)将所有的商品名称、价格+20进行显示出结果;
select pname,price+20 from product;
# (5)思考:如何去除重复的价格值并显示所有价格信息?
select distinct price from product;                      -- 针对price去重
select distinct price,category_id from product;          -- 针对price+category_id去重

条件查询

-- todo -- 条件查询-------where 条件-----------------
# 例如,使用命令完成:
# (1)在操作商品表时,查询商品表中的所有商品信息;
select * from product;
# (2)查询商品名称为"花花公子"的商品所有信息;
select * from product where pname='花花公子';# select * from product where pname="花花公子";  -- 不能使用双引号
# select * from product where pname=='花花公子'; -- 不能使用==去对比.
# (3)查询价格为800的商品信息;
select * from product where price=800;
# (4)查询价格不是800的所有商品信息;
select * from product where price !=800;
# (5)查询商品价格大于60元的所有商品信息;
select * from product where price >=60;
# (6)查询商品价格小于等于800元的所有商品信息。
select * from product where price <=800;

逻辑查询

-- todo 逻辑查询--- 多个条件
# 例如,使用命令完成:
# (1)查询商品价格在200到1000之间所有商品信息;
select * from product where price >=200 and price<=1000;
# (2)查询商品价格是200或800的所有商品信息;
select * from product where price =200 and price=800;
# (3)查询价格不是800的所有商品;
select * from product where price !=800 ;
# (4)思考:如果要查询不是200或800的所有商品信息,该怎么做呢?
select * from product where price not in (200,800);
select * from product where not (price =200 or price=800);

范围查询

-- todo 范围查询---------in,between start and end
# 例如,使用命令完成:
# (1)在操作商品表时,查询商品价格是200或800的所有商品信息;
select * from product where price = 800 or price = 200;
select * from product where price in (200,800);
# (2)查询商品价格在200-1000之间所有商品信息;
select * from product where price >=200 and price<=1000;
# (3)思考:有其他方法来完成查询商品价格在200-1000之间所有商品信息吗?
select * from product where price between 200 and 1000;

相关文章:

  • 光耦知识分享 | 浅析施密特触发器光耦的主要特点
  • golang 反射的介绍和使用
  • 别人都在百度云智大会上吹,我就说点别的……
  • Linux进程:fork函数深度剖析
  • “天翼云息壤杯”高校AI大赛开启:国云的一场“造林”计划
  • 【Vite】如何阻止Vite对较小图片的默认处理
  • k8s pv(PersistentVolume) 状态含义
  • 连锁收银系统的五大功能 选择开源收银系统三要素
  • 【机器学习(十二)】机器学习回归案例之二手汽车价格预测—XGBoost回归算法—Sentosa_DSML社区版
  • 生成式人工智能在软件开发中的角色
  • SpringBoot开发——使用Hutool工具包处理日期时间详解
  • Cocos Creator 剪裁精灵图片方法记录(7)
  • C++20 std::format
  • Unity中Mesh使用MeshTopology.Lines模式绘制线条及MeshTopology.Quads模式绘制网格参考
  • C++学习笔记----8、掌握类与对象(一)---- 对象中的动态内存分配(5)
  • ----------
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 2019年如何成为全栈工程师?
  • gitlab-ci配置详解(一)
  • java 多线程基础, 我觉得还是有必要看看的
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • SpriteKit 技巧之添加背景图片
  • SSH 免密登录
  • 大数据与云计算学习:数据分析(二)
  • 机器学习 vs. 深度学习
  • 前嗅ForeSpider中数据浏览界面介绍
  • 实战|智能家居行业移动应用性能分析
  • 推荐一个React的管理后台框架
  • 阿里云移动端播放器高级功能介绍
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (1)Nginx简介和安装教程
  • (9)STL算法之逆转旋转
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (k8s)kubernetes集群基于Containerd部署
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • .ai域名是什么后缀?
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core 笔试1
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET企业级应用架构设计系列之技术选型
  • .NET实现之(自动更新)
  • /*在DataTable中更新、删除数据*/
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • [ A*实现 ] C++,矩阵地图