【数据库入门(常见数据类型,DDL,DML,DQL)】

本文详细介绍了数据库的基础知识,包括数据存储方式、常用数据库类型及特点。重点讲解了MySQL数据库,涵盖SQL语句分类,如DDL、DML、DQL和DCL,以及各种操作如建库、建表、修改、删除等。此外,还讨论了数据类型、查询语句、排序和模糊查询等核心概念,是数据库初学者的全面指南。

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一起学习

	预习:分组帅选
	分页查询
	数据库约束
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值