笔记sqlMYSQL学习笔记
JoBackRer前言
我的笔记中会用一些字母代替文字如以下:
n. -> 数据库/表名称
v. -> 附加属性
附加属性内容
附加属性 |
解释 |
null |
数据可空 |
notnull |
数据不可空 |
primary key |
设置主键 |
auto_increment |
自增 |
unique |
不能出现重复 |
数据类型
函数方法
绝对值abs()
向下取整floor()
向上取整ceil()
insert(s1,index,len,s2)
s1是目标字符串,index是下标(从1开始),len上添加长度,s2是追加内容
upper()字母转大写
lower()字母转小写
left(s,len)返回s字符串前的len个字符
right(s,len)返回s字符串后的len个字符
substring(s,index,len)截取s字符串,从index开始,长度为len字符
reverse()反方向阅读
curdate()获取日期函数
curtime()获取时间
now()获取当前时间
datediff(d1,d2)日期加n天后的日期
subdate(d,n)和上个方法相反
count()根据某个字段统计总记录数
sum()计算某个字段值总和
avg()求某个字段值的值平均值
max()求某个字段值最大值
min()求某个字段值最小值
trim() 清除空格
IF(布尔条件,真条件执行,假条件执行)
distinct 字段组 去重复
创建删除与使用数据库
1 2 3
| create database n.; 创建数据库 drop database n.; 删除数据库 use n.; 使用数据库
|
表
1 2 3 4 5 6 7 8 9
| 创建一张表 create table n.( 字段名称 数据类型 v., 字段名称 数据类型 v., ..... .... 字段名称 数据类型 v. ); drop table n.;删除表 desc n.; 查询表结构
|
命令 |
解释 |
alter table n. add 字段名称 数据类型 |
新增字段 |
alter table n. change 旧字段名称 新字段名称 数据类型 |
修改字段名称 |
alter table n. drop 字段名称 |
删除字段 |
alter table n. modify 字段名称 数据类型 附加属性 |
修改字段的类型以及附加属性 |
1 2
| insert into n.(字段名称1,字段名称2,...) values(值1,值2,...),(值3,值4,...); 新增多条或单条数据 insert into n. values(所有字段值); 新增数据,此方法省略了书写字段名称,则代表了填写所有字段
|
1 2
| delete from n.; 删除表内所有数据 delete from n. where 字段名称 = 值; 删除指定字段值的整行字段
|
1 2
| update n. set 字段名称 = 值,字段名称 = 值,...;直接修改所有提供字段的值 update n. set 字段名称 = 值,字段名称 = 值,... where 字段名称 = 值; 修改指定字段的值
|
查询
1 2
| select 字段组或* from n.; 查询来自n.的字段所有值`*表示所有字段` select 字段组或* from n. where 字段名称 = 值; 带条件的查询
|
1
| select abs(字段名称) from n.; abs函数包裹单个字段,使用函数查询可以将查询的数据根据函数方法进行修改
|
1 2 3
| select 字段组 from n. group by 字段名称; 根据字段名称进行分组查询 在分组查询中如果需要附加条件的话,不能用where而是使用having select 字段组 from n. group by 字段名称 having 字段名称=字段值;
|
1 2
| select * from n. order by 字段名称 desc; 降序查询字段值排序 select * from n. order by 字段名称 asc; 升序查询字段值排序
|
普通的关联
1
| select * n.1,n.2; 同时查询两个表列出内容
|
交叉连接
1
| select * from n.1 cross join n.2; 将两表交叉连接查询
|
内连接
1 2 3 4 5
| select * from n.1 inner join n.2; 内连接查询 内连接时应当使用on方法将内连接的两个表中相同的字段进行相等,这样才可以查询到正确的值 select * from n.1 inner join n.2 on n.1.sno=n.2.sno; 以sno为相同字段进行连接查询 语法: select * from n.1 inner join n.2 on n.1.字段名称=n.2.字段名称 inner join n.n on n.2.字段名称=n.n.字段名称;
|
还有外连接
left join
左外连接
right join
右外连接