数据库操作
查询有哪些数据库
show databases;
使用某个数据库
use 数据库名;
创建一个新的数据库
create database 数据库名;
删除某个数据库
drop database 数据库名;
表操作
查询当前数据库下有哪些表
show tables;
查看表结构
desc 表名;
删除数据表(所有数据和字段全部消除)
drop table 表名;
查询表的所有数据
select * from 表名;
删除表的所有或部分数据(字段仍保留)
delete from 表名 (where 逻辑断言值为真);
在某个表内添加数据
insert into 字段名 values (value1,value2,...,valueN);
查询某个表的某些字段的数据
select 字段名1,字段名2,... from 表名 ;
更新某个表的数据
update 表名 set 字段名1=需更新值,字段名2=需更新值... where 逻辑断言值为真;
//更新至可以为赋值语句,如字段1=1000,字段1=字段1*5等等
增加字段(属性/列)
alter table 表名 add 字段名 数据类型 [约束条件];
删除字段(属性/列)
alter table 表名 drop 字段名;
基础查询
1.查询单表单字段
select 字段名 from 表名
2.查询单表多字段
select 字段名1,字段名2,字段名n from 表名
3.查询单表全部字段
select * from 表名
4.查询常量
select 100;
select 'helloworld';
5.查询表达式
select 100%2;
6.查询函数
select version();
7.字段起别名
select 字段名1 as 别名1,字段名2 as 别名2 from 表名;
//也可以不带as,留空格即可
//别名中间不能有空格,如果有可以用下划线代替
8.去重操作
select distinct 字段名 from 表名
9.加号作用(可以跳过不看,基本也用不到)
select 字段名1+字段名2 from 表名 //报错
//mysql中的加号有且仅有相加的作用,不能运用于字符串连接
10.concat()函数
select concat(字段名1,字段名2...) from 表名
//concat函数的作用是将这括号内字段拼接输出,如果有一个为null那么输出值就为null
11.ifnull()函数
ifnull(可能为null的字段名,如果为null就返回什么值) from 表名
//ifnull函数需要两个参数,左边的是字段名,右边的是如果字段为null则返回什么值。
12.查询的基本句式
select 字段1,字段2,...
from 表名
where 逻辑断言值为真
查询的计算思路(循环)
查询语句的语义
1、from; //首先看在那几个表里面查
2、where;//条件是什么
3、select //输出时要输出哪些字段
从表中选出满足条件为真的行按照所要求的字段输出。
13.按条件表达式筛选
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
= | 等于 |
!= | 不等于(虽然能用,但是不推荐) |
<> | 不等于(推荐使用规范的不等号) |
>= | 大于等于 |
<= | 小于等于 |
14.按逻辑表达式选择
符号 | 功能 |
---|---|
and / && | 与 |
or / || | 或 |
not / ! | 非 |
优先级
NOT>AND>OR
如果不清楚,建议使用括号()
15.字符串操作 %与_
select * from instructor where name like "%i";
select * from instructor where name like "%i%";
select * from instructor where name like "%i_";
//%表示任意字符串(可以多个字符),_表示任意单个字符,根据情况组合使用
16.between and
between a and b。在a和b中间取值
select * from test where value between 1 and 2;
//between and需要两个参数,限制了取值范围,增加了可读性
17.in
相当于一堆“OR”,把所有可取的值放到括号内以逗号隔开
需要注意的是括号内的值的类型必须相同,如果为字符串类型,还需要在字符串两边加’’
select * from test where value in (1,2,3,4,5);
//in中不能使用_和%(可见15)
18.is null和 is not null
select * from test where value is null;
select * from test where value is not null;
//判断是否为null值
//ps,之前的=和<>不能判断是否为null
19. 安全等于 <=>
符号 | 可判断的范围 |
---|---|
= | 判断普通数值(数字,字符串) |
is null | 判断null值 |
<=> | 既可以判断普通数值,又可以判断null值 |
<=>缺点:可读性差,因为=是等于,<>是不等于,容易看混
20.排序查询order by
select * from 表名 order by 字段名,字段别名,函数,表达式 asc/desc
1.order by 子句中可以接字段名,字段别名,函数,表达式
2.order by 最后asc表升序,desc表降序,什么都不写默认为降序
3.order by 一般在所有查询条件的最后边
4.order by 后面可以有多个排序,运行时按从左到右执行。举个例子
select * from test order by id asc,grade desc;
此处就是先按id升序排列,如果碰到id相同,那么按成绩降序排列
字符函数
21.length函数
作用:返回传入字符串有多少字节
length(‘需要求出字节个数的字符串’)
22.大写/小写化 upper和lower
upper(‘需要大写的字符串’)
lower(‘需要小写的字符串’)
23.substr字符串截取
四种函数重载
1.substr(‘字符串’,数字),表示对在数字**之后的(包括数字所在的)**后面的字符串截取
举例
select substr('abcdtest',5);
表示从第五个开始截取后面所有的
输出的值为test
2.substr(‘字符串’,数字1,数字2),表示从数字1的位置截取数字2数目的字符
举例
select substr('abcdtest',5,3);
表示从第五个开始截取三个字符
输出的值为tes
24.instr 返回起止位置
instr(‘字符串1’,‘字符串2’);
返回字符串二在字符串1的起点位置。易知需要字符串2是字符串1的一部分,如果找不到则返回0
举例
select instr('abcd','cd');
表示cd在字符串abcd的起始点位置
返回的值为3
25.trim 去空格/特定字符
1.去空格,只能去两边的,不能去中间的
trim(' 12 3 ');
返回的值为12 3
2.去特定字符
trim('aa' ,'aaa 12aa3 aa');//注意a的数目
返回的值为a 12aa3 ,说明是按与特定字符一小段一小段去除的
26.lpad,rpad指定字符左、右填充
lpad(‘字符串’,‘数字’,’‘字符);
lpad(‘字符串’,‘数字’,’'字符);
意思是如果字符串不到数字个数的长度的话,就用字符填充
举例
select lpad('123',5,'%');
select rpad('123',5,'%');
输出的值分别为
lpad:%%123
rpad:123%%
27.replace函数
replace(‘字符串’,‘需要替下的字符’,‘替换的字符’);
意思是将这个字符串之内所有需要替下的字符换成另一种字符
举例:
select replace('qwer','r','q');
输出的结果为’qweq’
数字函数
28.四舍五入函数round
默认在整数位四舍五入,所以看小数点后一位。
也可以多加一个参数表示保留小数点后几位
举例
select round(1.2);
select round(-1.6);
select round(1.256,2);
结果为1,-2,1.26
29.向上取整函数ceil与向下取整函数floor
ceil返回≥该参数的最小整数,floor返回≤该参数的最大整数
举例
select ceil(1.2);
select floor(-1.7);
结果为2,-2
30.截断函数truncate
truncate(数字,需要保留多少小数位),返回截去小数位之后的数字
举例
select truncate(1.222,2);
结果为1.22
聚集函数
聚集函数 | 作用 | 支持类型 | 是否支持distinct去重 | 是否忽略NULL |
---|---|---|---|---|
avg() | 求平均值 | 数值型 | 是 | 是 |
max() | 求最大值 | 任何类型 | 是 | 是 |
min() | 求最小值 | 任何类型 | 是 | 是 |
count() | 求行数 | 任何类型 | 是 | 是 |
sum() | 求和 | 数值型 | 是 | 是 |