mysql-day01笔记

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了mysql-day01笔记脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

文章目录

      • 1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?
      • 2、怎么在cmd里面使用命令启动和关闭服务?
      • 3、使用bin目录下的mysql.exe 命令来连接mysql数据库服务器
      • 4、mysql常用命令:
      • 5、数据库当中最基本的单元是表:table
      • 6、关于SQL语句的分类?
      • 7、简单查询
        • 7.1、查询一个字段
        • 7.2、查询多个字段
        • 7.3、查询所有字段
        • 7.4、给查询的列起别名
        • 7.5、使用数学表达式
      • 8、条件查询
        • 8.1、什么是条件查询:
        • 8.2、都有哪些条件符
      • 9、排序
        • 9.1、升序或降序
        • 9.2、多个字段排序
        • 9.3、根据字段的位置排序
        • 9.4、关键字的执行顺序
      • 10、数据处理函数
        • 10.1、单行处理函数
        • 10.2、常见的单行处理函数
      • 11、分组函数(多行处理函数)
        • 11.1、分组函数在使用的时候需要注意
      • 12、分组查询
        • 12.1、什么是分组查询?
        • 12.2、关键字的执行顺序
          • 结论:
        • 12.3、使用having可以对分完组之后的数据进一步过滤。
      • 13、大总结(单表查询学完了)

1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?

数据库: 英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。 顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了 具有特定格式的数据。

数据库管理系统: DataBaseManagement,简称DBMS。 数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以 对数据库当中的数据进行增删改查。

常见的数据库管理系统: MySQL、Oracle、MS SqlServer、DB2、sybase等…

SQL:结构化查询语言 程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL 语句,最终来完成数据库中数据的增删改查操作。

SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用, 同时在Oracle中也可以使用,在DB2中也可以使用。

2、怎么在cmd里面使用命令启动和关闭服务?

语法: net stop 服务名称; net start 服务名称;

3、使用bin目录下的mysql.exe 命令来连接mysql数据库服务器

本地登录命令(显示编写密码的形式): mysql -u用户名(root) -p密码

本地登录(隐藏密码的形式): mysql -u用户名(root) -p(回车) Enter password:(密码)

4、mysql常用命令:

退出mysql exit

查看mysql中有哪些数据库 show databases;

选择使用某个数据库 use (数据库名称)

创建数据库 create database (数据库名称);

查看mysql数据库的版本号: select version();

查看当前使用的数据库 select database();

导入数据 source (完整路径名称)

查看表结构 desc (表名); 注意:mysql命令是不见 “;” 不执行,";"表示结束 "c"用来终止一条命令的输入。

5、数据库当中最基本的单元是表:table

什么是表table?

  姓名	性别	年龄(列:字段) 
  ---------------------------
  张三	男			20            ------->行(记录)
  李四	女			21            ------->行(记录)
  王五	男			22            ------->行(记录)

数据库当中是以表格的形式表示数据的,因为表比较直观。

任何一张表都有行和列: 行(row):被称为数据/记录。 列(column):被称为字段。

6、关于SQL语句的分类?

分为:
			DQL:
				数据查询语言(凡是带有select关键字的都是查询语句)
				select...

			DML:
				数据操作语言(凡是对表当中的数据进行增删改的都是DML)
				insert delete update
				insert 增
				delete 删
				update 改
	
				这个主要是操作表中的数据data。
	
			DDL:
				数据定义语言
				凡是带有create、drop、alter的都是DDL。
				DDL主要操作的是表的结构。不是表中的数据。
				create:新建,等同于增
				drop:删除
				alter:修改
				这个增删改和DML不同,这个主要是对表结构进行操作。
	
			TCL:
				不是王牌电视。
				是事务控制语言
				包括:
					事务提交:commit;
					事务回滚:rollback;
	
			DCL:
				是数据控制语言。
				例如:授权grant、撤销权限revoke....

7、简单查询

7.1、查询一个字段

	select (字段名) from (表名);

注意:

selectfrom 都是关键字

强调:

对于SQL语句来说,是通用的, 所有的SQL语句以“;”结尾。 另外SQL语句不区分大小写,都行。

7.2、查询多个字段

使用逗号隔开 “,”

	select (字段名1),(字段名2) from (表名);

7.3、查询所有字段

第一种方式:

	select (字段名1),(字段名2),(字段名3)…… from (表名);

第二种方式:

	select * from (表名);

7.4、给查询的列起别名

使用as关键字起别名

	select (字段名) as (别名) from (表名);

注意:

起别名只是将显示的查询结果列明显示为 别名 ,原列名不会发生改变

记住:

select 语句是永远都不会进行修改操作的。(因为只负责查询)

as 关键字可以省略

	select (字段名) (别名) from (表名);

