什么是关系型数据库
关系型数据库模型是把复杂的数据结构归结成简单的二元关系,表与表之间的联系称为关系型
什么是非关系型数据库
舍掉一些关系型数据库的供能以此来提高效率
例如Key-Value键值型数据库,文档型数据库,搜索引擎数据库
语法
--创建数据库
create database demo;
--查询所有数据库
show databases;
--查询当前数据库
select database();
--删除数据库
drop database demo;
--创建表
create table tb_user(
id int comment '编号',
。。。
) comment '用户表';
--查询当前数据库中的所有表
show tables;
--查询表结构
desc tb_user;
--查询指定表的建表语句
show create table tb_user;
创建一个员工表
create table emp(
id int comment '编号',
workno varchar(10) comment '员工工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(10) comment '身份证号',
entrydata date comment '入职时间'
) comment '员工表';
--添加字段
alter table emp add nickname varchar(10) comment '昵称';
--修改数据类型
alter table emp change nickname username varchar(30) comment '用户名';
--删除字段
alter table emp drop username;
--修改表名
alter table emp rename to employee;
--删除表
drop table if exists tb_user;
DML介绍
添加数据
1.给指定的字段添加数据
insert into 表名(字段) values(值);
查询
select * form 表名
2.给全部字段添加数据
insert into value(值);
3.批量添加数据
insert into values(值),(),(),();
修改数据
updata 表名 set 字段名=值1,字段名2=值2.。。[where 条件];
update employee set name='bigname' where id=1;
修改多个中间用逗号隔开
update employee set name='小昭',gender='女' where id=2;
更行整张表所有数据所有数据 不用加where;
删除数据
删除单个数据
delect from 表名 where 条件;
delete from employee where gender='女';
删除所有数据 不加where
delete from employee
DQL
-
基本查询
select 字段1,字段2,字段3.。。 from 表名; select name,workno,age from emp; select * from 表名;
-
设置别名
select 字段1[as 别名1],[as 别名2],[as 别名3].。。from 表名 select workaddress as '工作地址' from emp;
-
去除重复记录
select distinct 字段列表 from select distinct workaddress as '工作地址' from emp;
-
条件查询
select * from 表名 where age=\<\>.... 举例如下 -- 条件查询 -- 1. 查询年龄等于88的员工 select * from emp where age=88; -- 2.查询年龄小于20的员工 select *from emp where age<20; -- 查询没有身份证号的员工 select * from emp where emp.idcard is NULL; -- 查询又身份证号的员工 select * from emp where idcard is not NULL; -- 查询年龄不等于88岁的员工信息 select * from emp where age!=88; -- 查询年龄在15岁和20岁之间(包含边界)的员工 select * from emp where age>=15 and age<=20; select * from emp where age between 15 and 20; -- 查询姓名为两个字的员工信息 select * from emp where name like '__'; -- 查询身份证最后一位为X的员工 select * from emp where idcard like '%X';
-
聚合函数
select 聚合函数(字段列表) from 表名; 举例如下 -- 统计该企业的员工数量 select count(id) from emp; -- 统计该企业员工的平均年龄 select avg(age) from emp; -- 统计该企业员工的最大年龄 select max(age) from emp; -- 统计该企业员工的最小年龄 select min(age) from emp;
-
分组查询
select 字段列表 from 表名[where 条件] group by 分组字段名[having 分组后的过滤条件] -- 分组查询 -- 按照性别分组,分别查询男女员工的数量 select gender,count(*) from emp group by(gender); -- 根据性别分组 统计男女性员工的平均年龄 select gender,avg(age) from emp group by(gender); -- 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址 select workaddress,count(*) from emp where age<45 group by (workaddress) having count(*)>=3;
-
排序查询
select 字段列表 from 表名 order by 字段1,排序方式1,字段2,排序方式2; 举例如下 -- 排序查询 -- 根据年龄对公司的员工进行升序排序 select *from emp order by age asc ; -- 根据入职时间,对员工进行降序排序 select * from emp order by entrydate desc; -- 根据年龄对公死的员工进行升序降序,年龄相同,再按照入职时间进行降序排序 select *from emp order by age asc,id desc;
-
分页查询
-- 分页查询 -- 查询第1页员工数据,每页展示10条记录 select * from emp limit 0,10; -- 查询第2页员工数据,每页展示10条记录 页码-1)*每页展示数 select * from emp limit 10,10;
综合练习
-- 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按升序排序,如果年龄相同按入职时间排序
select name,age from emp where age<=35 order by age asc,entrydate asc;
-- 查询性别为男,且年龄再20-40以内的前5个员工的信息,并对查询的结果按年龄升序排序,年龄相同按入职时间排序
select *from emp where gender='男' and age between 20 and 40 order by age asc,entrydate asc limit 5;