Mysql数据库入门
一、数据库简介以及常见数据库类型
1.常用的数据存储方式
1)定义变量:局部变量,成员变量…
局部变量:随方法的结束而结束
成员变量:随对象调用结束而结束
2)容器存储:数组(Array)),单列集合(Collection),双列集合(Map)
数组:有长度限制,查询快,增删慢,可以存储基本类型数据与引用类型数据
集合:无长度限制,用于存储引用类型数据
3)IO流:input,output
可以将数据读写到磁盘或文件中,比较耗时
4)数据库存储
底层是树状结构,执行效率高,数据可永久保存
数据库支持"事务",来解决业务中存在的问题
2.常见数据库
关系型数据库:MySQL , SQL Server , Oracle , sqllite , mariaDB
非关系型数据库(NoSQL) :Redis,MongoDb
数据库三层结构:库,表,数据;
数据库-普通表本质仍然是一个文件
数据库memery的数据会映射到内存中去
数据库redis-是内存与磁盘相结合
3.SQL语句分类
DDL:数据定义语句【创建库,创建表...】
DML:数据操作语句【增加insert,修改update,删除delete】
DQL:数据查询语句【select...】
DCL:数据控制语句【管理数据库:比如用户权限 grant revoke】
3.常见数据类型
int :整数类型 默认最大长度11位,按实际数据存储
int(整数长度):指定长度的整数类型 例:int(3), 实际存入值为1,显示001
double(几位数,小数点后保留几位):小数类型
varchar(字符长度-最大支持255个):字符串类型
clob:大字符类型-支持大文本
blob:大字节类型-最大支持4G
date:仅日期类型 ‘yy-mm-dd’
datetime:日期+时间类型 ‘yy-mm-dd hh-mm-ss’
timestap:时间戳-当前系统的瞬时时间
二、数据库DDL(data definition language-数据库定义语句)
1.数据库相关语句
1) 查询当前电脑磁盘上的所有数据库
show databases;
2)建库:
create database 库名;
create database if not exists 库名;
3)查询已创建库的字符集
show create database 库名;
4)修改创建库的字符集
alter database 库名 default character set 字符集名称;
5)删除库
drop database 库名;
drop database if exists 库名;
6)查询当前正在使用数据库
select database();
7)使用或切换 数据库
use 库名;
2.数据库中数据表相关语句
注意:建表前,必须指明使用库
语法:use 库名;
1)建表
create table 表名(
字段名1 字段类型1,
字段名2 字段类型2,
....
字段名n 字段类型n
);
2)查询当前使用的库中有哪些表
show tables;
3)查看表的结构
desc 表名;
4)修改表字段名称
alter table 表名 change 旧名称 新名称 字段类型;
5)修改表的字段类型
alter table 表名 modify 字段名 字段类型;
6)给表中添加一个新的字段
alter table 表名 add 字段名 字段类型;
7)删除表中字段
alter table 表名 drop 字段名;
8)复制表结构到新表
create table 新表名 like 已有表名;
9)删除表
drop table 表名;
drop table if exists 表名;
10)修改表名
rename table 表名 to 新表名;
三、DML(data manipulation language-数据库操作语句)
1)添加字段值(关键字insert into…values)
1,添加部分字段值
insert into 表名(字段名1,字段名2...) values (值1,值2...); -----注意字段名顺序与值的顺序一致
2,添加全部字段值(字段名可以省去)
insert into 表名 values(值1,值2,...值end);
3,多行添加全部字段值(也可多行添加部分字段值,语法类似)
insert into 表名 values (值1,值2,...值end),
(值1,值2,...值end),
(值1,值2,...值end),
(值1,值2,...值end);
4,蠕虫复制(将已有表中的数据,复制到结构相同的新表中)
将已有表中所有数据复制到新表
insert into 新表名 select * from 已有表名;
复制已有表中部分数据到新表
insert into 新表名(字段名1,字段名2...) select 字段名1,字段名2... from 已有表名;
create table student1 like student;
insert into student1 select * from student;
insert into student1(name,age) select name,age from student;
2)修改表中字段值 (关键字update …set …where)
1.不带where条件修改(批量修改)
update 表名 set 字段名=值;
2.带where条件单个字段修改值
update 表名 set 业务字段名=值 where 非业务字段名=值;
3.带where条件多个字段修改值
update 表名 set 业务字段名1=值,业务字段名2=值...where 非业务字段名=值;
3)删除表的记录(关键字delete… where 或者truncate)
1.删除全表数据
delete from 表名;
truncate from 表名;
区别:
delete from 表名; 仅仅删除表的全部记录,表还在,不影响表的非业务字段--主键的自增长值
truncate from 表名; 删除表的全部记录并删除表后,自动创建一张一样的新表
2.带条件删除指定非业务字段数据
delete from 表名 where 非业务字段=值; (删除非业务字段项下所有数据记录)
注意:前面提到的drop table 表名;--是直接删除表; 此处delete,truncate是删除表中数据记录
简单了解非业务主键自增长 (具体请看数据库约束博文)
案例引入:创建一个学生表,id加入主键(非空并且唯一)和自增长(不断的自增1)约束
create table student(
id INT PRIMARY KEY AUTO_INCREMENT, --设置主键与自增长语法
name varchar(10),
age INT
);
INSERT INTO STU1(NAME,AGE) VALUES('SUFI',18),
('POPPY',21);
SELECT * FROM STU1;
四、DQL(data query language–数据库查询语句)
1.查询全表数据(关键字select …from)
select * from 表名;
2.查询全表指定字段数据
select 字段名 from 表名;
3,查询全表全指定字段时给字段添加一个别名(as可以省略)
select
字段名1 as 别名,
字段名2 as 别名,
...
from
表名;
4.表名较长时,给表起一个别名(as可以省略—多表查询中使用较多)
select
表别名.'字段名1' as 字段别名,
表别名.'字段名2 'as 字段别名,
...
from
表名 as 表别名;
5.带where条件查询
where语句中只能使用列名查询,不能使用别名
where语句中不能使用聚合函数
select
需要显示的字段名
from
查询的表名
where
满足的条件;
where条件语句运算符或关键字
1>比较运算符
大于: >
小于: <
大于等于: >=
小于等于:<=
不等于: != <>(数据库中代表不等于)
非: ! 或者 not
2>逻辑运算符
并且:&& and
或: || or
3>表示范围条件时特殊用法
字段大于等于值1,并且小于等于值2:
字段名 >=值1 && 字段名 <=值2;
字段名 betweent 值1 and 值2;
字段为值1或值2或值n:
字段名=值1 || 字段名=值2 || 字段名=值n;
字段名 in(值1,值2,值n); (解释:in集合语句)
6.查询字段值为空/不为空的数据
空-关键字:is null
select
显示的字段名
from
查询的表名
where
字段名 is null;
非空-关键字:is not null
select
显示的字段名
from
查询的表名
where
字段名 is not null;
7.查询结果参与运算(需要是数值类型)
1)select 字段名+值1 from 表名;
2)select 字段名1+字段名2 from 表名;
3)select *,字段名1+字段名2 from 表名;
4)关于int字段求和值为空时的处理语法
注意:int类型的值+null=null;
应用场景引入:计算学生数学+英语成绩之和,如一个成绩为null,显示结果也是null;
处理:mysql提供了函数IFNULL(字段名称,设定值);
select
显示的字段名
(IFNULL(int字段名1,设定值)+IFNULL(int字段名2,设置值))
from
查询的表名;
where(依据实际情况,可写,可不写)
例:select *,(数学成绩+英语成绩) as 总成绩 from 表名;
8.模糊查询(关键字like,not like % _)
%:代表某个或者多个字符
_:代表某个单个字符
(%使用居多:网站门户系统--"搜索商品")
语法:
select
显示字段名
from
查询的表名
where
字段名 like '% 字符值或字符串值%' (解释:模糊匹配有多个字符值或者字符串值的数据)
字段名 like '_ _ _' (解释:模糊匹配三个字符的值的数据)
字段名 like '马%' (解释:模糊匹配马开头)
(show variables like '%character%' ---查看mysql内部数据编码)
--查询姓马的学生
select * from student where name like '马%';
select * from student where name like '马';
--查询姓名中包含‘德’的学生
select * from student where name like '%德%';
--查询姓马,且姓名是2个字的学生
select * from student where name like '马_';
9.查询并清除重复值(关键字select distinct…from…)
select distinct 字段名 from 表名;
10.聚合函数查询(单行单列显示)
1.常见聚合函数
count(字段名称):统计字段项下数据记录个数
select count(*) from 表名; ---统计整个表总共有多少行
select count(指定字段名称) from 表名; ---统计指定字段名称的非空行数
(表的一行称之为一条记录->在java中,一行记录使用对象表示)
avg(字段名称):统计字段项下数据平均值
select avg(字段名称) from 表名;
sum(字段列表):统计字段列表之和----注意只对数值列有效
select sum(IFNULL(字段名1,设定值)+IFNULL(字段名2,设定值)+...) from 表名;
min(字段名称):查询字段项下最小值
select min(字段名称) from 表名;
max(字段名称):查询字段项下最大值
select max(字段名称) from 表名;
注意:使用count(指定字段名)统计数据记录时,如有null值,不会统计进来,建议使用非业务字段(非空且唯一)
2.聚合函数子查询--(select嵌套select)
语法:
select
显示字段名
from
查询表名1
where
字段名1 >(select max(字段名1) from 查询表名1);
案例引入:查询学生表中,数学成绩大于平均分的所有学分的数据信息
use studentsql;
create table student(
id int primary key auto_increment,
name varchar(10),
math int,
english int
);
insert into student(name,math,english) values
('suki',78,90),
('sufi',73,83),
('poppy',90,98),
('byte',78,77);
select
name '姓名',
math '数学成绩',
english '英语成绩'
from
student
where
math > (select avg(math) from student);
9.排序查询(关键字 select…from…where…order by…)
排序查询即可以用列名,也可以用其的别名
1.单字段排序语法:
select
显示字段名
from
查询表名
where
满足的条件
order by 字段名 排序类型;
排序类型:
asc(升序--是默认值)
desc(降序)
例:
字段名 order by; (解释:排序方式升序)
2.多字段排序语法(先按第一个字段排序,有相同值时,按第二个字段排序)
select
显示字段名
from
查询表名
where
需要满足的条件
order by 字段名1 排序类型,字段名2 排序类型;
其他
1.设置命令行字符集
使用场景:例--通过dos命令行给数据库的数据表中添加中文名称时,会出现乱码;
原因:dos命令行中默认字符格式为utf-8,输入中文会乱码,需要将字符格式修改为gbk格式
步骤:
1)查询当前数据库中的所有字符集
语法:show variables like '%character%';
运行结果:
mysql> show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.00 sec)
2)修改character_set_client 与 character_set_results 的编码格式为gbk
语法:set character_set_client=gbk;
set character_set_results=gbk;
mysql> set character_set_client =gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results =gbk;
Query OK, 0 rows affected (0.00 sec)
3)重复第一步,查看是否修改成功
运行结果:
mysql> show variables like '%character%';
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\
注意:以上为临时设置,退出命令行后失效
温馨提示:数据库建议安装mysql8.0版本,如安装不了,使用mysql5.5版本
与poppy一起学习
预习:分组帅选
分页查询
数据库约束
本文详细介绍了数据库的基础知识,包括数据存储方式、常用数据库类型及特点。重点讲解了MySQL数据库,涵盖SQL语句分类,如DDL、DML、DQL和DCL,以及各种操作如建库、建表、修改、删除等。此外,还讨论了数据类型、查询语句、排序和模糊查询等核心概念,是数据库初学者的全面指南。
8743

被折叠的 条评论
为什么被折叠?



