mysql数据库常用命令

基础
定义及特点
        定义: 用于存储数据的软件
        特点: 表是数据存储的核心体现
数据库常见分类
1、RDMS:(Relational Database Management System)关系型数据库系统
特征: 依据关系模型创建的数据库,把数据保存在不同的表中,表与表存在着某些关系。
2、非关系型数据库
非关系型数据库也叫nosql数据库,全称notonlysql。通常数据以对象的形式存储在数据库中,不固定结构,例如列模型,键值对模型。
二、启动
        rpm -qa|grep -i mysql      查看mysql是否安装
        systemctl  status  firewalld.service      查看mysql的状态(mysqld最后的d是 daemon守护进程的意思)
        systemctl  start  mysqld       启动mysql
        systemctl  stop   mysqld       关闭mysql
        systemctl  restart   mysqld      重启mysql
1、进入数据库设置密码:

grant all privileges on *.* to 'root'@'localhost' identified by '123456';

操作语句
    show databases;              显示所有的数据库名字
    create database XX;          创建一个数据库名字为XX
    drop database XX;            删除为XX名字的数据库
    use XX;        进入到XX数据库 (显示Database changed 表示已进入)
    show tables;                  查看当前数据库里面有哪些表
    desc XX;                   查看XX这个表的结构 可以看到字段名称,数据类型,约束,备注
        field ==》字段
        type ==》数据类型
        null ==》是否可以为空
        key ==》primary key主键
        default ==》默认值约束
        Extra ==》额外的备注、auto_increment自增长约束

三、创表操作
create table+表名(字段1名称,数据类型,约束,字段2名称,数据类型,约束);
drop table if exists goods;     -- 如果表存在, 执行删除操作
        -- drop table : 删表      
        -- if exists : 如果存在
create table goods(goodsName varchar(20),price decimal(4, 2));
数据类型
int  存储整数 范围(-2147483647,2147483647)
bigint   存储整数 范围大于2147483647
unsigned       无符号
无符号范围(0 ~ 4294967295)
drop table if exists goods;

四、表结构操作
alter table +表名 rename +新表名;            修改表名
alter table +表名 change +原字段名 +新字段名 数据类型,约束;    修改表字段
alter table+表名 add +字段名 数据类型 约束 first;      

添加表字段,并放在第一个字段前         first 第一,前面
alter table +表名 add +字段名 数据类型 约束 after +字段名;   添加表字段,并放到某个字段后   after 在·····之后
alter table +表名 add(字段1 数据类型,字段2 数据类型); 同时添加两个字段,默认添加到字段最后
    alter table xx表drop xxx字段;   删除xx表的xxx字段
    alter table +表名 drop 字段1,drop 字段2;     删除两个字段
    alter table 表名 modify 字段1 字段类型 after 字段2;   移动字段
    alter table 表名 drop primary key; 删除主键约束 (首先要把自增长删除)
create table goods(id int unsigned primary key auto_increment, goodsName varchar(20),price decimal(6,2),num int,company varchar(20),remark varchar(30));
-- unsigned : 无符号
-- primary key : 主键(唯一,不为空)
-- auto_increment : 自动递增
-- 直接替换字段名使用皆可
char  存储字符 例:char(10)可能占用了10个字节
注意:char(20) char(M) M指最大能存储20个字符,不足的用空格补齐
 varchar(10)    存储字符 varchar(10)表示最大存储20个字符,实际是多少个字符就是多少个
date           建表的时候在日期的后面接date,并且加引号
datetime    日期时间
范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)
decimal   小数
decimal(5,2) 表示共存5位数,小数占2位,整数占3位
 float    默认保存6位精度的数字(包括小数位和整数位) 例:float(20,2)指小数点后面2位


约束条件
primary key   主键约束,物理上存储的顺序
说明:非空唯一,用于唯一标识对应的记录。类似身份证、用来约束主键对应的值不能重复、也不能为空
foreign key   外键约束
在实际开发中,很少会使用到外键约束,会极大的降低表更新的效率
not null       非空约束  说明:表示当前字段对应的值不能为空
default        默认值约束 说明:默认给字段指定默认值 
例:当往这个表当中插入数据的时候不给phone字段插入新的值、则默认用15366667777
auto_increment     自增长约束 说明:作用在整数类型,字段默认从1开始自增
unique    唯一     说明:此字段的值不允许重复

