mysql 联合分组_MYSQL、增删改查、排序、分组、联合、连表

一、数据库管理系统DBMS

软件

写程序时需要做的:

a、数据库在本地

1、找到目录

2、添加数据

b、数据库在远程

1、socket连接上远程机器

2、socket发送(命令)

我们需要做些什么:

a、

A、程序

程序,socket客户端

B、数据

socket服务端

C、制作一套规则

...

D、socket客户端和服务端用户认证,授权,限制

有人做了一套软件,已经做好了以上操作:

-- SqlServer(收费),Oracle,sqlite,access...MySQL

二、下载安装(解压方式)

1.下载地址https://dev.mysql.com/downloads/file/?id=476476 点击最下面No thanks,just start my download

2.解压到任意目录

3.服务器端运行(命令行下)

mysqld(报错的话在指定位置下新建data目录)

初始化:mysqld --initialize-insecure

mysqld

4.客户端连接(命令行下)

mysql -u root -p(初始的时候没有密码,直接回车)

简化操作:

1.设置环境变量

2.

将mysql服务端制作成一个Windows服务:

管理员身份运行cmd,输入mysqld -install

net start mysql

net stop mysql

三、MySQL数据库

1、概念

数据库---文件夹

数据库表---文件

数据行---文件中的一行

2、初始:

show databases; 查看当前MySQL下的数据库

create database 数据库名; 创建数据库

use 数据库名; 进入选中数据库

show tables; 查看当前数据库下的表

create table 表名(nid int,name varchar(20),pwd varchar(64)); 创建数据表

select * from 表名; 查看表中的所有数据

insert into 表名(nid,name,pwd) values(1,'lql','123'); 插入数据

desc 表名; 以简洁形式查看表中的所有数据

3.用户授权

用户管理的时候有一些特殊的命令:

创建用户

create user '用户名'@'IP地址' identified by '密码';

删除用户

drop user '用户名'@'IP地址';

修改用户

rename user '用户名'@'IP地址' to '用户名'@'IP地址';

修改密码

set password for '用户名'@'IP地址' = Password('新密码')

权限管理:

默认什么权限都没有

grant 权限 on 数据库.表名 to '用户名';

*:代表所有的

=======要点:远程连接=======

4.SQL语句

数据库级别

显示数据库 SHOW DATABASES;

默认数据库

mysql--用户权限相关数据

test--用于用户测试数据

information_schema--MySQL本身架构相关数据

创建数据库 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

使用数据库 USE 数据库名称;

删除数据库 DROP DATABASE 数据库名称;

表级别

SHOW TABLES;

DESC 表名

******CREATE TABLE 表名(nid int, name varchar(20))ENGINE=InnoDB DEFAULT defalut CHARSET=utf8;

InnoDB支持事务,原子操作,回滚

a.null|not null 是否可以为空

b.default x 默认值

c.auto_increment 自增(数字,必须是索引-主键)

d.primary key||primary key(x,x,x,)主键索引:

一张表只能有一个主键(可以多列组成主键),唯一不能重复,不能为null,一般情况下自增列设置主键

唯一索引:

可以为null,一张表可以有多个

1,2,3,4,5,6,null

--约束

--索引,加速查找

e.foreign key外键,两张表建立约束:

创建:alter table 从表 add constraint 外键名称(形如:fk_从表_主表) foreign key 从表(外键字段) reference 主表(主键字段)

删除:alter table 表名 drop foreign key 外键名称

f.数据类型:数值、时间、字符串

http://www.runoob.com/mysql/mysql-data-types.html

修改表

添加列:alter table 表名 add 列名 类型

删除列:alter table 表名 drop column 列名

修改列:

alter table 表名 modify column 列名 类型; -- 类型

alter table 表名 change 原列名 新列名 类型; -- 列名,类型

添加主键:

alter table 表名 add primary key(列名);

删除主键:

alter table 表名 drop primary key;

alter table 表名 modify 列名 int, drop primary key;

添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);

删除外键:alter table 表名 drop foreign key 外键名称

修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

DROP TABLE 表名; 直接删除表

DELETE FROM 表名; 清空表 自增接着清空前的

TRUNCATE TABLE 表名; 清空表 速度快,自增回到原点

数据行级别

增删改查:http://www.runoob.com/sql/sql-tutorial.html

1.导入另一个表的数据:insert into 表名(列名,) select(列名,) from 表名

2.通配符:%(多个字符串) _(单个字符)

3.分页:

select * from 表名 limit x,y;

select * from 表名 limit y offset x;(推荐)

(x表示起始位置,y表示取几条)

4.排序:

正序 select * from 表名 order by 列名 asc;

反序 select * from 表名 order by 列名 desc;

排序后可能出现相同的,对相同的再进行排序 select * from 表名 order by 列名1 排序方式,列名2 排序方式

5.分组:

单一分组:select 列名 from 表名 group by 列名;

***聚合函数max()取最大,min()取最小,sum()取求和,count()计算数量,avg()平均

多项分组:select 列名,聚合函数(列名),... from 表名 group by 列名;

多项分组和改名:select 列名 as 新列名,聚合函数(列名) as 新列名,... from 表名 group by 列名;

对聚合后的数据进行筛选:

...having 条件

6.联合:

select 列名 from 表名 union select 列名 from 表名;默认去重 union all不去重

7.连表:

select * from 表名,表名; 笛卡儿积

a. select * from 表名,表名 where 表名.列名 = 表名.列名;

b. select * from 表名 left join 表名 on 表名.列名 = 表名.列名;右表依赖左表(推荐)

c. inner join 去null

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值