如果起别名的时候,别名里面有空格需要加 单引号 或者 双引号

	select (字段名) '别 名' from (表名);
	select (字段名) "别 名" from (表名);

注意:

注意:在所有的数据库当中,字符串统一使用单引号括起来, 单引号是标准,双引号在oracle数据库中用不了。但是在mysql 中可以使用。

强调:

数据库中的字符串采用单引号括起来是标准的。双引号不标准

7.5、使用数学表达式

字段可以使用数学表达式,如:

	select (年薪)* 12 from (表名)

8、条件查询

8.1、什么是条件查询:

不是将表中所有数据都查出来。是查询出来符合条件的。

语法格式:

	select (字段名1),(字段名2),(字段名3)……
	from (表名)
	where (条件)

8.2、都有哪些条件符

基本的:

1、= 等于 2、<> 或 != 不等于 3、< 小于 4、<= 小于等于 5、> 大于 6、>= 大于等于

特殊的:

1、between … and … (两个值,等同于 >= and <=) 2、in null 为 null (is not null 不为空)

注意:

在数据库当中null不能使用等号进行衡量。需要使用is null 因为数据库中的null代表什么也没有,它不是一个值,所以不能使用 等号衡量。

3、and 并且 4、or 或者

注意:

and和or同时出现的话,会有优先级的问题 and优先级比or高。 以上语句会先执行and,然后执行or。

使用 小括号 避免优先级问题

5、in 包含,相当于多个 or (not in 不在这个范围中) 使用 or

	select (字段名1),(字段名2),(字段名3)……
	from 表名 
	where (字段名1) = 'zhangsan' or (字段名1) = 'lisi';

使用 in

	select (字段名1),(字段名2),(字段名3)……
	from 表名 
	where (字段名1) in('zhangsan','lisi');

注意:

in不是一个区间。in后面跟的是具体的值。

6、not 取非,主要用在 is 或 in 中 is null is not null in not in

7、like 称为模糊查询,支持%或下划线匹配 %匹配任意多个字符 下划线:任意一个字符。 (%是一个特殊的符号,_ 也是一个特殊符号)

如:

		找出名字以T结尾的?
			select ename from emp where ename like '%T';
			

		找出名字以K开始的?
			select ename from emp where ename like 'K%';
	
		找出第二个字每是A的?
			select ename from emp where ename like '_A%';
		
		找出第三个字母是R的?
			select ename from emp where ename like '__R%';

注意:如果名字中有"_"

找出名字中有“_”的?
			select name from t_student where name like '%_%'; //这样不行。

			mysql> select name from t_student where name like '%_%'; // 转义字符。

9、排序

9.1、升序或降序

使用 order by 进行排序,默认是升序 如:

	select 
		(字段名1),(字段名2)
	from
		(表名)
	order by
		(用户工资); // 默认是升序!!!

使用 desc 指定降序,如:

	select 
		(字段名1),(字段名2)
	from
		(表名)
	order by
		(用户工资) desc; // 降序

使用 asc 指定升序,如:

	select 
		(字段名1),(字段名2)
	from
		(表名)
	order by
		(用户工资) asc; // 升序

9.2、多个字段排序

多个字段排序使用逗号隔开,如:

	select 
		(字段名1),(字段名2)
	from
		(表名)
	order by
		(用户工资) asc,(用户姓名) asc; // (用户工资)在前,起主导,只有(用户工								资)相等的时候,才会考虑启用(用户姓名)排序。

9.3、根据字段的位置排序

用数字表示需要排序的列,如:

	select (字段名1),(字段名2) 
	from (表名) 
	order by 2; // 2表示第二列。

9.4、关键字的执行顺序

关键字顺序不能变: select … from … where … order by …

		以上语句的执行顺序必须掌握:
			第一步:from
			第二步:where
			第三步:select
			第四步:order by(排序总是在最后执行!)

10、数据处理函数

10.1、单行处理函数

单行处理函数的特点:一个输入对应一个输出。 和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!)

10.2、常见的单行处理函数

1、lower 转换小写

	select lower((字段名)) from (表名);

2、upper 转换大写

	select upper((字段名)) from (表名);

3、substr 取子串 (substr(别截取的字符串,起始下标,截取的长度))

	select substr((字段名),(起始下标),(截取的长度)) from (表名);

4、concat 函数进行字符串的拼接

	select concat((字段1),(字段2)) from (表名);

字段1 与 字段2 进行字符串拼接

5、length 取长度

	select length((字段名)) from (表名);

6、trim 去空格

	select * from (表名) where (姓名) = trim('  姓名');

使用 trim 去掉前后的空格

