今日内容:

1. mysql概述
2. sql概述
3. DDl
4. DML

MySql概述:

1. 内存和文件的优缺点:
	* 内存:速度快,但是不能永久保存,数据是临时状态。
	* 文件:数据可以永久保存,操作数据不方便,查询某个数据。
2.	数据库优缺点:
	* 优点:		
		1. 数据可以永久保存
		2. 查询速度快
		3. 对数据的管理方便
	* 缺点:
		1. 占用资源,需要购买。
		2. 需要专门的软件进行编写,需要学习成本去使用它的语法和使用方式
3. 什么是数据库:
	1.储存数据的仓库
	2.本质上是一个文件系统,还是以文件的方式存在服务器的电脑上的。
	3.所有的关系型数据库都可以使用通用的SQL语句进行管理DBMS DataBase Management System
4.为什么选择MySQL
	1.免费
	2.功能强大
5.MySQL目录结构:
	bin<目录>:所有mysql的可执行文件,如:mysql.exe
	MySQLInstanceConfig.exe:	数据的配置向导,在安装时出现的内容;
	date<目录>:系统必须的数据库所在的目录。
	my.ini文件:mysql的配置文件,一般不建议去修改。
6. 数据库管理系统:指一种操作和管理数据库的大型软件,用于建立,使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统各访问数据库表内的数据。
7. 结论:
	* 一个数据库服务器包含多个库,一个数据库包含多张表,一个表包含多条记录

SQL概述

1.SQL:Structured Query Language  结构化查询语言

2. SQL作用:
	1.是一种所有关系型数据库的查询规范,不同的数据库都支持。
	2.通用的数据库操作语言,可以用在不同的数据库中。
	3.不同的数据库SQL语句有一些区别。
3. SQL语句分类:
	DDL:建库,建表
	DML:增删改
	DQL:对表中的查询操作
	DCL:对用户权限的设置
4. MySQL语法:
	每条语句以分号结尾,如果在SQLyog中不是必须加的。
	SQL中不区分大小写,关键字中认为大写和小写是一样的。
	3中注解:
	--空格		单行注释		# 单行注释(这个是mysql特有的注释方式)
	/* */这是mysql特有的注释方式

DDL:

1. DDL操作数据库:
	1. 创建数据库: CREATE  DATABASE 数据库名;
	2. 判断数据库是否已经存在,不存在则创建数据库	:
		* CREATE DATABASE IF NOT EXISTS 数据库名;
	3. 创建数据库并指定字符集:
		*CREATE DATABASE 数据库名 CHARCTER SET 字符集;
	4. 按tab可以自动补全关键字;
	5. 修改数据库默认的字符集:
		* alter database 数据库名 default character set 字符集;
	6. 将db3数据库的字符集改成utf8
		* alter database bd3 character set utf8;
	7. 删除数据库的语法:
		* drop database 数据库名;
	8. 具体操作:
		* 每行SQL语句需要选中再执行,可以按F9
	9. 查看正在使用的数据库:
		* select database();  使用的一个mysql中的全局函数
	10. 使用/切换数据库
		* use 数据库名;			
2. DDL操作表结构:
	* 创建表的格式:
	create table 表名(
	字段名1  字段类型1;
	)
3. 添加数据:语法:insert into 表名(列名1,列名2...)values(值1,值2...);
	* 注意:	
		1. 列名和值要一一对应。
		2. 如果表名后,不定义列名,则默认给所有列添加值。
			* insert into 表名 values(值1,值2,值...);
		3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来。
3. 删除数据:
	* 语法: 
		1. delete from 表名 [where 条件]
			* 注意:
			1. 如果不加条件,则删除表中所有记录。
			2. 如果要删除所有记录
		2. delete from 表名;  --不推荐使用。有多少条记录就会执行多少次操作。
		3. truncate table 表名;		--先删除表,然后再创建一张一模一样的表。	
	* 查询表中的记录: select * from 表名;
4.数据库的基本概念:
	1. DataBase    简称DB
	2. 什么是数据库?			用于存储和管理数据的仓库。
	3. 数据库的特点:
		* 持久化储存数据的。			其实数据库就是一个文件系统。
		* 方便存储和管理数据
		* 使用了统一的方式操作数据库。			--SQL
	4. 常见的数据库软件:Oracle,MySQL,DB2,MySQLSEVER等。
	5. MySQL软件  相当于是服务端3306.				所以它必须开启服务,才能被其他连接。		
	6. 配置:
		* MYSQL服务启动:
			1. 手动
			2. cmd-->services.msc        打开服务的窗口
			3. 使用管理员打开cmd
	7. 开启关闭服务
		1. net start mysql  :启动mysql的服务。
		2. net stop mysql	  :关闭mysql的服务。
	8. MYSQL登录
		1. mysql 	-uroot	-p密码
		2. mysql -hip	-p连接目标的密码		(安装数据库要勾上远程控制访问才可以)
		3. mysql	--host=ip	--user=root	--password=连接目标的密码	
	9. MYSQL的目录结构:
		1.MYSQL安装目录结构
					配置文件:	my.ini
		2.MYSQL数据目录
		几个概念
		数据库---->文件夹
		表	  ---->文件
		数据  ----->数据
	
	10. SQL是结构化查询语言,定义了操作所有关系型数据库的规则。		
