mysql系列--基础知识

   注:本文为mysql基础知识的总结,基础点很多若是有些不足,还请自行搜索。持续更新

 一、mysql简介


       数据库简介

       数据库是计算机应用系统中的一种专门管理数据资源的系统

       数据库是一组经过计算机处理后的数据,存储在多个文件中,而管理数据库软件被称为数据库管理系统----DBMS

       而MYSQL ORACLE等就是数据库管理系统    

       mysql是一款数据库管理软件  免费使用

       sql

        sql(结构化查询语言) 数据库管理系统通过sql语言来管理数据库中的数据。sql语言是一种数据库查询和长须设计语言。其主要用于存取数据、查询数据、更新数据和管理关系数据库系统。其中包含以下几种

       DDL语句:数据定义语言主要用于定义数据库、表、视图、索引和触发器等。包括created、 alter和drop语句

       DML语句:数据操纵语言主要用于插入数据、查询数据、更新数据和删除数据。包括insert语句、select语句、update语句和delete语句

       DCL语句:数据控制语言主要用于控制用户的访问权限。其中包括grant语句和revoke语句。

二、mysql命令行操作


    1、进入 mysql

mysql -u root -p

 

    退出数据库 

mysql退出三种方法:
mysql > exit;
mysql > quit;
mysql > q

   2、查看所有数据库

show databases;

   3、创建数据库 


CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

使用数据库

use feng;

  4、显示选择数据库所有表

show tables;

  5、显示某个表结构

desc  table;
show column from table;

  6、创建表

  

#基本语法
 
create table name(
       列名  类型   是否为空  默认值  自增   主键,
       列名   类型   是否为空
)ENGINE=InnoDB  DEFAULT CHARSET=utf8

not null    #不为空
default num  #默认值
auto_incrememt  #自增
primary  key   #主键  

  7、删除表

drop table  表名

8、清空表

delete from 表名
#表还在,数据清空
truncate table 表名

9、修改表

#添加列:
      alter table 表名 add  列名 类型
#删除列:
      alter table 表名 drop column 列名
#修改列:
      alter table 表名  modify column 列名
      alter  table  表名  change 原列名 新列名 类型;
#添加主键
alter table 表名 add primary key(列名); #删除主键 alter table 表名 drop primary key; alter table 表名 modify 列名 intdrop primary key; # 修改默认值: ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; # 删除默认值: ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; # 更改表名 rename table 原表名 to 新表名;

 10、表内容的操作

          插入内容 

insert into 表名 (字段)  values (信息)

          删除内容 

delete from 表名字 [where 条件]

          修改内容

update 表名  set 列名=表达式  where 条件

update 表名    set(列名)=(子查询) where 条件 

          查找内容

select * from 表名
select * from 表名  where 条件

条件 #
and 多个条件 select * fromwhere name='feng' and age>25 ; #between 区间 年龄在20-25 select * fromwhere age between 20 and 25; #in 多个元素中 select * fromin (22,21,23,25); #not 不在多个元素中 select * from 表 no in (20,21); #在子查询结果中 select * fromin (select age from 表2);
通配符 #
% %feng feng结尾的name select * fromwhere name like '%feng' #_ f_ f开头的name select * fromwhere name like 'f_'

限制
select * from 表 limit 5, //前五行 select * from 表 limit 0,5; //从0开始的五行 select * from 表 limit 5 offset 2; //从 第二行开始的五行

排序
select * fromorder byasc //从小到大 select * fromorder bydesc //从大到小 select * fromorder by 列1 desc,列2 asc //列1 从大到小 列2 小到大

分组
select name fromgroup by name #根据time分组 select name,time fromgroup by name, time # 根据name,timselect name,time,id fromwhere id>10 group by name,time order by id desc #获取name time id按照name time 分组从大道小排序
select  name,age fromgroup by  age having max(id)<2 //获取name age按照age分组 获取最大id<2的数据


一些函数
count(*)
sum (score) //表示和
max(score) //表示最大数
min(score) //表示最小数
having #表示前面查询后结果,在处理用having 进行条件筛选

#:group by 必须在where之后, order by 之前

连表


select a.name,a.phone,b.name from a,b where a.xid= b.xid

有对应关系则显示所有
select a.name,a.phone,b.name from a inner join b on a.xid=b.xid
有对应则显示,如果b中没有,则值为null
select a.name,a.phone,b.name from a left join b on a.xid=b.xid
有对应则显示,如果a中没有,则值为null
select a.name,a.phone,b.name from a right join b on a.xid=b.xid
原文地址:https://www.cnblogs.com/jjffeng-/p/7862928.html