目录
一、数据库
1.概述
数据库就是用来储存数据和管理数据的仓库dabatase(简称db)
分类>>>
关系型数据库:存放的数据之间有紧密的关系可以看作表有行、有列,常用的数据库(Oracle/SqlServer/MySql/Informix.SyBase等),可以理解为我们常用的大多数都是关系型数据库。
非关系型数据库: 存放数据之间关系松散,常用的有(MongoDB/cassandra/redis/hbase)
2.安装
安装服务器端和客户端使用Mysql
1)服务器端:用来储存数据
设置字符集utf-8避免中文乱码(提一下有几个地方可以避免中文乱码>>安装时有个选项、创建库时、创建表时),端口默认为3306
此为创建库时设置编码格式
2)客户端用来连接服务器,操作数据
DOS窗口输入mysql -uroot -proot回车进入数据库
3)可视化工具
3.数据库结构
分为数据库>>表>>记录(包含关系),实现增删改查CRUD
二、SQL语言
1.概述
结构化查询语言,专门对数据库进行操作简称(SQL)
2.数据库的表、库系列操作
1)创建数据库、表
create database lab #lab数据库的名字
create table a(id int,name varchar(20));
#语法create table 表名(字段名称 字段类型(字段长度),字段名称 字段类型(字段长度),...);
2)删除数据库、表
drop database 库名; #除特殊情况下不要使用,一旦使用无法找回
drop table 表名; #除特殊情况下不要使用,一旦使用无法找回
3)修改数据库、表
alter table 表名 添加字段 字段名称 字段类型(字段长度)
4)查询数据库、表
查看所有数据库/表
show databases;
show tables;
使用指定数据库
use 数据库名;
3.记录的系列操作
创建一个student表其中包含id,age,name并向其中添加几条数据
#创建表并设置主键自增
create table student(id int primary key,name varchar(20),age int,sex varchar(20));
#向表中添加数据
insert into student values(1,"Jack",20,"男");
insert into student values(2,"Lilei",10,"男");
insert into student values(3,"Rose",30,"女");
insert into student values(4,"Lili",50,"女");
1)查询记录(查询所有记录及常用条件查询)
select * from 表名 #查询表的所有数据
条件查询本质上就是多了个where 加 条件,所以创建完表之后多多实践,别怕错自己想点条件试下
1.1两个条件同时存在用and连接,两个条件满足一项即可用or连接
1.2 in相当于or,例子:查询年龄为20或者30的学员,not in就是查询不满足条件的
SELECT * FROM student WHERE age IN(20,30);
1.3betweeen and 例子:查询年龄在20岁到50岁的学员信息
SELECT * FROM student WHERE age BETWEEN 20 AND 50;
1.4null数据的处理,分为is null、is not null,是空和不是空。例子:查询学员表中年龄不是null的所有数据
SELECT * FROM student WHERE age IS NOT NULL;
1.5例子:查询学生表中年龄(age)为20的学员信息
select * from student where age=20;
#student是你数据库中的表,自己创建,其中包含age字段 age=20就是你的条件
1.6例子:查询表中性别为女的学员信息
select * from student where sex="女";
1.7模糊查询重点记忆like, %是通配符,就是什么都可以替代的意思
SELECT * FROM student WHERE age LIKE '1%'; #查询年龄以1开头的所有数据
SELECT * FROM student WHERE age LIKE '%1%'; #查询年龄中间包含1的所有数据,也包含以1开头
SELECT * FROM student WHERE age LIKE '%1'; #查询年龄以1结尾的所有数据
1.8分页查询limit
SELECT * FROM student LIMIT 2,1; #2代表从第几条数据开始查询,1代表查询几条数据
1.9查询排序order by默认为升序查询
注意:汉字排序时会查utf8里对应的数字,按照数字升序排序
#按照年龄查询升序、降序
SELECT * FROM student ORDER BY age ASC; #升序查询ASC
SELECT * FROM student ORDER BY age DESC; #降序查询DESC
2.0按照日期做条件查询
#可参照基础函数中的时间作为条件查询练习
SELECT * FROM 表名 WHERE hiredate<'2019-1-1' #hiredate日期的字段名
SELECT * FROM 表名 WHERE YEAR(hiredate)<2019
2)修改记录(修改所有及条件修改)
例子:修改表中id=2学员的信息,将其性别改为女,注意如果不加where条件就是修改所有人的信息
update student set sex="女" where id=2;
3)增加记录
insert into student values(5,"小明",20,"男");
insert into student values(6,"小北",10,"男");
insert into student values(7,"小美",30,"女");
insert into student values(8,"小人",50,"女");
4)删除记录
注意如果不加条件就是删除所有数据谨慎操作
delete from student where id=3; #注意如果不加条件就是删除所有数据谨慎操作
三、数据库中的函数
1、基本函数
概述:类似于java中的方法,使用是为了提高SQL的效率,有些需要提供参数
代码演示
#注意sql中的关键字会自动变成大写
#查询学员表中的学员姓名,用字段名替代了*,增快了查询效率
select name from student;
#查询学员表中的学员姓名和年龄,查询多个字段时用,号隔开
select name,age from student;
###
#基础函数
#将姓名变成大写upper(字段名),变成小写lower(字段名)
select name,upper(name),lower(name) from student;
#查询字段值的长度用length(字段名),一个字母、数字为1,汉字为3(utf-8中)
select name,length(name),age,length(age) from student;
#截取substr(a,b,c)-a是字段名b是截取的开始位置c是截取的长度
SELECT NAME,SUBSTR(NAME,2,2) FROM student;
#concat(a,b,c)-a是字段名b是想要拼接的内容c是想要拼接的内容
select name,concat(name,'a','o') from student;
#replace(a,b,c)-a是字段名b是要被替换的字符c是新数据
select name,replace(name,"i","e") from student;
#ifnull(a,b)-a是字段名b是要把null替换成的值
select name,ifnull(name,'Xiaoxiao') from student;
#对小数的处理:round四舍五入取整 ceil向上取整 floor向下取整
select round(字段名),ceil(字段名),floor(字段名) from student; #由于表中没有小数,演示不了
#对日期的处理:now获取当前系统时间year获取年month获取月day获取天
SELECT NOW(),YEAR(NOW()),MONTH(NOW()),DAY(NOW());
#对日期的处理:HOUR获取时MINUTE获取分SECOND获取秒
SELECT NOW(),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
2、聚合函数
1)概述:把一列的所有值聚合寄来做分析,常用的聚合函数:count()/max()/min()/avg()/sum()
#1.聚合函数:把一列的所有值聚合在一起
SELECT age FROM student#查询学员年龄
SELECT MAX(age) FROM student#查询最高年龄
SELECT MIN(age) FROM student#查询最低年龄
#SUM查询年龄总和,AVG平均年龄
SELECT SUM(age),AVG(age) FROM student
#count()统计总记录数
SELECT COUNT(age) FROM student
SELECT COUNT(*) FROM student#低效
SELECT COUNT(1) FROM student#高效
2)分组概述:就是把数据,按照一些维度分成组,然后再把这一组数据继续分析
例子:按照性别分组,统计平均年龄(其余函数一样)
select sex,avg(age) from student group by sex;
3)分组后过滤
例子:统计不同性别学员表中年龄最大的,只要年龄大于20的数据,a 是给统计后的数据起的别名
select sex,max(age) a from student group by sex having a>20;
四、总结
补充:数据库的基本操作都很简单,多敲几遍命令,自己总结下规律就好了,条件查询本质就是加了where 条件,函数是为了提高效率。