day01_MySQL基础

在这里插入图片描述
一、数据库的引入
1.什么是数据库?有什么好处?
概念:用来存储和管理数据的仓库
好处:可以实现数据的持久化存储

	2.IO流和数据库的区别?
		//主要体现在管理数据方面
		IO:
			IO流存储数据想要修改数据非常麻烦
			因为如果只想操作一个数据的时候,需要将所有的数据先全部读取到集合中,修改你想要修改的数据。修改完之后再把"所有的数据"重新写入到文件中

		数据库: 
			数据库在创建的时候是以表格的形式来存储数据的
			如果我想修改其中的一个数据,我们只需要定位到具体的行和列,找到数据将其修改

二、数据库的基本概念
1.特点
(1)持久化的存储数据
(2)方便管理数据

三、常见的数据库软件介绍
1.Oracle数据库
特点:
性能好、价格贵
//一般在大型公司中使用

2.Mysql数据库
	特点:
		免费(6.0之前)
		开源(开放源代码)

四、Mysql
1.myusql的安装
*安装步骤请参考pdf
*建议:以后在安装所有的软件的时候,安装路径不要出现中文、空格、特殊字符。

2.mysql的卸载
	(1)关闭进程mysqld.exe进程(关闭服务)
	(2)使用软件管家、控制面板卸载mysql程序
	(3)删除存储数据的目录
		删除  :  C:\ProgramData\MySQL   //默认位置

3.mysql服务的启动和关闭   //任选一种掌握
	(1). 手动。
    (2). cmd--> services.msc 打开服务的窗口
    (3). 使用管理员打开cmd
            * net start mysql : 启动mysql的服务
            * net stop mysql:关闭mysql服务 

4.mysql的登录和退出
	(1) MySQL登录
         1. mysql -uroot -p密码   //掌握
			举例:mysql -uroot -proot
			
      	 2. mysql -hip -uroot -p连接目标的密码  //了解
       	 3. mysql --host=ip --user=root --password=连接目标的密码 //了解
     (2)MySQL退出
        	1. exit    //了解
        	2. quit    //了解

5.mysql的目录结构
	(1)安装目录
		C:\Program Files\MySQL\MySQL Server 5.5
		*安装目录里面有一个my.ini文件,里面有三个需要我们注意的配置
			第一个:
				port=3306   //mysql的端口号
				
			第二个:
				default-character-set=utf8   //注意:在mysql中没有utf-8   只有utf8
				
			第三个:
				datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"    //数据存储目录
		
	(2)数据目录
			datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
				//在data文件夹下,每一个文件夹就代表是一个数据库
					//在每一个数据库文件夹下,每一个frm文件就代表一张数据库表


6.sql的基本概念
	(1)sql语言  //相当于普通话
		其实是一种规则,是所有的"关系型数据库"通用的规则
	
	(2)方言   //相当于家乡话
		只能在单独的一种关系型数据库中使用的规则
		
		//简单来说,mysql的方言只能在mysql中使用,不能在其他的数据库中使用

7.sql的通用语法  //针对于黑窗口来说的
	(1). SQL 语句可以单行或多行书写,以分号结尾。
    (2). 可使用空格和缩进来增强语句的可读性。  
    (3). MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
    (4). 3 种注释
        * 单行注释: -- 注释内容 或 # 注释内容(mysql 特有)    //  --后面是有空格的 ,千万不能丢    例如:  -- 这是一个测试sql的语句
        * 多行注释: /* 注释 */

8.SQL的分类
	1) DDL(Data Definition Language)数据定义语言   //熟悉
        用来定义"数据库"对象:数据库,表,列等。关键字:create, drop,alter 等    //操作  数据库  +   表结构
    2) DML(Data Manipulation Language)数据操作语言  //重要
        用来对数据库中表的"数据"进行增删改。关键字:insert, delete, update 等  //操作数据的增删改
    3) DQL(Data Query Language)"数据"查询语言    //尤为重要
        用来查询数据库中表的记录(数据)。关键字:select, where 等   //操作数据的查询
    4) DCL(Data Control Language)数据控制语言//(了解)    以后都由DBA或者由资深程序员管理
        用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等  