7、str_to_date 将字符串转换成日期 8、date_format 格式化日期 9、format 设置千分位 10、case…when…then…when…then…else…end

	select (员工姓名),(员工岗位),(员工工资),
	(case (员工岗位) when 'MANAGER' then (员工工资)*1.1 when 'SALESMAN' then (员工工资)*1.5 else (员工工资) end) as '员工工资'
	from (表名);

当员工的工作岗位是MANAGER的时候,工资上调10%,当工作岗位是SALESMAN的时候,工资上调50%,其它正常。 (注意:不修改数据库,只是将查询结果显示为工资上调) 11、round 四舍五入

	select round(1236.567, 0) as result from (表名);//保留整数位。
	select round(1236.567, 1) as result from (表名); //保留1个小数
	select round(1236.567, 2) as result from (表名); //保留2个小数
	select round(1236.567, -1) as result from (表名); // 保留到十位。

12、rand() 生成随机数

	select round(rand()*100,0) from (表名);// 100以内的随机数

13、ifnull 可以将 null 转换成一个具体值

ifnull是空处理函数。专门处理空的。 在所有数据库当中,只要有NULL参与的数学运算,最终结果就是NULL。

	select (工资) + (奖金) from (表名);

当奖金存在 null 的情况下与 工资相加 结果会为 null 注意:

NULL只要参与运算,最终结果一定是NULL。为了避免这个现象,需要使用ifnull函数。 ifnull函数用法:ifnull(数据, 被当做哪个值)

	select (姓名), ((工资) + ifnull((奖金), 0)) * 12 as (年薪) 
	from (表名);

奖金为NULL的时候,将奖金当做0

11、分组函数(多行处理函数)

多行处理函数的特点:输入多行,最终输出一行。

5个:

count 计数 sum 求和 avg 平均值 max 最大值 min 最小值

注意:

分组函数在使用的时候必须先进行分组,然后才能用。 如果你没有对数据进行分组,整张表默认为一组。

分组函数的用法:

		//找出最高工资?
		mysql> select max((工资)) from (表名);
		//找出最低工资?
		mysql> select min((工资)) from (表名);
		//计算工资和:
		mysql> select sum((工资)) from (表名);
		//计算平均工资:
		mysql> select avg((工资)) from (表名);
		//计算员工数量?
		mysql> select count((工资)) from (表名);

11.1、分组函数在使用的时候需要注意

1、分组函数自动忽略NULL,你不需要提前对NULL进行处理。 2、分组函数中count(*)和count(具体字段)有什么区别?

count(具体字段):表示统计该字段下所有不为NULL的元素的总数。 count(*):统计表当中的总行数。(只要有一行数据count则++) 因为每一行记录不可能都为NULL,一行数据中有一列不为NULL,则这行数据就是有效的。

3、分组函数不能够直接使用在where子句中。

因为分组函数在使用的时候必须先分组之后才能使用。 where执行的时候,还没有分组。所以where后面不能出现分组函数。

	select sum((工资)) from 表名; 

这个没有分组,为啥sum()函数可以用呢?

因为 select 在 group by 之后执行。

4、所有的分组函数可以组合起来一起用。

	select sum((工资)),min((工资)),max((工资)),avg((工资)),count(*) 
	from (表名);

12、分组查询

12.1、什么是分组查询?

在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作。 这个时候我们需要使用分组查询,怎么进行分组查询呢? (假如计算每个部门的工资和,就要对部门进行分组)

		select
		...
		from
		...
		group by
		...

分组查询使用 group by 子句

12.2、关键字的执行顺序

	select
	...
	from
	...
	where
	...
	group by
	...
	order by
	...

以上关键字的执行顺序:

  1. from
  2. where
  3. group by
  4. select
  5. order by
结论:

在一条select语句当中,如果有group by语句的话, select后面只能跟:参加分组的字段,以及分组函数。 其它的一律不能跟。

两个字段联合分组使用逗号隔开

12.3、使用having可以对分完组之后的数据进一步过滤。

having 不能单独使用,having 不能代替 where,having 必须 和 group by联合使用。

13、大总结(单表查询学完了)

	select 
	...
	from
	...
	where
	...
	group by
	...
	having
	...
	order by
	...

以上关键字只能按照这个顺序来,不能颠倒。

执行顺序?

  ```执行顺序
  1. from
  2. where
  3. group by
  4. having
  5. select
  6. order by
  ```
	从某张表中查询数据,
	先经过where条件筛选出有价值的数据。
	对这些有价值的数据进行分组。
	分组之后可以使用having继续筛选。
	select查询出来。
	最后排序输出!

select后面只能跟:参加分组的字段,以及分组函数。 其它的一律不能跟。

两个字段联合分组使用逗号隔开


如有错误还请大佬指出

脚本宝典总结

以上是脚本宝典为你收集整理的mysql-day01笔记全部内容,希望文章能够帮你解决mysql-day01笔记所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:数据库