mysql 72小时_mysql学习笔记(一)

一、关于mysql

mysql是一种关系型数据库管理系统,关系型可以理解为“表格”的概念,一个关系型数据库由一个或数个表格组成。

二、mysql操作

daf07f342895

image.png

(一).数据库操作

daf07f342895

image.png

1、登录:-u用户名 -p密码

eg:-uroot -p123456

2、显示数据库:show databases;

3、创建数据库:

create database database_name charset=utf8;

eg: create database test01 charset=utf8;

4、使用数据库(表示进入此数据库操作)

use database_name;

5、查看当前使用数据库

select database();

6、删除数据库

drop database database_name;

(二).数据表操作

daf07f342895

image.png

1、显示数据表:show tables;

2、创建数据表:create table table_name();

'''

CREATE TABLE table_name(

column1 datatype contrai,

column2 datatype,

column3 datatype,

.....

columnN datatype,

PRIMARY KEY(one or more columns)

);

'''

eg:

'''

create table classes(

id int unsigned auto_increment primary key not null,

name varchar(10)

);

'''

3、修改数据表

添加字段:alter table 表名 add 列名 类型;

eg:alter table students add birthday datatimes;

修改字段:

-重命名:alter table 表名 change 原名 新名 类型及约束;

eg:alter table students change birthday birth datetime not null;

-不重命名:alter table 表名 modify 列名 类型及约束;

eg:alter table students modify birth date not null;

删除字段:drop table 表名 drop 列名;

eg:alter table students drop birthday;

4、删除数据表:drop table 表名 drop 列名;

eg:drop table students;

5、显示表结构:dec 表名;

6、查看表的创建语句:show create table 表名;

eg:show create table classes;

(三)字段操作

daf07f342895

image.png

1、增删改查

'''

SELECT select_expr [,select_expr,...] [

FROM tb_name

[WHERE 条件判断]

[GROUP BY {col_name | postion} [ASC | DESC], ...]

[HAVING WHERE 条件判断]

[ORDER BY {col_name|expr|postion} [ASC | DESC], ...]

[ LIMIT {[offset,]rowcount | row_count OFFSET offset}]

]

'''

(1)增

全列插入:insert into 表名 values();

eg:insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');

部分列插入:insert into表名(列1,列2,....) values(值1,值2,....)

eg:insert into students(name,hometown,birthday) values('黄蓉','桃花岛','2016-3-2');

全列多插入:insert into 表名 values(...),(...)...;

eg:insert into classes values(0,'python1'),(0,'python2');

(2)改:update 表名 set 列1=值1,列2=值2... where 条件

eg:update students set gender=0,hometown='北京' where id=5;

(3)查:select * from 表名;

条件查询:select * from 表名 where 条件

where + 比较运算符/逻辑运算符/模糊查询/范围查询/空判断

比较运算符(=、>、>=、)

逻辑运算符(and、or、not)

模糊查询(like %表示任意多个任意字符,_表示一个任意字符)

范围查询(in 表示在一个非连续的范围内、 between ... and ...表示在一个连续的范围内)

空判断(is null,is not null)

分页查询:select * from 表名 limit start,count

从start开始,获取count条数据

eg:select * from students where gender=1 limit 0,3;

连接查询

内连接:inner join

左连接:left join

右连接:right join

子查询:包含主查询和子查询

select * from Student where gender in (select子查询)

分组查询:group by

eg:select * from Student

group by gender

排序查询:order by 列1 desc|asc [列2 desc|asc]

eg:select * from students order by age desc,height desc;

(4)删

delete from 表名 where 条件;

2、聚合函数

(1)总数count()

count(*)表示计算总行数,和 count(1) 的结果是相同的,但是count(列名) 不会统计null值记录

eg:

select count(1) from students;

(2)最大值max()

eg:select max(id) from students where gender=2;

(3)最小值min()

eg:select min(id) from students where is_delete=0;

(4)求和sum()

eg:select sum(age) from students where gender=1;

(5)平均值avg()

eg:select avg(id) from students where is_delete=0 and gender=2;

3、时间函数

daf07f342895

image.png

(1)获取当前时间

获取年月日时分秒

select now();-------在执行开始时值就得到了;

select sysdate();-------在函数执行时得到的动态值

获取年月日

select current_date();

select curdate();

获取时分秒

select current_time();

select curtime();

(2)时间格式转换

字符串转换为日期格式

str_to_date(时间字符串,字符串日期格式)

eg:select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09

日期转换为特殊字符串形式

date_format(日期,字符串格式)

eg:select date_format(now(),'%Y-%M-%d %H') ; -- 2020-May-23 17

(3)提取时间信息

用year、month等函数提取

eg:select day('2018-05-15 10:37:14.123456');-- 获取日:15

extract函数提取:extract (日期形式 from 日期内容) 函数

eg:select extract(year from '2018-05-15 10:37:14.123456');--获取年:2018

(4)日期的运算

对现有日期进行偏移

(1)date_sub(日期,要减少偏移的间隔):date_sub(date,INTERVAL expr type)

eg:select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

--偏移天到秒,1天1小时1分1秒:1997-12-30 22:58:59

(2)date_add(日期,要增加偏移的间隔):date_add(date,INTERVAL expr type)

eg:select date_add('2008-08-08 10:12:33', interval '01:10:30' hour_second);

--偏移时间到秒,1小时10分30秒:2008-08-08 11:23:03

两个日期计算天数差 date_diff(time1,time2)

eg:select datediff('2008-08-08','2008-08-01');-- 相差:7 天

两个日期计算时间差 timediff(time1,time2)

eg:select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 相差时间:08:08:08

两个日期得到指定差 timestampdiff(unit,begin,end)

返回end-begin的结果,其中begin和end是date或datetime格式

eg:select timestampdiff(year,'2002-05-01','2001-01-01');-- -1

4、窗口函数

rank() over(partition by 分区字段 order by 排序字段 desc/asc)

eg: 12245

dense_rank() over(partition by 分区字段 order by 排序字段 desc/asc)

eg: 12234556

row_number() over(partition by 分区字段 order by 排序字段 desc/asc)

eg: 12345

5、case... when...

简单函数

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

搜索函数

CASE WHEN [expr] THEN [result1]…ELSE [default] END

聚合函数:实现行转列

select sum(case [col_name] when...then...else...end) from Student

待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值