在这里插入图片描述
五、DDL
1.操作 数据库 (☆☆☆)
//重点掌握数据库的创建和查询
(1)创建数据库
* 创建数据库:
create database 数据库名称; //掌握
举例: create database db3;

		* 创建数据库,判断不存在,再创建:
			* create database if not exists 数据库名称;   //了解
		* 创建数据库,并指定字符集
			* create database 数据库名称 character set 字符集名;   //了解

	(2)查询数据库
		* 查询所有数据库的名称:
			* show databases;   //掌握
			
			
		* 查询某个数据库的字符集:查询某个数据库的创建语句   //了解
			* show create database 数据库名称;

	(3)修改数据库    //了解
		* 修改数据库的字符集
			* alter database 数据库名称 character set 字符集名称;
		
	(4)删除数据库   //了解
		* 删除数据库
			* drop database 数据库名称;
		* 判断数据库存在,存在再删除
			* drop database if exists 数据库名称;

	
	(5)使用数据库   //掌握
		* 查询当前正在使用的数据库名称
			* select database();
		* 使用数据库
			* use 数据库名称;    //重要

2.操作  表  (☆☆☆☆☆)
	创建数据库  --------  使用数据库  ------  操作表
	
	(1)查询表
		   * show tables;  //掌握
		   
        * 查询表结构
            * desc 表名;  //了解


	(2)创建表
		语法格式:
            create table 表名(
                列名1 数据类型1,
                列名2 数据类型2,
                ....
                列名n 数据类型n
            );
            * 注意:最后一列,不需要加逗号(,)     //逗号的作用其实就是用来分隔不同的列
				举例:
					CREATE TABLE student (
							NAME VARCHAR(32),
							age INT,
							starttime DATETIME,
							endtime TIMESTAMP
						);
			
            
			* 数据库类型:
                1. int:整数类型
                    * age int,                           //Java中   int age;
                2. double:小数类型
                    * score double(5,2)            //  23.96 --->double(4,2) 
                3. 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个字符

					//补充:   char(固定长度) :字符串
						举例:
							char(10);               lisi 占 10  位   //应用场景  身份证号码
							varchar(10);            lisi 占  4 位
					//注意事项:	不管写char还是varchar,后面的小括号里一定要加上数字	
							
	
			*复制表
				格式:
					create table 表名  like  被复制的表名

	(3)删除表  //用的不多
		*drop table  表名;
				//DROP TABLE stu;
		*drop table if exists 表名;

	(4)修改表    //使用绝招
		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 列名;

//----------------------------------
	关于ddl操作的增删改查
		增   create
		删   drop
		改   alter
		查   show
//--------------------------------------		

六、sqlyog图形化工具
1.在使用sqlyog的时候记得关闭防火墙
2.一定要记住数据库的用户名和密码(123、123456、root、ROOT),到jdbc的时候还是要使用
3.小海豚的序列号请选择第一个,因为不同的序列号权限不一样
4.小海豚的快捷键 tab键

七、DML ------- 对数据的增删改 //☆☆☆☆☆
//数据库包含表,表包含数据
//前提:想要操作数据,必须现有一张表
1.添加 “数据”
(1)语法:
* insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n); //values 而不是value
(2)注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,…值n);
3. 除了数字类型(int double),其他类型需要使用引号(单双都可以)引起来 //日期类型数据必须加引号

			举例:	
				INSERT INTO emp(id,NAME,PASSWORD) VALUES(1,'大张玮','123');
				INSERT INTO emp(NAME,PASSWORD) VALUES('老王','125');
				INSERT INTO emp VALUES(2,'杜小雨','124');
	
