查看数据库和表
查看所有的数据库
show databases;
建立一个新的数据库
create database database_name;
也可以是
create database if not exists database_name;
表示这个数据库不存在才建立 而不会打断其他sql语句的执行,而如果没有加的话,创建的数据库存在就会直接报错终止程序的执行
数据库中储存数据的表是数据的主要组织单元
查看数据库中的表时,需要先使用这个数据库
use database_name;
查看所拥有的表
show tables;
表操作
创建表用来储存数据
create table (if not exists) table_name(
-- 储存数据类型的字段
name varchar() comment '名字', -- comment是注释,方便我们阅读字段,
-- 并不会对表的创建有什么影响
age int --最后的一个字段不用加分号
);
创建一张相同属性的表
create table newclass like class;
将旧表的值写入新表
insert into newclass select * from class;
查看表的属性
desc table_name;
修改表的属性 alter
向表中插入一行新的表
alter table class add email varchar(20) after name; -- 在name后面插入新的一行,email 字符长度为20
修改表中的的属性
alter table class modify email varchar(200); -- 将email的大小修改为200
删除原有的列
alter table class drop email;
重命名原有列
alter table class rename column name to newName;
重命名表名
alter table rename to/as new_table_name;
CRUD
向表中插入元素
insert into table_name values (数据……),(数据……); -- 没有指定插入的数据对应的字段,那么就是默认的插入顺序就是跟表的插入顺序一样
insert into table_name(插入的字段) values (数据),(数据); 插入的数据要和前面的字段一一对应
修改数据
update students_mark set chinese = 100 where name = '琼恩';
查询数据
全列查询
select * from table_name;
查询指定的字段
select 字段1,字段2…… from table_name;
条件查询
select * from table_name where 限制条件
分页查询
select * from table_name limit 0,4; -- 从第0条数据开始先后查询4条数据
select * from table_name limit 4; -- 也是从第0条数据开始先后查询4条数据
select * from table_name limit 4 offset 0; -- 也是从第0条数据开始先后查询4条数据
查询去重
select distinct * from table_name;
删除这个语法了解下,忘了也行
删除数据 慎用
delete from table_name where condition
删数据库 了解下别用
drop database db_name;
删表
drop table table_name;
排序
升序
降序
条件查询
运算符
and | 一假全为假 |
or |
一真全为真 |
not | 条件为真输出为假,反之亦 |
比较运算符
= | 对null的比较是不安全的,比如null = null 还是null |
<=> | 对null是安全的,null<=>null是true |
value between a0 and a1 | 范围查询,在[a0,a1]之间,也能加not |
like | 模糊匹配,%是匹配任意个字符,_是至多一个字符 not like取放 |
value in (option……) | 若值在option中就返回true |
聚合函数
count([distinct] elem) | 返回查询到的总数,都可以加上distinct去重 |
sum(elem) | 返回查询的数据的总和,不是数字无意义 |
avg(elem) | 返回查询到的数据的平均值,不是数字无意义 |
max(elem) | 返回查询到的数据的最小值,不是数字无意义 |
min(elem) | 返回查询到的数据的最小值,不是数字无意义 |
不是数字无意义但是不会报错
使用format来保留俩位小数点
对使用group by 的查询,要分组的话要使用having
select role, sum(salary) from emp group by role having avg(salary)>2000; -- 查找薪水平均在2000以上的
where分组的是真实的数据进行条件过滤 having是对分组后的组进行过滤