文章目录
数据库
数据库的分类
- 关系型数据库
Oracle,MySQL,SQLServer,Access - 非关系型数据库
MongoDB,Redis,Sorl,ElasticSearch,Hive,HBase
SQL语句
SQL分类
- DML数据库操纵语言(insert,delete,update,select简称CRUD)
- DDL数据库定义语言(create table之类)
- DCL 数据库控制语言(grant,revoke 管理员有的相应权限)
- DQL 数据库查询语言(select)
数据库常用操作
建库
- 创建数据库名为XXX
create database XXX default character set uft8;
删库
- 删除表名为XXX的库
drop database XXX;
查看所有数据库
show databases
应用数据库创建表时
use 数据库名
表设计
创建表
包含字段类型及约束
mysql字段类型
字段约束
- 主键约束
id(字段名) int primary key auto_increment,
- 非空约束
password varchar(50) not null #非空约束
- 唯一约束
name varchar(50) unique, # 唯一约束
create table XXX(表名)(
id(字段名) int primary key auto_increment, #主键自增(主键约束)---**每个字段需要用逗号隔开**
name varchar(50) unique, # 唯一约束
password varchar(50) not null #非空约束
)
修改表
- 添加列
alter table XX(表名) add column(字段) XX(字段名) + 字段约束以及类型
删除表
drop table XXX(表名)
查看所有表
show tables
查看某一个表结构/设计表
desc XXX(表名)
表中数据/记录的常用操作语句
向表中插入数据
insert into XXX(表名) values(数据1,数据2,数据3); --**多条添加数据之间用分号隔开**
insert into XXX(表名) values(数据1,数据2,数据3);
查询表中数据
select */XX2(某一字段名),XX2(**字段名之间用逗号隔开**) from XXXX(表名);
修改记录
update XX(表名) set XX(字段名)=yyc where 条件=ww;
删除数据
delete from XX(表名) where 条件
排序
- 按照字段名进行排序
select * from XX(表名) order by YY(字段名) desc (默认升序) ;
记录总数
select count(*/1) from XX(表名);
基本函数
数据转小写 lower
select 'ABC'(原数据) ,lower('ABC')*转小写后的数据* from XX (表名);
数据转大写
select upper(yy字段名) from XX(表名)
数据的长度
select length(XX字段名) from 表名
截取数据
select substr(字段名,起始位置,截取位数) from 表名;
拼接数据
select concat(字段名,'要拼接的数据') from 表名
把字符替换成某个值
select replace (字段名,'被替换的数据','替换成的数据') from 表名;
判断 如果某字段是空就用其他值替换
select ifnull(字段,所替换的值) from 表名;
四舍五入(round)&向上取整(ceil)&向下取整(floor)
- 四舍五入取整
select round(字段名) from 表名
- 四舍五入并保留一位小数
select round(字段名,1) from 表名
- 向上向下取整
select ceil(字段名)*向上取整*,floor(字段名)*向下取整* from 表名
条件查询
聚合函数
分组
GROUP_CONCAT( )
select score,group_concat(student) from exam group by score;
结果
|score |group_concat(student) |
-------------------------------------
|70 |小王,小赵,小高,小高,小秦 |
|80 |小红,小李,小孙,小秦,小马 |
|90 |小张,小钱,小马,小朱,小朱,小钱 |
去重使用
select score,group_concat(distinct student) from exam group by score;
结果
|score |group_concat(student) |
---------------------------------
|70 |小王,小赵,小高,小秦 |
|80 |小红,小李,小孙,小秦,小马 |
|90 |小张,小钱,小马,小朱 |
这样group_concat每行数据的结果中就没有了重复值,但是在数据中的分隔符为默认的逗号’,',如果想修改默认的分隔符,只需要在上述指令中稍作修改:
select score,group_concat(distinct student separator '%') from exam group by score;
结果
|score |group_concat(student) |
---------------------------------
|70 |小王%小秦%小赵%小高 |
|80 |小孙%小李%小秦%小红%小马 |
|90 |小张%小朱%小钱%小马 |