请选择 进入手机版 | 继续访问电脑版

[MySql] MySQL 基础常用下令 总结

[复制链接]
查看60 | 回复6 | 2021-9-12 23:04:31 | 显示全部楼层 |阅读模式
目次

MySQL 基础常用下令

注意 :MySQL在centos中安装的是5.7版本的,编辑MySQL时会有个报错,必要 实验 :

  1. set@@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
复制代码

1. SQL语句

每个下令 实验 竣事 加分号竣事      

  • 查询全部 数据库:show databases;
  • 切换数据库:use 库定名 ;
  • 创建数据库:create database [IF NOT EXISTS] 库名;
  • 删除数据库:drop database [IF EXISTS] 库名;
  • 查询数据库创建:show 建库语句;
  • 指定数据库采用的字符集:CHARACTER SET
  • 修改数据库的编码集:alter database 数据库名 CHARACTER SET 编码集;

注意 :不要修改mysql服务器的编码集,表的编码集默认和库划一

2. 建表

格式:

  • create table [if not exists] 表名(
  • 字段1 数据范例 字段属性,
  • 字段2 数据范例 字段属性,...
  • 字段N 数据范例 字段属性
  • )engine=引擎 default charset=编码集;
  • 查看当前数据库:select database();
  • 查看建表语句:show create table 表名;
  • 查看表布局 :desc 表名;
  • 删除:drop table [if exists] 表名;

