mysql笔记001--入门

1 show databases;显示所有的数据库–cmd命令;

2 test自带数据库,用于测试;

3 进入数据库 use test;

4 显示表:show table;/show tables from db;

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

mysql --version----dos命令;

mysql -V;

6 常见的命令:

查看表:show tables;

查看其他库的表:show tables from db;

7 查看表结构:desc 表名;

8 开发规范:不区分大小写,建议关键字大些,表名,列名小写

9:每条命令用分号结尾;

10 可以换行;

11 注释#注释文字;

– 空格 注释;

多行注释 /* */

数据库Mysql介绍

ddl:数据库定义语言

dcl:数据库控制语言

dql:数据库查询语言

dml:数据库操作语言

保存部门的id,可以节约大量的空间,减少数据的冗余;

查询的东西select

1 查询的列表可以是:表中的字段,常量值,表达式,函数;

2 查询的结果是虚拟的表格

良好的习惯

1 use db;

2 ` `esc下面的着重号:为了可读性!防止关键字误导;列名和关键字;区分是不是字段;**

3 执行谁选中谁;

4 书写正确标准;

查询常量

select 100;

select ‘a’ /select “hello”:不区分字符和字符串;

查询表达式 select 100+1;

查询函数:select version();

起别名

select a as b;

select a b;

为了区分关键字和其他把别名进行字符串的包括;

去除重复

select distinct name from table;

"+"的作用

仅仅有一个功能:运算符;

1 两个操作数都是数字进行加法运算

2 一方位字符型,把字符转换为数字进行运算;

3 如果转换失败 一方为0,进行结果的输出;

4 null+数字:返回null;

5 concat:拼接函数;select concat(“a”,‘b’) as ab;

## 查看表的结构

1 desc table;

2 注意中文和英文的逗号状态;

3 进行拼接;concat();

4 判断函数ifnull();进行拼接的售后如果为null,就赋值为0;

条件查询

1 根据条件表达式进行 where 条件;

2 条件运算符 < > = != <>:有小有大就是不等;

3 根据逻辑表达式进行查询:&& ! || and or not用于连接条件表达式

4 **模糊查询: like /between /and/ in/ is null **

19 模糊查询

1 % 任意多个字符

2 like %a% 匹配只要包含a就会查询出来;

3 匹配: ”_a_a%“

4 第二个字符为_ 的信息:‘‘ $%’ $进行转义;

20 between and

1 查询的时候是包含临界值的;

2 使用 in提高简洁 里面的内容要统一;‘123’ 和123 可以转换;

21 is null

查询某一个部门没有奖金 is null;

有奖金 is not null;

= <> 不能判断null;

数字不能is;

22 安全等于 不建议使用:可读性比较低

不为null <=>

不为1000 <=>

sql语句练习

一 查询没有奖金,且工资小于20000

select * from employee where salary<20000 and 奖金 is null;

二 查询工作不为玩,或者工资为12000

select * from employee where 工作<>玩 or salary=12000;

三 查看部门的表结构

desc table;

四 查看都有哪些部门

select distinct id from employee

五 select * from table 和select * from table where id like?

当字段为null的时候是不一样的;

排序查询

select * from table order by salary desc 降序大的在上面;

asc:升序小的在上面;啥都不写默认是升序;

查询部门编号>90的员工信息,按照入职时间的先后顺序进行排序;

1select * from table where id>=90 order by time asc;

2 根据年薪的高低显示员工的信息和年薪(可以根据表达式)

select * , salary*12+(ifnull(a)) as 年薪 order by 年薪表达式;

order by 后面支持别名;

3 按照姓名的长度进行排序

select length(name) from table desc;

4 排序查询,查询员工的信息,按照工资升序,id降序;

select * from table order by salary asc,id desc;

5 order by是where 查询之后的进一步的条件,都是放在最后

sql测试题

1 根据年薪降序排列,薪水升序;

select * from table order by 年薪 desc,salary asc;

2 插查询工资不在10000到21000之间的,按照工资降序;

select * from table where salary not between 10000 and 21000 order by salary desc;

3 查询邮箱中包含e,按照邮箱的字节数排序,然后根据薪水升序排列

select * from table where email like %e% order by length(email),salary asc;

常见函数的介绍

函数:类似java的方法,实现谋个功能的语句,调用就可以,方法封装了逻辑,隐藏了细节,提高了嗲吗的复用;

select 函数名() from table;(可选)

特点:方法叫什么名字;干什么???

单行函数 concat() ifnull() length()有返回值;

字符函数,

length();获得参数的字节个数;

concat()字符串拼接函数;

upper();lower():大小写的转换;

substr(“asasasa”,2);在mysql中下标从1开始

substr(“asasas”,1,3);截取从1开始,字符长度三个的字符串;

首字母大些,其他的小写进行拼接:concat(upper(substr(“name”,1,1),"_",lower(substr(name,2)))) as output;

select instr(“asasasa”,“as”);返回子串第一次在大串的索引,没有返回0;

trime()去除空格;

select lpad(“asas”,10,"*"):用右边的进行填充制定长度-----rpad右边填充;

select replace(“hello,ppx”,“ppx”,“ppg”) as md;

数学函数,

select round(100.9); 100

seelct round(121.1213) 121

ceil():向上取整

floor()相反;

truncate()截取几个;

mod()求余

日期函数,流程控制函数----if else();

多行函数:进行统计,一组值,统计函数,聚合函数;

日期函数

select now():当前的函数;

curdate():当前的日期,不包含时间

curtime():当前的时间,部包含日期;

select year(now()):返回年

select month(now())

str_to_date():字符串转日期;

date_format():格式日期;

select DATE_FORMAT(NOW(),"%Y年%m月"):大些的M显示的是英文的月;

流程控制函数

if()==if else

SELECT IF(1>2,“yes”,“no”)as ppx;类似于三目运算符;

流程控制函数case

case==switch case in java;

其他函数

select version();

select database();

select user();

常见的函数总结

二分组函数的介绍

用于统计:

聚合函数;

sum() avg() max() min() count()

函数之间可以嵌套 rount(avg(salary,2))

参数支持的类型

sum().avg():适合数值的计算,其他的比如日期是没有意义的;

max() min():支持字符串,日期类型,任何

count()什么类型都支持;

count():计算非空的东西,不为null;;

sum()和avg()忽略null

max() min()同上

所有的分组函数忽略null

3 和distinct搭配使用,分组函数

select sum(distinct salary) from employee,-------------去除重复

count()可以去除重复

max() count():同上

4 具体的count()函数

select count(*) from employee;

只要有一个字段不为null,都会被统计上;

处理个数一般使用count(*),这个比较稳定;

select count(1) 有多少行,就有多少个1;

count()可以添加常量,就有同样的效果

效率的问题

count(*)的效率最高---------------mysisam

count(*)和count(1)-------------效率差不多,比count()字段的效率要高;

一般用count(*)统计行

分组函数使用的注意事项

select avg(salary),id from employee ;

虽然不报错,但是id没有意义

分组函数-------------------------------------------------------------------------

求两个日期相差的天数

select datediff();-----------传入两个日期是字符串类型的,也可以是date类型的;

select datediff(now(),‘2018-8-10’;

select datediff(max(),min());

分组函数

1 查询部门的id,根据部门的位置

select count(*) from emplyee group by location;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值