秦皇岛百维javaweb第三天实训笔记

89 阅读6分钟

1.数据库的基本概念

(1)数据库的英文单词 database 简称DB

(2)什么是数据库:用于存储和管理数据的仓库

(3)数据库的特点:

①持久化存储数据,其实数据库就是一个文件系统

②方便存储和管理数据

③使用统一的方式操作数据库 – SQL

(4)常见的数据库软件

image.png ①Mysql :开源免费的数据库,中小型数据库,已经被Oracle收购了。从Mysql6.x版本也开始收费了。(Sun公司收购Mysql,Sun公司被Oracle收购了)

②DB2:IBM公司的数据库产品,收费,常应用于银行系统

③SQL Server:MicroSoft公司收费的中型数据库。C#、.net等语言常使用

④SQLite:嵌入式的小型数据库,应用在手机端,如Android

(5)MariaDB数据库软件

①安装、卸载、配置

由于MariaDB各版本有差异,所以参见对应版本网上教程

②为什么使用MariaDB

MariaDB数据库管理系统是Mysql的一个分支,主要由开源社区维护,可以兼容Mysql,现在,MariaDB的数据特性、性能都超越了Mysql

2.SQL

(1)什么是SQL

Structured Query Language:结构化查询语言

其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。

(2) SQL通用语法

①SQL语句可以单行或多行书写,以分号结尾。

②可以使用空格和缩进来增加语句的可读性

③Mysql数据库的SQL语句不区分大小写,关键字建议使用大写

④三种注释

*单行注释 – 注释内容 或# 注释内容(Mysql特有)

*多行注释 /注释/

(3)SQL分类

①DDL(Data Definition Language)数据库定义语言

用来定义数据库对象:数据库,表列。关键字:create,drop,alter等

②DML(Dtat Manipulation Language)数据操作语言

用来对数据库表中的数据进行增删改。关键字:insert,delete,update等