2.删除数据 
	(1) 语法:
        * delete from 表名 [where 条件]     //在以后的开发中基本都会有where
    (2)注意:
        1. 如果不加条件,则删除表中所有记录。
        2. 如果要删除所有记录
            1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
            2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
		//使用场景:
			*删除部分数据:  delete from 表名 [where 条件] 
				举例:DELETE FROM emp WHERE id = 3
			
			*删除所有数据:  TRUNCATE TABLE 表名;
				//TRUNCATE TABLE emp WHERE id = 1;  在mysql中是错误的,不能带条件,只能删除所有
			
3.修改数据 
	(1) 语法:
		* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];   //可以同时修改多个值     多个修改值之间使用逗号分隔
			举例:UPDATE  emp SET NAME='asd' , PASSWORD = '456'  WHERE id = 1;
			
	(2) 注意:
		1. 如果不加任何条件,则会将表中所有记录全部修改。  //在以后的开发中基本都会有where

//小总结
	关于ddl操作 数据库 表  的增删改查 
		增   create
		删   drop
		改   alter
		查   show
	
	关于dml操作 数据 的增删改查 
		增   insert
			特点:数据是从外面到里面
		
		删   delete
			特点:数据从里面到外面
		
		改   update
			特点:数据是从外面到里面
		
		查   select
			特点:数据从里面到外面
				//delete和select后面是有from的

八、DQL ---- 查询数据 //☆☆☆☆☆ 特别重要
//特点:查询数据是不会改变表中的数据的

补充:批量插入数据
	INSERT INTO emp VALUES(2,'张三','123'),(3,'李四','234'),(4,'王五','345');
	
	语法:
	select
		字段列表
	from
		表名列表
	where
		条件列表
	group by
		分组字段
	having
		分组之后的条件
	order by
		排序
	limit
		分页限定

1. 多个字段的查询
	select 字段名1,字段名2... from 表名;
	* 注意:
		* 如果查询所有字段,则可以使用*来替代字段列表。  //不推荐使用*   最主要的原因是sql优化方面效率低
2. 去除重复:
	* distinct   //在stream流中也有这个方法     也不推荐使用   最主要的原因是sql优化方面效率低
3. 计算列
	* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
	* ifnull(表达式1,表达式2):null参与的运算,计算结果都为null       //ifnull(age,10)  如果age的值为null,那么会把值替换为10
		* 表达式1:哪个字段需要判断是否为null   
		* 如果该字段为null后的替换值。
		
		//注意:null参与计算,结果都为null
			//字符串参与计算,字符串的值为0
				SELECT NAME*10 FROM emp WHERE id =1;
4. 起别名:
	* as:as也可以省略
		举例:SELECT NAME PASSWORD FROM emp;   //用passsword作为name的别名


5.条件查询
	运算符
		* > 、< 、<= 、>= 、= 、<>
			//在mysql中判断相等用的是一个=      在java中判断相等是两个=
			//  <>:不等于的意思,是mysql特有的    java中没有
		* BETWEEN...AND  
			举例:SELECT id FROM emp WHERE id BETWEEN 1 AND 4;
			//between后面跟的是较小的值  and后面跟的是较大的值

			
		* IN( 集合)     //不推荐使用   最主要的原因是sql优化方面效率低
			// in后面跟的是  小括号
			
		
		* IS NULL  
			//null不能与=连用  只能使用 is  null   或者 is  not  null  
		
		* and  或 &&
		* or  或 || 
		* not  或 !

6.模糊查询	
	//模糊查询 : 不清楚到底是什么数据,我只知道他的一部分(比如:我只知道他姓马,但是全名我不知道)
	* LIKE:模糊查询
		* 占位符:
			* _:单个任意字符
				//应用场景:第几个  有几个   出现这样的字眼就用 _
				
			* %:多个任意字符
				//应用场景: 包含、以什么开头、以什么结尾  出现这样的字眼用%
			
	//精确查询
		SELECT * FROM emp WHERE NAME = '大张玮'    //  = 就是精确查询  like就是模糊查询
		
			
	特殊举例:
		查询名字中带有_的所有人的姓名
			//SELECT * FROM emp WHERE NAME LIKE '%/_%' ESCAPE '/';
发布了19 篇原创文章 · 获赞 0 · 访问量 749
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览