MySql的基本语法操作

时间:2024-10-07 07:29:19

查看数据库和表

查看所有的数据库

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是对分组后的组进行过滤