Mysql数据库之基本知识汇总

大概是最全的基本命令
本篇内容都是基于以下版本

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.17                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.17-log                   |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.00 sec)

库管理命令

show databases;       //显示所有库
select user()             //显示连接用户
user   库名;          //切换库
select databases();                           //显示当前所在的库
create database 库名;      //创建库
show tables;                                 //显示当前库的所有表
drop databases 库名;                //删除库              

表管理命令

create table 库名.表名(
					字段名1 类型(宽度),
					字段名2 类型(宽度),
					.....);                 //创建表
desc 库名.表名;             //查看表结构
drop table 库名.表名;       //删除表

表中记录的增删改查

select 字段 from 库.表;          //查看表记录
insert into 库名.表名 values(值列表);        //插入记录
insert into 库名.表名(指定字段) values(值列表);   //给指定字段插入记录
update 库.表 set 字段=值;           //修改表记录
update 库.表 set 字段=值 where 字段=值;         //修改指定字段的值;
delete from 表;                            //删除表记录

修改表结构

alter table 库名.表名 add 字段名 类型(宽度) 约束条件 [after 字段名 | first];          //添加新字段([]中可省略,设置字段的位置在那个字段之后或者第一)
alter table 库名.表名 modify 字段名 类型(宽度) 约束条件 [after 字段名 | first];    //修改字段类型
alter table 库名.表名 change 源字段名 新字段名 类型(宽度) 约束条件;       //修改字段名,当跟新类型和约束条件时,可修改字段类型
alter table 库名.表名 drop 字段名;   //删除字段
alter table 表名 rename 新表名;      //修改表名

mysql****常见数据类型
1.字符型:
定长:char(字符个数) 范围 0-255
变长:varchar(字符个数)
大文本类型:text/blob 字符数大于65535存储时使用

2.数值型:
微小整数:tinyint 有符号范围:-128-127
无符号范围:0-65535
小整数:smalint 有符号 -32768~32767
无符号 0~65535
中整数:mediumint 有符号范围:-223 ~ 223-1
无符号范围:0 ~ 224-1
大整数:int 有符号范围:-231 ~ 231-1
无符号范围:0 ~ 232-1
极大整数:bigint 有符号范围:-263 ~ 263-1
无符号范围:0 ~ 264-1
单精度浮点数:float(M,D)
双精度浮点数:double(M,D)
//M为总宽度,D为小数位数,M应大于D
//使用unsigned 标记无符号存储

3.日期时间类型
日期时间类型 datetime //如果不给它赋值,默认为NULL
timestamp //如果不给它赋值,自动获取当前系统时间
日期类型 date
年份类型 year
时间类型 time

4.枚举类型(选择类型)
enum(值1,值2,值3...);  //单选项
set(值1,值2,值3...);  //多选项

MySQL键值
键值的类型:
INDEX 普通索引
UNIQUE 唯一索引
FULLTEXT 全文索引
PRIMARYKEY 主键    
FOREIGNKEY 外键

什么是索引:就是对数据表中的若干字段进行排序的方法,类似于对一本书做目录,有了目录就可以快速定位数据的具体位置.
什么是主键:经常把表中能够唯一标识记录的字段设置为主键字段,不允许有重复,且不许赋NULL,一个表中只有一个主键,如果有多个字段作主键则称为复合主键.
什么是外键:让当前表字段的值在另一个表中字段值的范围内选择.

以下是对匹配条件的一些命令详解,一般应用在查询和修改数据上(例如:select * from 库.表 where 条件)
匹配条件
1.数值比较(字段必须是数值类型 select * from school where age=16;)
= 相等
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!= 不等于
2.字符比较/匹配空/非空
(字段必须是字符类型 select * from school where name=“zs”;)
= 相等
!= 不相等
is null 空
is not null 非空
3.逻辑匹配(多个匹配条件时使用 sql查询 where 条件 and 条件;)
or 逻辑或 条件1 or 条件2 or 条件3;
and 逻辑与 条件1 and 条件2 and 条件3;
! 或 not 逻辑非
4.范围匹配/去重显示
in(值列表)   在...里..
例如:select * from school where age in(16,17,18)
//查询年龄是16 17 18的人
not in(值列表)  不在...里
between 数字 and 数字 在..之间..
例如:select * from school where age between 20 and 25;
//查询在school表中年龄在20到25岁之间的人
distinct 字段名 去重显示
高级匹配条件
1.模糊查询
where 字段名 like “通配符” ; _ 表示一个字符 %表示0~个字符
例:select name from school where name like "_ _ _ _ "
//列出name值4个字符的记录
2.正则表达式
where 字段名 regexp "正则表达式"
正则元字符 :^ 以什么开头
$ 以什么结尾 .任意单个字符 * 前面字符出现的个数
| 或者
例:select name from school where name regexp “^j | y$”;
//列出name值以j开头或者以y结尾的记录.
3.四则运算(字段类型必须是数值型)
+ - * / 加减乘除
% 取余
()提高优先级(意思就是谁加括号先算谁)
例子:

mysql> select id,age,id+age sum from school;
+----+------+------+
| id | age  | sum  |
+----+------+------+
|  1 |   16 |   17 |
+----+------+------+
1 row in set (0.00 sec)
//sum字段是在查询时自己定义的,并不在表结构中,查询完毕后即消失;

操作查询结果
1.MySQL 内置数据统计函数
avg(字段名)     //统计字段平均值
sum(字段名) //统计字段之和
min(字段名)     //统计字段最小值
max(字段名)     //统计字段最大值
count(字段名)     //统计字段个数
例:select count(*) from school where age>16;
//统计年龄大于16的人的个数.
2.查询结果排序
sql 查询 order by 字段名 [asc | desc];
asc 升序排序
desc 降序排序
//默认是升序排序,字段通常是数值类型
例:select name,id from school order by id desc;
3.查询结果分组
sql 查询 group by 字段名;
//通常是字符类型
例:mysql> select class from school group by class
//对school中的class字段进行分组
4.having用法
sql查询 having 条件表达式;
select name from school having name=“bob”;
过滤出name值为bob的结果;
5.限制查询结果显示行数
用法
sql查询 limit 数字;//显示查询结果前多少条记录
sql查询 limit数字1,数字2 //显示指定范围内的查询记录 数字1起始行(0表示第一行),数字2总行数
例如:

mysql> select * from school;
+----+------+----------+------+------+-----------+
| id | name | aihao    | age  | sex  | class     |
+----+------+----------+------+------+-----------+
|  1 | zs   | eat      |   16 | girl | nsd190601 |
|  2 | ls   | playgame |   17 | boy  | nsd190602 |
+----+------+----------+------+------+-----------+
2 rows in set (0.00 sec)
mysql> select * from school limit 0;
Empty set (0.00 sec)
mysql> select * from school limit 1;
+----+------+-------+------+------+-----------+
| id | name | aihao | age  | sex  | class     |
+----+------+-------+------+------+-----------+
|  1 | zs   | eat   |   16 | girl | nsd190601 |
+----+------+-------+------+------+-----------+
1 row in set (0.00 sec)
mysql> select * from school limit 0,2;
+----+------+----------+------+------+-----------+
| id | name | aihao    | age  | sex  | class     |
+----+------+----------+------+------+-----------+
|  1 | zs   | eat      |   16 | girl | nsd190601 |
|  2 | ls   | playgame |   17 | boy  | nsd190602 |
+----+------+----------+------+------+-----------+
2 rows in set (0.00 sec)


基础知识了解大概后还是多敲多用,基础才扎实....

猜你喜欢

转载自blog.csdn.net/qq_45075198/article/details/100775251