5. 三种注释:
	1. 单行注释:-- 注释内容(两个横杠一个空格)
	2. # 		---> mysql特由于的单行注释
	3. 多行注释:/*  */
6. SQL通用语法:
	1.SQL语句可以单行或多行书写,以分号结尾。	(在mysql中可以自动加上;)
	2.可使用空格和缩进来增强语句的可读性。
	3.MYSQL数据库的SQL语句不区分大小写,关键字建议使用大写。
	4.注释
	
	
7. SQL分类:
	1.DDL:数据定义语言:定义数据库,表,列等:关键字:create,drop,alter等
	2.DML:数据操作语言:用来对数据库表中的数据进行增删改。关键字:insert ,delete,	update等
	3.DQL:数据查询语言,用来查询数据库中表的记录(数据)。关键字:select,where等
	4.DCL:数据控制语言:用来定义数据库的访问权限和安全级别,及创建用户。关键字:grant,revoke;
	
8. DDL:操作数据库、表
	1.操作数据库:CRUD
	1.C	:create:创建
	2.R	:retrieve:查询			查询所有数据库的名称:show databases;
	3.U	:update:修改
	4.D	:  delete:删除
	5.使用数据库
9. 操作数据库: 
		1. 创建: 	
				create	database 数据库名称;
			* 创建数据库,判断不存在,再创建:
				create database if not exists 数据库名称;
			* 创建数据库,并制定字符集:
				create datebase 数据库名称 character set 字符集名;
		2. 查询:
			* 查询所有数据库的名称:
				show databases;
			* 查询某个数据库的字符集:查询某个数据库的创建语句
				show create database 数据库名称;
		3. 修改:
			* 修改数据库字符集名称:
				alter database 数据库名称 character set 字符集名称;
		4. 使用:
		 	* use 数据库名称;
	
10. 查询表:R(Retrieve)查询
	查询所有表:show  tables;
	查看表结构:desc  haha;
	
	
11. 创建表:	C(create):创建
	1.语法: 	
		create table表名 (
		列名1  数据类型,
		列名2  数据类型2,
		...
		列名n  数据类型n
		);
	* 注意:最后一列,不需要加“,”号;
12. 数据库类型:
	1. int:整数类型		*age int,	
	2. double:小数类型	*score double(5,2),		->说明总长度5位,保留两位小数。
	3. date:日期,只包含年月日,yyyy-MM-dd
	4. datetime:日期,包含年月日时分秒		
		yyyy-MM-dd HH:mm:ss
	5. timestamp:时间错类型   包含年月日时分秒  
		yyyy-MM-dd HH:mm:ss
	6. varchar:字符串
		* name varchar(20):姓名最大20个字符
	7. 创建表:
		create table student(
		id int,
		name varchar(32),
		age int,
		score double(4,1);
		);
		
	* 大型数据可以储存在CLOB里面,二进制类型可以储存图片;
13. 修改,添加,删除:
	1. 修改U(Update):
		1.修改表名
		alter table 表名		【rename to 新的表名;】
		2.修改表的字符集
		alter table 表名		【character set 字符集名称;】
	2. 添加:
		* 添加一列:* alter table 表名		【add 列名 数据类型;】
	3. 修改列名称 类型
		* alter table 表名		【change 列名 新列名 新数据类型】
	5. 删除列:alter table 表名		【drop 列名】;
	6. D(Delete):删除
		1. drop table 表名;
		2. drop table if exists 表名;

DML

1. DML:增删改表中的数据:
	1. 添加数据:
		* 语法: insert into 表名(列名1,列名2,...列名n)values(值1,值2,...值n);
		* 注意:
		 1. 列名和值要一一对应。
		 2. 如果表名后,不定义列名,则默认给所有列添加值。
				insert into 表名 values (值1,值2,...值n);
	2. 删除数据:
		* 语法:delete from 表名[where 条件]
		* 注意:
			1. 如果不加条件,则删除表中所有记录。
			2. 如果要删除所有记录:
		* 示例:
			1. delete from 表名; 	-- 不推荐使用。有多少条记录就会执行多少次。
			2. truncate table 表名;		#推荐使用,效率更高,先删除表,然后再创建一张一模一样的表。
	 3. 修改数据:
		* 语法:update 表名 set 列名1=值1,列名2=值2,...[where 条件];
		* 注意:1.如果不加任何条件,则会将表中所有记录全部修改。
		* DQL:查询表中的记录
		* 语法: slect * from表名 
		
		"*"代表所有字段
		1.基本查询:
		select 字段名1,字段名2...from 表名;
	4. distinct 去重复;
		1. 语法:
			select	字段列表
			from		表名列表
			where	条件列表
			group by 分组字段
			having 	分组之后的条件
			order by  排序
			limit  	 分页限定
		2. 基础查询:
			1.多个字段的查询:
			select 字段名1, 字段名2...from 表名;
				* 注意:如果查询所有字段,则可以使用*