mysql数据语句清屏_mysql数据库总结

1、MySQL数据库的特点:

持久化存储

读写速度极高

保证数据的有效性

对程序支持性非常好,容易扩展。

MySQL是一个关系型数据库,核心元素是

数据行(记录)

数据列(字段)

数据表(数据行的集合)

数据库(数据表的集合)

RDBMS

主要有两种类型的数据库:关系型数据库、非关系型数据库

2、SQL

SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,不区分大小写。

SQL语句主要分为:

DQL:数据查询语言,用于对数据进行查询。

DML:数据操作语言,对数据进行增加、修改、删除

TPL:事务处理语言,对事务进行处理

DCL:数据控制语言,进行授权与权限回收

DDL:数据定义语言,进行数据库、表的管理

CCL:指针控制语言,通过控制指针完成表的操作

3、MySQL

MySQL是一个关系型数据库管理系统。

数据类型

使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。

常用数据型有:

整数:int、bit

小数:decimal

字符串:varchar、charr

日期时间:date,time,datetime

枚举类型enum

decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位

char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '

varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'

字符串text表示存储大文本,当字符大于4000时推荐使用

对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径

1、约束

主键primary key:物理上存储的顺序

非空not null:此字段不允许填写空值

唯一unique:此字段的值不允许重复

默认default:当不填写此值时会使用默认值,如果填写时以填写为准

外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联表中查询此值是否存在,如果存在则填写成功,如果不存在则抛出异常

2、命令行连接

运行  MySQL -uroot -p密码

退出登录  quit、exit、Ctrl+d

查询版本:select version();

显示当前时间:select now();

修改输入提示符:prompt  python>  \D完整日期\U使用用户

3、数据库

查看所有数据库:show databases;

使用数据库:use 数据库名;

查看当前使用的数据库:select database();

创建数据库:create database 数据库名charset=utf8;

删除数据库:drop database 数据库名;

4、数据表

查看当前数据库中所有表:show tables;

查看表结构:desc 表名;

创建表:create table 表名字(......)

create table students(

id int unsigned primary key auto_increment not null,

name varchar(20) default '',

age tinyint unsigned default 0,

height decimal(5,2),

gender enum('男','女','人妖','保密'),

cls_id int unsigned default 0 )

auto_inncrement表示自动增长

修改表-添加字段

alter table 表名add列名 类型;

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

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

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

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

修改表-删除字段

alter table 表名drop列名;

清屏:system clear

删除表:drop table 表名

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

4、增删改查(curd)

创建create 、更新update、读取retrieve、删除delete

查询所有列:select * from 表名

查询指定列:select 列1,列2... from表名

1、增加

主键列是自动增长,但是在全列插入时需要占位,通常使用0或者default或者null来占位,插入成功后以实际数据为准

全列插入:值的顺序与表中字段的顺序对应

Insert  into 表名values(...)

部分列插入:值得顺序与给出的列顺序对应

Insert into 表名(列1,....) values(值1, .....)

全列多行插入:值得顺序与给出的列顺序对应

insert into 表名 values(...),(...)...;

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

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

例:insert into students(name) values('杨康'),('杨过'),('小龙女');

2、修改

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

3、删除

Delete from 表名where条件

逻辑删除,就是修改操作

update students set isdelete=1 where id=1;

MySql建立Table时设置编码为utf8

设置数据库编码

create database dbname default charset utf8 (collate utf8_general_ci);

设置数据表编码

CREATE TABLE 'author' (.......

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

mysql中两种数据库引擎

ENGINE=MyISAM

ENGINE=InnoDB

5、条件

使用where子句对表中的数据筛选

select * from 表名where条件;

where后面支持多种运算符,进行条件的处理

比较运算符、逻辑运算符、模糊查询、范围查询、空查询

模糊查询:like

%表示任意多个字符、_表示一个任意字符

select * from students where name like '黄%';

范围查询:in

In表示在一个非连续的范围内

select * from students where id in(1,3,8);

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

select * from students where (id between 3 and 8) and gender=1;

空判断

判空:is null

select * from students where height is null;

判非空:is not null

select * from students where height is not null;

6、排序

select * from 表名 order by 列1 asc|desc [,列2 asc|desc,...]

默认按照列值从小到大排序(asc)2

asc从小到大排序,即升序

desc从大到小排序,即降序

select * from students where gender=1 and is_delete=0 order by id desc;

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

1、聚合函数

总数

count(*)表示计算总行数,括号中写星与列名,结果是相同的

聚合函数不能在where中使用

select count(*) from students;

最大值max

最小值min

求和sum

平均值avg

2、分组

Group by含义:将查询的结果按照1个或多个字段进行分组,字段值相同的为一组

Group by可用于单个字段分组,也可用于多个字段分组

select gender from students group by gender;

Group by + group_concat()

Group_concat(字段名)可以作为一个输出字段来使用

表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值得集合

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

Group by +集合函数

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

Group by + having

having条件表达式:用来分组查询 后指定一些条件 来输出查询结果

having作用和where一样,但having只能用于group by

select gender,count(*) from students group by gender having count(*)>2;

Group by + with rollup

With rollup 的作用是:在最后新增一行,来记录当前列里所有记录的总和

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

3、获取部分行

select * from 表名limit start,count从start获取count条数据

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

select * from students where is_delete=0 limit (n-1)*m,m

4、连接查询

select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列

inner join内连接

left、right join左右连接

7、as起别名

select * from students as s left join classes as c on s.cls_id = c.id;

自关联

从sql文件中导入数据

source areas.sql;

8、子查询

在一个select语句中,嵌入了另外一个select语句,被嵌入的select语句称为子查询语句

主查询和子查询的关系

1、子查询是嵌入到查询中

2、子查询是辅助主查询的,要么充当条件,要么充当数据源

3、子查询是可以独立存在的语句,是一条完整的select语句

子查询的分类:标量子查询,子查询返回的结果是一个数据(一行,一列)

列子查询:返回的结果是一列(一列多行)

行子查询:返回的结果是一行(一行多列)

标量子查询

select * from students where age > (select avg(age) from students);

列级子查询

select name from classes where id in (select cls_id from students);

行级子查询

select * from students where (height,age) = (select max(height),max(age) from students);

子查询中特定关键字使用

in 范围

格式: 主查询where条件in (列子查询)

查询的完整格式

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}]

]

完整的select语句

select distinct *

from 表名

where ....

group by ... having ...

order by ...

limit start,count

执行顺序为:

from 表名,where ....,group by ...,select distinct *,having ...,order by ...,limit start,count

实际使用中,只是语句中某些部分的组合,而不是全部

As起别名在字段中:select x as y from xxx;

给表起别名:select * from xxx as yyy;

求平均数保留2位小数:select round(avg(price),2) as avg_price from goods;

将分组结果写入到goods_cates数据表

insert into goods_cates (name) select cate_name from goods group by cate_name;

同步表数据

通过goods_cates数据表来更新goods表

update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值