3.字段属性

  • not null:没给值数据为默认值(varchar默认值为空
  • AUTO_INCREMENT定义列为自增的属性,一样平常 用于主键,数值会自动 加1
  • PRIMARY KEY关键字用于定义列为主键,您可以利用 多列来定义主键,列间以逗号分隔
  • ENGINE 设置存储引擎,CHARSET 设置编码
  • default null:没给值数据就是null
  • default 值:设置字段的默认值

注意 :主键不重复的列

这里我们建立一个student表:

  1. create table if not EXISTS student (
  2. id int auto_increment,
  3. `name` VARCHAR(32),
  4. age int,
  5. sex char(1),
  6. clazz VARCHAR(32)) charset utf8;
复制代码
  1. insert into student values (1001,'zs',18,'男','一班');
  2. insert into student values (1002,'ls',19,'女','二班');
  3. insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
  4. insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
  5. insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
  6. insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
  7. insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
  8. insert into student(`name`,age,sex,clazz) values ('ld',12,'女','二班');
复制代码

4.修改表:alter table

修改表名:alter(rename) table 旧表名 to 新表名;

  1. rename table student1 TO `student`;<br />
复制代码

添加字段:alter table 表名 add 字段 字段数据范例 属性;

  1. alter table student add job varchar(32) default '没有工作' ;
  2. insert into student (job) VALUES('a');
  3. insert into student (job) VALUES('b');
  4. insert into student (job) VALUES('c');
  5. insert into student (job) VALUES('a');
  6. insert into student (job) VALUES('b');
复制代码

修改字段:alter table 表名 change 旧字段 新字段 数据范例 属性;

  1. alter table student change clazz clazz varchar(255);
  2. alter table student change age score double;
复制代码

修改字段:alter table 表名 modify 字段 数据范例 属性;

  1. alter table student MODIFY varchar(356); #这里不能比之前的空间小
复制代码

注意 :

  • change:修改全部 (字段名,数据范例 ,属性)
  • modify:修改一部分(数据范例 ,属性)
  • 修改数据范例 时,varchar->int元数据会变为0

5. 增编削 查:字符串全部利用 ''包起来

5.1 增

格式:

  1. insert into 表名(字段) values(值),(值)...(值);
  2. insert into student values (1001,'zs',18,'男','一班');
  3. insert into student values (1002,'ls',19,'女','二班');
  4. insert into student(`name`,age,sex,clazz) values ('ww',69,'男','一班');
  5. insert into student(`name`,age,sex,clazz) values ('we',21,'女','二班');
  6. insert into student(`name`,age,sex,clazz) values ('ld ',23,'男','一班');
  7. insert into student(`name`,age,sex,clazz) values ('lq',45,'女','二班');
  8. insert into student(`name`,age,sex,clazz) values ('lwq',23,'男','一班');
  9. 10 insert into student(`name`,age,sex,clazz) values ('ld',12,'女','二班');
复制代码

5.2 删

  1. -- 删除delete from 表名 where 子句;
  2. delete from student where job='c';
复制代码

5.3 改

  1. -- 改update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;
  2. update student set job='b'where name ='ls';
复制代码

5.4 查

  1. -- 查select 字段 from 表名 where 子句;
  2. select * from student ; #查询全部
  3. SELECT id as di,name,job,score from student where score>18; #特定查询,并且展示特定的表 as:表示改字段名称(原来的表不发生变化)
复制代码

注意 :表示全部 字段

6. 子句

  • > < <= >= = <> 大于、小于、大于(小于)等于、不等于
  • between ...and... 表现 在某一区间的值(含头含尾)
  • in(set) 表现 在in列表中的值,例:in(100,200)只能匹配100或200
  • like '张_' 含糊 查询 利用 % 和 _(%表示匹配全部 _匹配一个)
  • Is null 判断 是否为空
  • and 多个条件同时成立
  • or 多个条件任一成立
  • not 不成立,例:where not(expection>10000);
  1. -- > < <= >= = != 大于、小于、大于(小于)等于、不等于
  2. SELECT * from student WHERE id>1006;
  3. SELECT * from student WHERE id!=1006;
  4. --between ...and... 显示在某一区间的值(含头含尾)
  5. select id,name,job from student where id BETWEEN 1002 and 1005;
  6. select * from student where job BETWEEN 'a' and 'b';
  7. -- in(set) 显示在in列表中的值,例:in(100,200)只能匹配100或200
  8. select * from student where job in('a','b');
  9. -- like '张_' 模糊查询 使用% 和 _(%表示匹配所有 _匹配一个)
  10. SELECT * from student where name like 'l%';
  11. SELECT * from student where name like 'l_';
  12. select * from student where name is not null;
复制代码

7.limit分页

格式:
  语句 limit 开始下标,长度;

  1. -- limit分页 语句 limit 开始下标,长度;注意:没有where
  2. select * from student LIMIT 1,2;
  3. select * from student LIMIT 0,2;
  4. select * from student LIMIT 2;
复制代码

注意 :
  假如 数据量不够,表现 全部

8.去重

格式:
  DISTINCT 字段1,字段2...字段N

  1. -- 去重 DISTINCT 字段1,字段2...字段N
  2. select DISTINCT name from student;
  3. select count(DISTINCT name) from student;
复制代码

注意 :

  字段不能在DISTINCT之前,只能在DISTINCT后面

  DISTINCT之后有多个字段,按照全部 字段举行 去重

 9.聚合函数

  •       count(字段):求多少行数据
  •       sum(字段):求和
  •       avg(字段):均匀 数
  •       max(字段):最大值
  •       min(字段):最小值

注意 :

  •       varchar能比较大小,不能获取avg(没有任何意义)
  •       假如 值为Null不参与计算
  •       sum和avg字段的数据不是数值,结果 都是0

 

  1. -- count(字段):求多少行数据
  2. select count(*) from student;
  3. select count(name) from student;
  4. -- sum(字段):求和
  5. select sum(score) from student;
  6. select sum(job) FROM student;
  7. select name+score as sum FROM student; #score的值
  8. SELECT name*score as cheng FROM student; #0
  9. -- avg(字段):平均数
  10. SELECT avg(score) FROM student;
  11. -- max(字段):最大值
  12. SELECT max(score) FROM student;
  13. SELECT max(job) FROM student; #c
  14. -- min(字段):最小值
  15. SELECT min(score) FROM student;
复制代码

10.拼接

  格式1

    

  1. concat(str1,str2...)
复制代码

  格式2:

    

  1. concat_WS(separator,str1,str2,...)
复制代码

  1. -- 格式一:concat(str1,str2...)
  2. select CONCAT(id,'-',name) as pj FROM student;
  3. -- 格式二:concat_WS(str1,str2...)
  4. SELECT CONCAT_WS('~',id,name,score,job)FROM student; #中间以~隔开
复制代码

11.日期函数

获取当前日期:

  1. current_timestamp;--所有
  2. current_timestamp();--所有
  3. CURRENT_DATE();-- 年月日
  4. CURRENT_DATE;-- 年月日
  5. CURRENT_TIME();-- 时分秒
  6. CURRENT_TIME;-- 时分秒
  7. -- 获取当前日期:
  8. -- current_timestamp;--所有
  9. SELECT CURRENT_TIMESTAMP from student;
  10. -- current_timestamp();--所有
  11. SELECT CURRENT_TIMESTAMP() from student;
  12. -- CURRENT_DATE();-- 年月日
  13. select CURRENT_DATE() from student;
  14. -- CURRENT_DATE;-- 年月日
  15. select CURRENT_DATE from student;
  16. -- CURRENT_TIME();-- 时分秒
  17. SELECT CURRENT_TIME() FROM student;
  18. -- CURRENT_TIME;-- 时分秒
  19. SELECT CURRENT_TIME FROM student;
复制代码

时间转str

格式:

  1. date_format(date,format)<br />
  2. date:时间<br />
  3. format:格式
复制代码

str转日期

格式:

  1. str_to_date(str,formaat)
复制代码

  1. SELECT * FROM date;
  2. -- 时间转str
  3. -- 格式:
  4. -- date_format(date,format)
  5. -- date:时间
  6. -- format:格式
  7. select DATE_FORMAT('2021-09-01','%Y~%m~%d');
  8. -- str转日期
  9. -- 格式:
  10. -- str_to_date(str,formaat)
  11. SELECT STR_TO_DATE('2021-09-01','%Y-%m-%d');
复制代码

日期相减

格式:

  1. datediff(expr1,expr2);
复制代码

注意 :只能相减年代 日,时分秒参与运算结果 为null

  1. datediff(expr1,expr2);
  2. -- 注意:只能相减年月日,时分秒参与运算结果为null
  3. SELECT DATEDIFF('2021-09-09','2021-09-01');
复制代码

函数向日期添加指定的时间间隔

格式:
DATE_ADD(date,INTERVAL expr unit);
date:时间
INTERVAL:关键字
expr:间隔的数值
unit:年代 日时分秒(..,...,day,..,..,..)

  1. SELECT DATE_ADD('2021-09-09',INTERVAL +10 YEAR);
  2. SELECT DATE_ADD('2021-09-09',INTERVAL +10 DAY);
复制代码

12. 数组计算

round(x,d):四舍五入
x:值
d:保留几位小数点

ceil(x):向上取整
floor(x):向下取整
rand():随机数(0-1之间)

  1. -- 数组计算
  2. -- round(x,d):四舍五入
  3. -- x:值
  4. -- d:保留几位小数点
  5. SELECT ROUND(1.3,2); #2表示保留几位小数
  6. -- ceil(x):向上取整
  7. SELECT ceil(1.2);
  8. -- floor(x):向下取整
  9. SELECT floor(1.2);
  10. -- rand():随机数(0-1之间)
  11. SELECT rand();
复制代码

13.排序

格式:

  1. order by 字段1 asc|desc,字段2 asc|desc...字段n asc|desc;
复制代码

  1. SELECT * from student ORDER BY score,job;
  2. SELECT * from student ORDER BY score desc, job desc;
复制代码

注意 :

  • 默认升序asc,降序desc
  • 假如 有多个字段,按照先后次序 依次排序

14. group by 分组

格式:

  1. group by 字段1,字段2...字段n;
复制代码

注意 :

  • 多个字段,按照全部 字段举行 分组(一起分组)
  • 有多少组表现 多少条数据(默认环境 下,没有颠末 条件筛选)
  • 组表现 的数据为每组中默认第一条数据
  • by 通常和聚合函数一起利用
  1. select max(score) as c from student where score=c;
  2. select max(score) as c from student having score=c;
  3. 两个都不能运行
  4. SELECT count(*),job,`name`,id as c from student GROUP BY sex where c>2; #错误
  5. SELECT count(*) as c,job,`name`,id from student GROUP BY sex HAVING c>2;
  6. -- select id,name,sex from student where job='a'; # 可以运行
  7. --select id,name,sex from student having job='a'; #不能运行(显示了之后就没有job)
  8. -- 执行过程是 from-where-select-having
  9. -- select count(*) c from student where c>1; -- 不行
  10. -- select count(*) c from student having c>1;-- 行
  11. select count(*) c,sex from student group by sex where sex='男';
  12. select count(*) c,sex from student group by sex having sex='男';
  13. --where having 一起使用
  14. SELECT count(*)as c,name,id FROM student where sex='男' HAVING c>3;
  15. where 是对表中from到的数据进行筛选;
  16. having是对表中selec显示数据进行晒选;
复制代码

到此这篇关于MySQL 基础常用下令 总结的文章就先容 到这了,更多相干 MySQL常用下令 内容请搜刮 脚本之家从前 的文章或继续欣赏 下面的相干 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 北右酝 | 2021-9-29 21:37:31 | 显示全部楼层
怎么我回帖都没人理我呢?
回复

使用道具 举报

avatar 卡庙寺 | 2021-9-30 00:27:03 | 显示全部楼层
在哪里跌倒,就在那里多爬一会儿!
回复

使用道具 举报

avatar 付佳琦 | 2021-10-15 23:52:29 | 显示全部楼层
收藏了,admin楼主加油!
回复

使用道具 举报

avatar 甜如蜜forever | 2021-10-18 05:33:56 | 显示全部楼层
看帖、回帖、拿分、走人
回复

使用道具 举报

楼上的真不讲道理!
回复

使用道具 举报

avatar 朗读者72 | 前天 16:39 | 显示全部楼层
我只看看不说话。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则