脚本宝典收集整理的这篇文章主要介绍了mysql-day01笔记,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库: 英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。 顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了 具有特定格式的数据。
数据库管理系统: DataBaseManagement,简称DBMS。 数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以 对数据库当中的数据进行增删改查。
常见的数据库管理系统: MySQL、Oracle、MS SqlServer、DB2、sybase等…
SQL:结构化查询语言 程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL 语句,最终来完成数据库中数据的增删改查操作。
SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用, 同时在Oracle中也可以使用,在DB2中也可以使用。
语法: net stop 服务名称; net start 服务名称;
本地登录命令(显示编写密码的形式): mysql -u用户名(root) -p密码
本地登录(隐藏密码的形式): mysql -u用户名(root) -p(回车) Enter password:(密码)
退出mysql exit
查看mysql中有哪些数据库 show databases;
选择使用某个数据库 use (数据库名称)
创建数据库 create database (数据库名称);
查看mysql数据库的版本号: select version();
查看当前使用的数据库 select database();
导入数据 source (完整路径名称)
查看表结构 desc (表名); 注意:mysql命令是不见 “;” 不执行,";"表示结束 "c"用来终止一条命令的输入。
什么是表table?
姓名 性别 年龄(列:字段) --------------------------- 张三 男 20 ------->行(记录) 李四 女 21 ------->行(记录) 王五 男 22 ------->行(记录)
数据库当中是以表格的形式表示数据的,因为表比较直观。
任何一张表都有行和列: 行(row):被称为数据/记录。 列(column):被称为字段。
分为:
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....
select (字段名) from (表名);
注意:
select 和 from 都是关键字
强调:
对于SQL语句来说,是通用的, 所有的SQL语句以“;”结尾。 另外SQL语句不区分大小写,都行。
使用逗号隔开 “,”
select (字段名1),(字段名2) from (表名);
第一种方式:
select (字段名1),(字段名2),(字段名3)…… from (表名);
第二种方式:
select * from (表名);
使用as关键字起别名
select (字段名) as (别名) from (表名);
注意:
起别名只是将显示的查询结果列明显示为 别名 ,原列名不会发生改变
记住:
select 语句是永远都不会进行修改操作的。(因为只负责查询)
as 关键字可以省略
select (字段名) (别名) from (表名);
如果起别名的时候,别名里面有空格需要加 单引号 或者 双引号
select (字段名) '别 名' from (表名);
select (字段名) "别 名" from (表名);
注意:
注意:在所有的数据库当中,字符串统一使用单引号括起来, 单引号是标准,双引号在oracle数据库中用不了。但是在mysql 中可以使用。
强调:
数据库中的字符串采用单引号括起来是标准的。双引号不标准
字段可以使用数学表达式,如:
select (年薪)* 12 from (表名)
不是将表中所有数据都查出来。是查询出来符合条件的。
语法格式:
select (字段名1),(字段名2),(字段名3)……
from (表名)
where (条件)
基本的:
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 '%_%'; // 转义字符。
使用 order by 进行排序,默认是升序 如:
select
(字段名1),(字段名2)
from
(表名)
order by
(用户工资); // 默认是升序!!!
使用 desc 指定降序,如:
select
(字段名1),(字段名2)
from
(表名)
order by
(用户工资) desc; // 降序
使用 asc 指定升序,如:
select
(字段名1),(字段名2)
from
(表名)
order by
(用户工资) asc; // 升序
多个字段排序使用逗号隔开,如:
select
(字段名1),(字段名2)
from
(表名)
order by
(用户工资) asc,(用户姓名) asc; // (用户工资)在前,起主导,只有(用户工 资)相等的时候,才会考虑启用(用户姓名)排序。
用数字表示需要排序的列,如:
select (字段名1),(字段名2)
from (表名)
order by 2; // 2表示第二列。
关键字顺序不能变: select … from … where … order by …
以上语句的执行顺序必须掌握:
第一步:from
第二步:where
第三步:select
第四步:order by(排序总是在最后执行!)
单行处理函数的特点:一个输入对应一个输出。 和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!)
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
多行处理函数的特点:输入多行,最终输出一行。
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 (表名);
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 (表名);
在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作。 这个时候我们需要使用分组查询,怎么进行分组查询呢? (假如计算每个部门的工资和,就要对部门进行分组)
select
...
from
...
group by
...
分组查询使用 group by 子句
select
...
from
...
where
...
group by
...
order by
...
以上关键字的执行顺序:
- from
- where
- group by
- select
- order by
在一条select语句当中,如果有group by语句的话, select后面只能跟:参加分组的字段,以及分组函数。 其它的一律不能跟。
两个字段联合分组使用逗号隔开
having 不能单独使用,having 不能代替 where,having 必须 和 group by联合使用。
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,请注明来意。