查询语句
    select * from +表名;       查询表中的数据   *号代表的是所有
    select 字段 from +表名;       查询某个字段的数据
    select 字段1,字段2 from +表名     查询多个字段数据 
    select * from +表名 where 字段=值;   条件查询、查询满足某个条件的所有数据(where后面接满足的条件)
    select * from +表名 where 字段!=值;   查询不满足某个条件的所有数据
    select * from +表名 where 条件1 and 条件2;   查询同时满足多个条件数据(and关键字左右的两个条件必须同时满足)
    select * from +表名 where 条件1 or 条件2;  查询满足至少1个条件的数据
    select * from +表名 where 字段 between m and n  查询一个条件范围内的数据(between...and...指定一个范围)
    select * from +表名 where 字段 not in(值1,值2,值3)   查询字段不满足在指定集合中的数据
    select * from +表名 where 字段 in(值1,值2,值3)  查询字段满足在指定的集合中的数据
    select * from +表名 where 字段 is null;      查询字段值为空的数据
    select * from +表名 where 字段 is not null;     查询字段不为空的数据
    select * from +表名 where 字段 like “%值%”    查询某个字段模糊匹配成功的数据 
like:像 %用于匹配字段开头和结尾
select * from +表名 where 字段 limit m,n;   查询限定的数量的数据
select * from +表名 order by 字段 desc    查询的数据根据某个字段从大到小排序 
select * from +表名 order by 字段 asc     查询的数据根据某个字段从小到大排序
select * from +表名 group by 字段;       查询的数据根据某个字段进行分组
select * from +表名 group by 字段 having 条件;   查询的数据根据某个字段进行分组再条件过滤(可以直接跟聚合函数)
having跟在groupby后面,作用相当于where
select class,sum(math) as b from student group by class having b>100; as取别名

插入数据及修改数据
插入   insert into 表名 values(...)
insert into test(id,score,name,phone,time)values(1,89.88,'xiaowang',15355556666,"2020-10-8");
insert into test values(2,78.456,'xiaowang',15344445555,'2020-10-8');
insert into test(id,score,name,phone,time)values(3,78.456,'xiaowang',15344445555,'2020-10-8'),(4,78.456,'xiaowang',15344445555,'2020-10-8');
insert into test values(5,78.456,'xiaowang',15344445555,'2020-10-8'),(6,78.456,'xiaowang',15344445555,'2020-10-8'),(7,78.456,'xiaowang',15344445555,'2020-10-8');
insert into test(id)values(8);
修改    update +表名 set 字段名=值 where 条件

删除操作
Truncate、Delete、Drop 的区别
1、Delete 删除数据时,即使删除所有数据,其中的自增长字段不会从1开始
2、Truncate 删除数据时,其中的自增长字段恢复从1开始
3、Drop 是删除表,所有数据和表结构都删掉总结
在速度上,drop > truncate > delete
如果想删除部分数据用 delete,注意带上 where 子句
如果想删除表,用 drop
如果想保留表而将所有数据删除,自增长字段恢复从1开始,用 truncate
    drop +表名                  删除表数据和表结构,释放空间
    truncate +表名            只是删除表的数据,释放空间
    delete from test1;                        删除表数据,不删除表结构  ==》可以指定表字段值删除

MySQL 操作日志
    记录 MySQL 所有的操作日志(包括增删改查),不过它会耗费数据库5%-10%的性能,所以一般没特别需要时不打开此功能,一般在查找问题时才打开,完成后及时关闭。
    show variables like 'general%';  -- 查看日志功能是否开启
    set global general_log = 1;    -- 开启操作
    set global general_log = 0;    -- 关闭操作
    -- 注意: 日志功能使用完成, 需要记得马上关闭, 避免影响数据库性能!!!!!!
    注意 : MySQL 自带日志功能, 但是开启日志功能,  极其消耗数据库性能, 因此默认情况下是不开启的
    日志目录
   cat /usr/local/mariadb/var/localhost.log

聚合函数
    select count(*) from +表名            统计查询数据的数量
    select sum(字段) from +表名           查询某个字段求和
    select avg(字段) from +表名           查询某个字段平均值
    select distinct(字段) from +表名        对某个字段进行去重
    select min(字段) from +表名;          查询某个字段最小值
    select max(字段) from +表名;          查询某个字段最大值

你可能感兴趣的:(数据库,mysql,服务器)