` ③DQL(Data Query Language)数据查询语言

用来查询数据库中表的记录(数据)。关键字:select,where等

④DCL(Data Control Language)数据库控制语言(了解)

用来定义数据库的访问权限和安全级别。关键字:GRANT,RECOKE等

3.DDL:操作数据库、表

(1)操作数据库:CRUD

1.C(Create):创建

		*创建数据库:
			*create database 数据库名称;
		
		*创建数据库,判断不存在,再创建:
			*create database if not exists 数据库名称;

		* 创建数据库,并指定字符集
			* create database 数据库名称 character set 字符集名;
	2.R(Retrieve):查询
		*查询所有数据库的名称:
			*show databases;
		*查询某个数据库的字符集:查询某个数据库的创建语句
			*show create database 数据库名称;
	3.U(Update):修改
		*修改数据库的字符集
			*alter database 数据库名称 character set 字符集名称;
	4.D(Delete):删除
		*删除数据库
			*drop database 数据库名称;
		*判断数据库存在,再删除
			*drop database if exists 数据库名称;
	5.使用数据库
		*查询当前正在使用的数据库名称
			*select database();
		*使用数据库
			*use 数据库名称;

2.操作表
	1.C(Create):创建
		1.语法
			create table 表名(
				列名1 数据类型1,
				列名2 数据类型2,
				....
				列名n 数据类型n
			);
			*注意:最后一列,不需要(,)
			*数据类型:
				1.int:整数类型
					*age int
				2.double:小数类型
					*score double5,23.date:日期,只包含年月日 yyyy-MM-dd
				4.datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
				5.timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
					*如果将来不给这个字段赋值,或者赋值为null,则默认使用当前的系统时间,来自动赋值
				6.varchar:字符串
					*name varchar(20):姓名最大20个字符
					*zhangsan 8个字符 张三 2个字符
			*复制表
				*create table 表名 like 被复制的表名;

	2.R(Retrieve):查询
		*查询某个数据库中所有的表名称
			*show tables;
		*查询表结构
			*desc 表名;

	3.U(Update):修改
		1.修改表名
			alter table 表名 rename to 新的表名;
		2.修改表的字符集
			alter table 表名 character set 字符集名称;
		3.添加一列
			alter table 表名 add 列名 数据类型;
		4.修改列名称 类型
			alter table 表名 change 列名 新列名 新数据类型;
			alter table 表名 modify 列名 新数据类型;
		5.删除列
			alter table 表名 drop 列名;

	4.D(Delete):删除  
		*drop table 表名;
		*drop table if exists 表名; 

*客户端图形化工具:Navicat  

## DML:增删改表中数据   

	1.添加数据:
		*insert into 表名(列名1,列名2,....列名n)values(值1,值2,...值n);
		
		*注意:
			1.列名和值要一一对应。
			2.如果表名后,不定义列名,则默认给所有列添加值
				insert into 表名 values(值1,值2,...值n);
			3.除了数字类型,其他类型需要使用引号(单双引号都可以)引起来

	2.删除数据:
		*语法:
			*delete from 表名 [where条件]
		*注意:
			*如果要删除所有记录
				1.delete from 表名;--不推荐使用。有多少条记录就会执行多少次删除操作
				2.TRUNCATE TABLE 表名;--推荐使用,效率更高,先删除表,然后再创建一张一样的表。

	3.修改数据:
		*语法:
			*update 表名 set 列名1 =1,列名2 =2,...[where 条件]

		*注意:
			1.如果不加任何条件,则会将表中所有记录全部修改。

##DQL:查询表中的记录
	*select * from 表名;

	1.语法:
		select
			字段列表
		from
			表名列表
		where
			条件列表
		group by
			分组字段
		having
			分组之后的条件
		order by
			排序
		limit
			分页限定

	2.基础查询
		1.多个字段查询
			select 字段名1,字段名2,...from 表名;
			*注意:
				*如果查询所有字段,则可以使用*来代替字段列表
		2.计算列
			*一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
			*ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
				*表达式1:哪个字段需要判断是否为null
				*表达式2:该字段为null后替换的值


		3.起别名
			*as:as也可以省略

		4.去除重复:
			*distinct


      3.条件查询
		1.where子句后跟条件
		2.运算符
			* ><<=>==<>
			* BETWEEN...AND
			* IN(集合)
			* LIKE:模糊查询
			* IS NULL
			* AND&&
			* OR||
			* not 或 !


			-- 查询年龄大于20岁

			SELECT * FROM student WHERE age > 20;
			
			SELECT * FROM student WHERE age >= 20;
			
			-- 查询年龄等于20岁
			SELECT * FROM student WHERE age = 20;
			
			-- 查询年龄不等于20岁
			SELECT * FROM student WHERE age != 20;
			SELECT * FROM student WHERE age <> 20;
			
			-- 查询年龄大于等于20 小于等于30
			
			SELECT * FROM student WHERE age >= 20 &&  age <=30;
			SELECT * FROM student WHERE age >= 20 AND  age <=30;
			SELECT * FROM student WHERE age BETWEEN 20 AND 30;
			
			-- 查询年龄22岁,18岁,25岁的信息
			SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
			SELECT * FROM student WHERE age IN (22,18,25);
			
			-- 查询英语成绩为null
			SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
			
			SELECT * FROM student WHERE english IS NULL;
			
			-- 查询英语成绩不为null
			SELECT * FROM student WHERE english  IS NOT NULL;



			-- 查询姓马的有哪些? like
			SELECT * FROM student WHERE NAME LIKE '马%';
			-- 查询姓名第二个字是化的人
			
			SELECT * FROM student WHERE NAME LIKE "_化%";
			
			-- 查询姓名是3个字的人
			SELECT * FROM student WHERE NAME LIKE '___';
                       				
			-- 查询姓名中包含德的人
			SELECT * FROM student WHERE NAME LIKE '%德%';

` 转载自本人在CSDN发表的文章blog.csdn.net/yumiao168/a…