MySQL基础知识复习(一)

目录

一.DBMS分为两类

二.show

1.显示 show

2.显示表结构 desc,describe

三.select

1. 起别名as。

2.去重distinct

3.限制结果limit

4.可以指定数据库

5.数值运算 +

6.连接符concat

7. between A and B

8. 不等于和等于 <>, <=>

9.排序order by

10.将值与串比较需要加引号,值与值比较不需要加引号;

四.where

1.and or in not

2. 空置NULL检测

3.通配符———转义字符escape

五.正则表达式:regexp

六.数据库utf8

七.函数

1.length 求字符长度

2.concat 连接操作

3.upper,lower 大小写操作

4.substr ,substring一样  截取字符

5.instr 返回子串的首个索引位置。

6.trim   去前后空格,或者字符,(中间的不去)

7.lpad 左填充 。rpad右填充

8.replace  替换

八.数学函数。

1.round 四舍五入

2.ceil 向上取整

3.向下取整。

4.truncate 截断几位小数。

5.mod取余

九.日期函数

1.select now(); 返回当前日期

2.获取指定年月日小时分钟。

3.将指定格式转换成日期

4.date_format 将日期转化成字符

十. 流程控制

1.if

2.case when then 流程控制

十一.聚集函数 

1.sum, avg, 只支持数值型 

max, min,count;可以处理任何类型

2.count详解

 

十二.分组筛选

1.分组前的筛选

2.分组后的筛选

3.按多个字段分组


一.DBMS分为两类

基于共享文件系统的DBMS :Access 

给予客户机——服务器的DBMS:  MySQL Oracle、SqlServer.

二.show

1.显示 show

show status;   // 用于显示广泛的服务器状态信息
show create database;    //显示创建特定的数据库 
show create table;       //显示创建特定的数据表
show grants;             //用来显示授予用户的安全权限
show errors;             //显示服务器错误
show warning;           //显示服务器警告
help show;               //显示可支持的show语句

2.显示结构 desc,describe

显示表departments 的结构。

DESC departments;
 

三.select

1. 起别名as。

如果别名有特殊符号。比如说空格可以用双引号把别名引起来例如“first name”

SELECT first_name,last_name AS name FROM employees;

2.去重distinct

不能部分使用distinct

SELECT DISTINCT vend_id,prod_price FROM products;  //对后面两列都是distinct

select distinct 字段名 from 表名;

3.限制结果limit

SELECT last_name FROM employees LIMIT 5;
//显示五行
SELECT last_name FROM employees LIMIT 5,6;
//从第五条记录开始,显示六行, 注意首条记录是:0

4.可以指定数据库

SELECT products.prod_name FROM crashcoutse.products;

5.数值运算 +

作用:做加法运算
select 数值+数值; 直接运算
select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select null+值;结果都为null

6.连接符concat

+只能做运算符不能做连接符。所以用CONCAT作为连接符。

SELECT CONCAT(first_name,last_name) AS name FROM employees;

7. between A and B

不能调转两个数AB,如果调转不会报错,显示的结果为空。包括端点的临界值。

8. 不等于和等于 <>, <=>

<>  不等于

<=>安全等于      如果等于返回true 不等于返回false

9.排序order by

SELECT prod_id ,prod_price FROM products ORDER BY prod_price DESC,prod_name;
//默认升序排列asc,可设置为降序desc排列。
//desc只能作用于他前面的参数。区别于distinct
//排序顺序可以不在查找的内容里。比如说上面的order by prod_name。

10.将值与串比较需要加引号,值与值比较不需要加引号;

SELECT prod_name,prod_price FROM products WHERE prod_price >= 20;
//不需要单引号
SELECT prod_name,prod_price FROM products WHERE prod_name = 'fuses';
//需要加单引号

 

四.where

1.and or in not

and 运算次序比or的高 为了提高可读性,在运算的时候多使用括号。

select first_name, salary from employees where salary in(2500,3500);
//只会查找2500,和3500这两个salary的值的数据

select first_name, salary from employees where salary in(2500,3500,2600);
//可以这样用。

select first_name, salary from employees where salary between 2500 and 3500;
//会查找2500~3500所有salary值的数据

MYSQL 支持NOT 对IN ,BETWEEN ,和EXISTS 句子取反。和大多数DBMS允许NOT对各种条件取反有很大差别。

2. 空置NULL检测

ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
 

select ifnull(commission_pct,0) from employees;

isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0

is NULL   只能用来判断是不是null不能用来判断数值。大多用在where语句里

select  id from employees where age is 20;
这样写是错误的

is不能单独拿出来

 ​

有null第二条就不返回了

 

3.通配符———转义字符escape

//查询员工名中第二个字符为_的员工名。
SELECT last_name FROM employees WHERE last_name LIKE '_\_';
SELECT last_name FROM employees WHERE last_name LIKE '_$_'ESCAPE '$';
 

 

