mysql
简称数据库管理系统
database manage system
属于RMDBS:非关系型数据库
安装
window系统下
安装
pip install MySQL-python
没有pip包时首先安装pip,有时需要更新pip
开启mysql
net start/stop/restart xx
查看进程
netstat -ano
linux环境下
安装
sudo apt install mysql-server
没有pip时先安装pip,有则不需要
sudo apt install python-pip
启动服务器
service xxx start/stop/restart
相关操作
三个创建:
四个语句:
五中约束:
mysql数据类型:非关系型数据库
整型 int
浮点型 float | decimal
字符 char | varchar
文本 text
二进制 binary 位 bit
decimal(5,2) 有5位,小数2位
varchar(10) 最多10位
char(10) 固定10位
日期 date | time | datetime | timestamp (时间戳)
date 年月 time 时分秒 datetime 年月日时分秒
sql结构化查询语言sql语言
ddl 数据库定义语言 create | drop
show databases 查看所有数据库
use databases_1 进入数据库databases_1
desc table_1 描述表格table_1结构
show creat table tept 显示创建表格的sql
创建库|表:create [database | table] xxx ;
create database database_3 (default charset=utf8);
删除库|表:drop [database|table] xxx;
drop database database_3;
dml 数据库操作语言 insert update delete
dql 数据库查询语言 desc
dcl 数据库控制语言 grant
表操作:
创建:
create table xx(
id int,
name varchar(50)
);
creat table xx(
# unique 不能重复
id int primary key auto_increment, 整型主键(不重复,不为空)自增
name varchar(50) not null, 50字段不能为空
age int default 18, 默认值
email varchar(50) default "[email protected]",
gender varchar(10)
);
查看:desc xx; 库|表的基本信息
select 【distinct去重】* from xx; 内容
select x,x,.. from xx;指定内容
删除:drop table xx;
插入:insert into xx(id,name,...) values(*,*,...);
insert into xx values(*,*,...);
表内操作(CRUD)增删改查
更新:update xx表名 set 字段=新值,... where 字段=值
删除:delete from xx表名 where 字段=值
增加字段:alter table xx表名 add **字段 varchar(50);
删除字段:alter table xx表名 drop **字段
查询:null 不能用= 、!= 查询,
可以用is 、is not查询
示例:--------------------------------
SELECT * FROM hero WHERE age=51; 精选
SELECT * FROM hero WHERE gender<>"man" AND age>51; 筛选
SELECT COUNT(*) FROM hero; 查询总数
SELECT count(*) as counts FROM hero;
SELECT count(*) 别名 FROM hero;
SELECT MAX(age) FROM hero; 最大值
SELECT MIN(age) FROM hero; 最小值
SELECT avg(name) FROM hero; 平均值 总和sum
SELECT * FROM hero WHERE name="songjiang"; 查询字段值
SELECT * FROM hero WHERE age BETWEEN 40 and 51;#左闭右闭
SELECT * FROM hero WHERE age>40 and age<51;
SELECT * FROM hero WHERE age in (41,51); # in慎用,遍历效率低
# 模糊查询%任意匹配#一个下划线占用一位
SELECT * FROM hero WHERE `name` LIKE "li%";
SELECT * FROM hero WHERE `name` LIKE "%s%";
SELECT * FROM hero WHERE `name` LIKE "__s%";
SELECT * FROM hero WHERE `name` LIKE "%ang";
insert into _user values(uuid(),"name")
-----------------------------------------
外键约束:
创建列表时加上语句:
constraint | 可无 (fk_xx1_xx2 | 可无) foreign key(xx1.2id) references xx2.id
多表操作:
当数据冗余时进行分表。
一个表代表一个类,外键为类|表之间的关系
一对一;一对多 | 多对一;多对多
交叉链接:select * from xx1 cross join xx2 笛卡尔查询,遍历,很多重复
外链接:左|右外链接,根据左|右侧进行排序
select * from xx1 as e left|right join xx2 d on e.2id=d.id
内连接:select * from xx1 inner join xx2 on (xx1.2id = xx2.id)
select * from xx1,xx2 where xx1.2id = xx2.id;
自然链接:select * from xx1 nature join xx2
自链接:select * from xx1 where xx1.id = (selec id from xx1 where id = n)
示例:------------------------------------------------
# 创建表:
CREATE TABLE amg(
id int PRIMARY KEY auto_increment,
NAME varchar(250) not NULL,
descs_id VARCHAR(250) DEFAULT "部门描述"
);
SELECT * FROM amg,dept;
# 笛卡尔链接
SELECT * FROM amg CROSS JOIN dept;
# 外链接
SELECT * FROM amg LEFT JOIN dept on amg.descs_id = dept.descs;
SELECT * FROM amg LEFT OUTER JOIN dept ON amg.descs_id = dept.descs;
SELECT * FROM amg right JOIN dept on amg.descs_id = dept.descs;
# 内连接
SELECT * FROM amg INNER JOIN dept ON (amg.descs_id=dept.descs);
SELECT * FROM amg,dept where amg.descs_id=dept.descs;
# 自链接
select * from dept where descs = (select descs from dept where descs = 33)
# 子查询:
Select xx1.name from xx1 where xx1.id = (select xx1.id from xx2 where xx2.name = ‘zs’)
------------------------------------------------------
视图:create view v_user_list as select * from user;
select * from v_user_list;
索引:Index
sql优化:如:select * from article;避免*的使用
mysql支持的函数
字符串函数:
名称 | 命令 | 示例 |
---|---|---|
长度 | select / length /char_length | 汉字("") |
去除两端空格 | trim | sxe |
截取字符 | substring | (字符串,开始位,长度) |
获取ASCII码值 | ascii | ("a") |
链接 | concat | |
转大写 | upper | |
替换 | replace |
数学函数:
上取整 | 下取整 | 四舍五入 | 取模 | 平方根 |
---|---|---|---|---|
ceil | floot | roun | mod | sin、cos、sqrt |
日期函数:时间可以比较
命令 | 作用 |
---|---|
now、Year、month、week、curdate | 当前日期、curtime当前时间 |
date_format <=> str_to_date | 时间字符串转换 |
SELECT DATE_FORMAT(CURDATE(),'%Y年%m月%d日')