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

转载于:https://www.cnblogs.com/liqilong/p/9128503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值