五.正则表达式:regexp

大致就是like 加上通配符就和regexp一样

'.'点是正则表达式:匹配任意一个字符,不能匹配空字符。

 ​

'|'类似于or

SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;
//可匹配prod_name 中有1000或者有2000的名字

[123]定义一组字符,可从1,2,3中任意匹配一个都符合

[^123]匹配除了这些字符以外的。

SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;
//可以匹配含有'1 Ton'或者'2 Ton'或者'3 Ton'的数据。
//相当于|  'or'

 

六.数据库utf8

utf8 一个汉字三个字节

GBK一个汉字两个字节。

 

七.函数

1.length 求字符长度

SELECT LENGTH('john');          //四个字符
SELECT LENGTH('刘清风hahaha');   //十五个字符  utf8一个中文三个字符

 

2.concat 连接操作

SELECT CONCAT(last_name,' ',first_name)  as 'new name' FROM employees;
//concat 组合的时候可以添加字符,可以有别名。

3.upper,lower 大小写操作

SELECT UPPER('john');
//改为大写
SELECT LOWER('JOHN');
//改为小写

4.substr ,substring一样  截取字符

SELECT SUBSTR('今夜月色真美',5);
//输出  真 
//索引中从1开始不是零区别于limit。
SELECT SUBSTR('今夜月色真美',3,2);
//月色

select concat(upper(substr(first_name,1,1)),substr(first_name,2),' ',upper(substr(last_name,1,1)),substr(last_name,2))  as 'new name' from employees;
//把姓首字母大写,名首字母大写合并在一块,名和姓,中间空格取别名输出

5.instr 返回子串的首个索引位置。

select instr('今晚月色真美,月色绮丽','月色');

 ​

6.trim   去前后空格,或者字符,(中间的不去)

select length(trim('     刘 清风     ')) as out_put;


select length(trim( 'a' from ' aaa刘aa清风aaa'));

7.lpad 左填充 。rpad右填充

select lpad('刘清风', 10,'*') as out_put;

select lpad('刘清风', 2,'*') as out_put;

8.replace  替换

select replace('曾经我也想过一了百了,一了百了','一了百了','再活五百年');

八.数学函数。

1.round 四舍五入

select round(3.33);

select round(-2.59);

2.ceil 向上取整

select ceil (3.00);
select ceil(3.09);

3.向下取整。

mysql> select floor (-9.9);
+--------------+
| floor (-9.9) |
+--------------+
|          -10 |
+--------------+
1 row in set (0.07 sec)

4.truncate 截断几位小数。

mysql> select truncate(1.699999,1); 
+----------------------+
| truncate(1.699999,1) |
+----------------------+
| 1.6                  |
+----------------------+
1 row in set (0.07 sec)

5.mod取余

mysql> select mod(10,-3);
+------------+
| mod(10,-3) |
+------------+
|          1 |
+------------+
1 row in set (0.07 sec)

 

九.日期函数

1.select now(); 返回当前日期

mysql> select now();                
+---------------------+
| now()               |
+---------------------+
| 2020-12-05 19:12:49 |
+---------------------+
1 row in set (0.07 sec)

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2020-12-05 |
+------------+
1 row in set (0.07 sec)
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 19:13:19  |
+-----------+
1 row in set (0.07 sec)

2.获取指定年月日小时分钟。

mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
|        2020 |
+-------------+

3.将指定格式转换成日期

mysql> select str_to_date('1998-3-2','%Y-%c-%d');
+------------------------------------+
| str_to_date('1998-3-2','%Y-%c-%d') |
+------------------------------------+
| 1998-03-02                         |
+------------------------------------+

4.date_format 将日期转化成字符

SELECT DATE_FORMAT(now(),'%y-%m-%d');

十. 流程控制

1.if

SELECT IF(10>5,'larger','small');

2.case when then 流程控制

②case情况1
case 变量或表达式或字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end

③case情况2
case 
when 条件1 then 值1
when 条件2 then 值2
...
else 值n
end

十一.聚集函数 

1.sum, avg, 只支持数值型 

max, min,count;可以处理任何类型

五个函数都忽略了null值,都支持distinct

SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT COUNT(salary) FROM employees;    //为空的值有几个

2.count详解

SELECT COUNT(*) FROM employees;	
SELECT COUNT(1) FROM employees;	
SELECT COUNT(字段) FROM employees;	
//都是求数据量, 前两者差不多。
//第三个要判断字段值是不是空,比较慢,求得数也不是所有字段的总量,是某字段不为null的总量
//因为一条数据总有一个不是null,所以第一个第二个都是。所有字段总量。

 

十二.分组筛选

1.分组前的筛选

2.分组后的筛选

注意having 用来代替where

3.按多个字段分组

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值