本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于DDL、DML、DQL的相关内容,包括了操作数据表、操作数据库、简单查询数据等等内容,下面一起来看一下,希望对大家有帮助。
|
本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于DDL、DML、DQL的相关内容,包括了操作数据表、操作数据库、简单查询数据等等内容,下面一起来看一下,希望对大家有帮助。
推荐学习:mysql视频教程 数据库相关概念什么是数据库
数据库的优点
常见的数据库常见的关系型数据库管理系统
常用数据库:Java开发应用程序主要使用的数据库:MySQL(5.6)、Oracle、DB2。(原因:开源,免费,功能足够强大,足以应付web开发) 关系型数据库在开发软件的时候,软件中的数据之间必然会有一定的关系存在。比如商品和客户之间的关系,一个客户是可以买多种商品,而一种商品是可以被多个客户来购买的。 需要把这些数据保存在数据库中,同时也要维护数据之间的关系,这时就可以直接使用上述的那些数据库。而上述的所有数据库都属于关系型数据库。 关系型数据:设计数据库的时候,需要使用E-R实体关系图来描述。
需求: 使用E-R图描述 客户、商品、订单之间的关系 MySQL数据库SQL简介什么是SQL
SQL特点
SQL作用
SQL通用语法
SQL分类
MySQL 目录结构
MySQL 数据库连接MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。 启动数据库服务:在打开dos窗口中输入 mysql -uroot -p123456
mysql -h 127.0.0.1 -P 3306 -u root -p 123456
退出: SQL_DDL_操作数据库DDL_创建和查看数据库创建数据库: 1.直接创建数据库 create database 数据库名; 2.判断数据库是否存在并创建(如果不存在,则创建) create database if not exists 数据库名; 3.创建数据库并指定字符集(编码表) create database 数据库名 character set 字符集; 说明:字符集就是编码表名,在mysql中utf8 查看数据库: 1.查看所有数据库 show databases; 2.查看某个数据库的定义信息 show create database 数据库名; 3.查看当前使用的数据库 select database(); 使用和切换数据库: use 数据库名; DDL_修改和删除数据库修改数据库: 1.修改数据库字符集 -- alter 表示修改alter database 数据库名 default character set 新字符集; 注意:如果修改数据库指定的编码表是utf8,记住不能写utf-8 Java中的常用编码对应mysql数据库中的编码
删除数据库: 1.直接删除 -- drop 删除数据库drop database 数据库名; 2.删除数据库时判断是否存在(如果存在,则删除) drop database if exists 数据库名; SQL_DDL_操作数据表DDL_数据库约束约束的概念:
约束的分类:
MySQL5.7不支持检查约束,但写入语句不会报错,MySQL8.0版本支持检查约束 非空约束 非空约束用于保证列中所有数据不能有NULL值 1.建表时添加约束 -- 创建表时添加非空约束create table 表名(
列名 数据类型 not null,
...);2.建完表之后添加约束 -- 建完表之后添加约束alter table 表名 modify 字段名 数据类型 not null; 3.删除约束 alter table 表名 modify 字段名 数据类型; 唯一约束 唯一约束用于保证列中所有数据各不相同 1.创建表时添加唯一约束 -- 方式1create table 表名(
字段名 数据类型 UNIQUE,
...);-- 方式2create table 表名(
字段名 数据类型,
...
[CONSTRAINT] [约束名称] UNIQUE(列名));2.建完表之后添加唯一约束 -- 建完表后添加唯一约束alter table 表名 modify 字段名 数据类型 UNIQUE; 3.删除唯一约束 alter table 表名 drop index 字段名; 主键约束
1.创建表时添加主键约束 create table 表名(
字段名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
-- [AUTO_INCREMENT] 当不指定值时自动增长
...);create table 表名(
列名 数据类型,
[CONSTRAINT] [约束名称] PRIMARY KEY(列名))2.建完表之后添加主键约束 alter table 表名 add PRIMARY KEY(字段名); 3.删除主键约束 alter table 表名 drop PRIMARY KEY; 默认约束 保存数据时,未指定值则采用默认值 1.创建表时添加默认约束 create table 表名(
字段名 数据类型 default 默认值,
...);2.建完表后添加默认约束 alter table 表名 alter 列名 set DEFAULT 默认值; 3.删除约束 alter table 表名 alter 列名 drop DEFAULT; DDL_创建和查看和表前提 :创建数据库 -- 创建数据库create database db1;-- 使用数据库use db1; 创建表: create table 表名(
字段名1 字段类型 约束条件,
字段名2 字段类型 约束条件,
...
字段名n 字段类型 约束条件);-- 注意:最后一个字段不加逗号创建一个表结构和其他表结构相同的表 create table 表名 like 其他表名; MySQL中常用的数据类型 设计一张学生表,要求如下:
create table students(
id int primary key auto_increment,
name varchar(10) not null unique,
sex enum('男','女') default null,
class varchar(10),
starttime date,
math int default 60,
english int);
1.查看某个数据库中所有的表 show tables; 2.查看表结构 desc 表名; 3.查看创建表的SQL语句 show create table 表名;-- 根据该语句查看上面案列的建表sql语句show create table students;
DDL_删除表和修改表的结构删除表: 1.直接删除 drop table 表名; 2.删除表时判断表是否存在(如果存在,则删除) drop table if exists 表名; 修改表: 1.修改表名 alter table 旧表名 rename to 新表名; 2.向表中添加一个字段(一列) alter table 表名 add 字段名 数据类型; 3.修改表中字段数据类型 alter table 表名 modify 字段名 新的数据类型; 4.修改表中字段名(列名)和数据类型 alter table 表名 change 字段名 新的字段名 新的数据类型; 5.删除表中字段(列) alter table 表名 drop 字段名; SQL_DML_操作数据库DML_插入表数据1.插入全部字段 -- 全部字段写出来insert into 表名(字段1,字段2,...) values(值1,值2,...); -- 插入全部不写字段名insert into 表名 values(值1,值2,...); -- 给案例中的表插入数据insert into students(id,name,sex,class,starttime,math,english) values(1,'张三','男','高三1班','2022-03-02',80,69); insert into students values(2,'李四','女','高三2班','2022-03-01',70,80);
-- 插入姓名,班级,入学时间,英语成绩-- id默认增长,性别默认null,数学默认60
insert into students(name,class,starttime,english) values('王五','高三3班','2022-03-02',78);
3.批量插入数据 insert into 表名 values(字段值1, 字段值2...),(字段值1, 字段值2...),(字段值1, 字段值2...); 没有添加数据的字段会使用NULL
DML_更新表数据1.不带条件修改数据 update 表名 set 字段名=新的值,字段名=新的值,...; -- 注意:不带条件的修改是将数据表中的整列都做修改 -- 修改students表中math的值为90update students set math=90;
update 表名 set 字段名=新的值,字段名=新的值,... where 条件; -- 修改students表中王五的性别为男,数学成绩设置为70update students set sex='男',math=70 where name='王五';
UPDATE: 表示修改记录 SET: 要改哪个字段WHERE: 设置条件 4.注意
DML_删除表记录1.不带条件删除 DELETE -- 删除记录DELETE FROM 表名;表还在,可以操作,只是删除数据。 2.带条件删除 DELETE FROM 表名 WHERE 条件;-- 删除学生表中的王五的信息DELETE FROM students WHERE name='王五';
truncate table 表名; 4.truncate和delete区别
SQL_DQL_ 简单查询数据准备一张学生表,在这张表上进行查询操作 DQL_基础查询1.查询所有数据 select * from 表名; -- 查询学生表中所有的数据select * from students;
select 字段名1,字段名2,... from 表名; -- 查询姓名和班级这两个字段select name,class from students;
select 字段名1 as 别名1,字段名2 as 别名2 from 表名; -- 查询students表中的字段并设置别名select id as 学号,name as 姓名,sex as 性别,class as 班级 , starttime as 入学时间 from students;
-- DISTINCT 去重复-- 查询班级字段结果不出现重复的select DISTINCT class from students;
DQL_条件查询1.条件查询语法 select 字段名1,字段名2,... where 条件列表; 2.条件运算符
3.查询数学成绩大于80并且性别为男的学生 -- 两个条件同时满足select * from students where math > 80 and sex='男';
-- BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾 select * from students where english between 60 and 80; select * from students where english>=60 && english<=80;
-- in里面的每个数据都会作为一次条件,只要满足条件的就会显示select * from students where id in (1,2,3);
DQL_模糊查询
select * from 表名 where 字段名 like '通配字符'; MySQL通配符有两个:
1.查找名字中以孙开头的学生 -- '孙%'表示孙后面有任意个字符select * from students where name like '孙%';
-- '孙_'表示孙后面只能有一个字符select * from students where name like '孙_';
DQL_查询排序通过 -- ASC:升序排序(默认)-- DESC:降序排序select 字段 from 表名 order by 排序字段 [ASC|DESC]; 1.单列排序 -- 查询学生的数学成绩按照升序排序select * from students order by math ASC;
-- 查询数学成绩升序的基础上,英语成绩降序-- 组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。 select * from students order by math ASC,english DESC;
DQL_ 聚合函数之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值;另外聚合函数会忽略空值,对于 1.五个聚合函数
2.聚合函数语法 select 聚合函数名(列名) from 表名; 注意:null 值不参与所有聚合函数运算 3.查询学生总数 select count(id) from students;-- 通常使用select count(*) from students;
-- 查询数学最高分和英语最低分select max(math),min(english) from students;
-- 求该表数学总分和平均值select sum(math),avg(math) from students;
-- ifnull(列名,默认值)函数表示判断该列是否为空值,如果为null,返回默认值,如果不为空,返回实际值ifnull(math,60); -- 如果数学成绩为null时,返回60,如果不为null,就返回实际值 DQL_分组查询分组: 按照某一列或者某几列。把相同的数据,进行合并输出。 1.注意
2.查询各个班级的数学成绩总和 -- 查询每个班的数学成绩总和select class,sum(math) from students group by class;
having必须和group by 一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,但是在having后面是可以使用聚合函数的。 -- 查询每个班数学总成绩大于300分的班级并显示总成绩 select class,sum(math) from students group by class having sum(math)>300;
DQL_分页查询1.应用和概念 比如我们登录京东,淘宝,返回的商品信息可能有几万条,不是一次全部显示出来。是一页显示固定的条数。假设我们一每页显示5条记录的方式来分页。 -- 起始索引:从0开始,索引是0表示数据表第一行数据select 字段列表 from 表名 limit 起始索引,查询条目数; 计算公式:起始索引=(当前页码-1)* 每页显示的条数
2.分页查询 -- 查询学生表中数据,每四条数据为一页 3.返回前几条或者中间某几行数据 -- 2表示分页查询的索引,对应数据表是第3行数据,4表示每页显示4条数据 -- 查询从第三行数据开始查询之后的四条数据 select * from students limit 2,4;
SELECT 字段名(5) FROM 表名(1) WHERE 条件(2) GROUP BY 分组列名(3) HAVING 条件(4) ORDER BY 排序列名(6) LIMIT 跳过行数, 返回行数(7); 执行顺序:1234567 顺序:1234567 推荐学习:mysql视频教程 以上就是MySQL学习之DDL、DML及DQL基础总结的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |
