mysql的知识_mysql基本知识

Mysql数据类型

数值

整形

int tinyint

浮点型

float double

表示的精度不同

float 6位有效,double 16

decimal 浮点型,用来更加精确的保存小数

字符串

char: 255个字符, 固定大小

varchar: 65535 字节,不固定(可变)

text: 64Kb

枚举

enum() 1-2个字节存储数据

enum("值1","值2",.....)

时间

date 年月日

datetime 年月日 时分秒

time 时分秒

数据库的操作

-- 退出数据库

exit

quit

ctrl + d

-- 查看当前使用的数据库

select database();

-- 查看当前使用的数据库

select database();

-- 指定编码的数据库创建

create database python_db1 charset=utf8;

-- 查看创建数据库的语句

-- show create database ....

show create database python_db;

-- 删除数据库

-- drop database 数据库名;

drop database python_db;

SQL命令-表结构的创建

-- 创建 classes 表(id、name)

create table classes(

id int unsigned primary key auto_increment,

name varchar(10) not null,

num tinyint

);

-- 查看表结构

-- desc 数据表的名字;

desc classes;

-- 查看表的创建语句

-- show create table 表名字;

show create table students;

SQL命令-表结构的修改

-- 修改表-添加字段 生日 datatime

-- alter table 表名 add 列名 类型;

alter table students add birthday datetime;

-- 修改表-修改字段:不重命名版

-- alter table 表名 modify 列名 类型及约束;

alter table students modify birth date not null;

-- 修改表-修改字段:重命名版

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

alter table students change birthday birth datetime;

-- 修改表-删除字段

-- alter table 表名 drop 列名;

alter table students drop birth;

-- 删除表

-- drop table 表名;

drop table students;

SQL命令-表数据的增删改查

-- 全列插入

-- insert [into] 表名 values(...)

-- 主键字段 可以用 0 null default 来占位

-- 向classes表中插入 一个班级

insert into classes values(1, ‘python20‘, 70);

-- 部分插入

-- insert into 表名(列1,...) values(值1,...)

insert into students(id, name) values(null, ‘司马狗剩‘);

-- 多行插入

insert into students values(null, ‘欧阳铁娃‘, 18, 1.78, ‘妖‘, 1),(null, ‘诸葛铁锤‘, 18, 1.78, ‘妖‘, 1);

-- 修改

-- update 表名 set 列1=值1,列2=值2... where 条件;

-- 全部修改

update students set age = 38;

-- 按条件修改

update students set age = 88 where name = ‘司马狗剩‘;

-- 查询基本使用

-- 查询所有列

-- select * from 表名;

select * from students;

---定条件查询

select * from students where name=‘司马狗剩‘;

-- 查询指定列

-- select 列1,列2,... from 表名;

select id,name from students;

-- 可以使用as为列或表指定别名

-- select 字段[as 别名] , 字段[as 别名] from 数据表;

select id as ‘编号‘, name as ‘姓名‘ from students;

-- 删除

-- 物理删除

-- delete from 表名 where 条件

delete from students where id = 2;

-- 逻辑删除

-- 用一个字段来表示 这条信息是否已经不能再使用了

-- 给students表添加一个 is_delete 字段 bit 类型 默认为0

alter table students add is_delete bit default 0;

-- bit 类型,智能保存 0 或者 1

-- is_delete = 1 逻辑删除

update students set is_delete = 1 where id = 3;

-- 数据库备份与恢复(了解)

-- mysqldump –uroot –p 数据库名 > python.sql;

-- mysql -uroot –p 新数据库名 < python.sql;

where

比较运算

> 、< 、>=、<=、=、!=或<>

select * from where age <> 18 ; # 所有年龄不等于18岁的学生

逻辑运算

and、or、not

模糊查询(like)

% 表示任意0个或多个

_ 任意一个字符

-- 查询姓名中 有 "小" 所有的名字

select * from students where name like ‘%小%‘;

-- 查询有2个字的名字

select * from students where name like ‘__‘;

-- 查询至少有2个字的名字

select * from students where name like ‘__%‘;

范围查询

in 用于非连续的范围的查询,相等于 多个值的 or (或) 关系

between 起始 and 终值 连续,包含起始值和终值,是一种 and(与) 关系

-- in (1, 3, 8)表示在一个非连续的范围内

-- 查询 年龄为18、34的姓名

select name from students where age in (18,34)

-- between ... and ...表示在一个连续的范围内

-- 查询 年龄在18到34之间的的信息

select * from students where age between 18 and 34;

空值判断

is null 表示判断值为空

is not null 判断值非空, 错误写法:not is null

order排序

order by 排序字段1 排序规则, 字段2 规则2,.....

-- asc从小到大排列,即升序(默认排序规则)

-- desc从大到小排序,即降序

-- 查询年龄在18到34岁之间的女性,身高从高到矮排序

select * from students where age between 18 and 34 and gender=‘女‘ order by height desc;

聚合函数

聚合函数:聚合函数会对当前所在表当做一个组进行统计

常见的聚合函数:

count(*) 统计数量

max(字段) 找出该字段的最大值

min(字段) 找出该字段的最小值

sum(字段) 对该字段求和

avg(字段) 对该字段求平均值

四舍五入的函数: round(数值,保留的小数位数)

```mysql

-- 计算班级学生的总数

select count() from students;

select count() ‘总人数‘ from students;

-- 查询女性的最高 身高

select max(height) from students where gender=‘女‘;

-- 计算男性的平均身高 保留2位小数

select round(avg(height),2) from students where gender = ‘男‘;

```

group分组

group by + 聚合函数,分组统计/计算

group by + group_concat() 分组 + 内容链接为一个字符串

group by + with rollup 分组 + 小计

having和where的区别:

作用的对象不同。where子句作用于表和视图,having 子句作用于组。

having可以用聚合函数 ,where不能。因为where 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 having在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数 。

如:having sum(qty)>1000 (正确) where sum(qty)>1000 (错误)

-- group by

-- 按照性别分组,查询所有的性别

select gender from students group by gender;

-- 注意下面这种查询会失败

select name,gender from students group by gender;

-- 计算每个年龄中的人数

select age, count(*) from students group by age;

-- 查询同种性别中的姓名

select gender, group_concat(name) from students group by gender;

-- 查询平均年龄超过30岁的性别=

select gender, avg(age) from students group by gender having avg(age) > 30;

-- with rollup 汇总的作用(了解)

select gender, count(*) from students group by gender with rollup;

limit限制记录

limit 数据有很多,只取指定数量的数据

表中的数据,位置默认从 0 开始

limit 使用格式: limit 起始位置, 连续取的数目;

limit 一定要写到 SQL 语句的最后面

-- 检索记录行 6-15

select * from table limit 5,10;

注:标准的SQL书写格式

select 字段1,字段2,...

from 表名

[where 条件]

[group by 字段名]

[order by 字段名 排序规则]

[having 条件]

[limit 起始位置,数量]

连接

内连接:查询的结果为两个表匹配到的数据,默认是笛卡尔积

关键字 inner join

select 字段 from 表1 inner join 表2 where/on 表1.字段 = 表2.字段

外连接

左外连接 主表 left join 从表

左外连接另外一个表,在从表中没有找到匹配,右侧补 NULL

右外连接 从表 right join 主表

右外连接一个表,在从表中没有找到匹配,左侧补 NULL

-- 查询 有能够对应班级的学生以及班级信息

select * from students inner join classes where students.cls_id = classes.id;

-- 给数据表起名字

select s.name, c.name from students s inner join classes c where s.cls_id = c.id;

-- 内连接的另外一种写法

select s.name, c.name from students s, classes c where s.cls_id = c.id;

-- 查询没有对应班级信息的学生

select students.* from students left join classes on students.cls_id = classes.id where classes.id is null;

mysql基本知识

标签:规则   mysqldump   关键字   表名   计数   运算   数位   ctr   超过

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/Hhhighway/p/12600006.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值