mysql
内容简介
数据库是当前应用非常广泛的一款关系型数据库
主要的知识点包括
数据库与表的操作
数据的增加 修改 删除
数据的查询(重点)
与python交互
创建库与表章简介
主要的知识点包括
能够与mysql建立连接
创建数据库、表,分别从图形界面与脚本界面两个方面讲解
相关的知识点包括:
E-R关系模型
数据库的3范式,
mysql中数据字段的类型,字段约束
数据库的操作主要包括:
数据库的操作,包括创建、删除
表的操作,包括创建、修改、删除
数据的操作,包括增加、修改、删除、查询,简称crud
安装
sudo apt-get install mysql-server mysql-client
启动
service mysql start
停止
service mysql stop
重启
service mysql restart
远程连接
找到mysql配置文件并修改
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 将 bind-address=127.0.0.1 注释掉
登录
mysql -hlocalhost -uroot -p
数据完整性
一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束
字段类型
数字型
tinyint
很小的整数
1个字节
int
普通大小的整数
4个字节
decimal
压缩的严格的定点数
M+2个字节
字符串
char
固定长度非二进制字符串
varchar
变长非二进制字符串
text
小的非二进制字符串
日期
datetime
布尔
BIT
约束
主键 primary key
非空not null
唯一 unique
默认 default
外键 foreign key
使用命令连接
打开终端
mysql -uroot -p
退出
quit exit
查看版本
select version()
显示当前时间
select now()
远程连接
mysql -h ip地址 -uroot -p
-h后面是连接主机ip地址
-u后面是连接的用户名
-p回车后写密码
数据库的操作
创建数据库
create database 数据库名字 charset=utf8
删除数据库
drop database 数据库名
切换数据库
use 数据库名
查看当前选择的数据库
select database()
表操作
查看当前数据库中所有表
show tables;
创建表
create table 表名(列及类型)
auto_increment 表示自增长
修改表
修改列名字
alter table 表名 add|change|drop 列名 类型;
修改数据段落的数据类型
alter table 表名 modify 属性名 数据类型
修改字段名
alter table 表名 change 旧属性名 心新属性名
增加字段
alter table 表名 add 表名 属性名1 数据类型
删除字段
alter table 表名 deop 属性名
指定的位置插入
alter table 表名 add 属性名 数据类型 atfer(之后)/first(头部)
删除表
drop table 表名
查看表结构
desc 表名
更改表的名称
rename table 原名字 to 新表名
查看表的创建语句
show create table 表名
数据的操作
查询
select * from 表名
增加
全列插入
insert into 表名 values(...)
缺省插入
insert into 表名(列1,...) values(值1,...)、
同时插入多条数据:
insert into 表名 values(...),(...)...;
修改
update 表名 set 列1=值1,... where 条件
例如:update 表名 set name='123' where id=1
删除
delete from 表名 where 条件
数据的恢复
数据恢复
连接mysql,创建数据库
退出连接,执行命令
mysql -uroot- p 数据库名>~/desktop/备份文件.sql
数据备份
进入超级管理员
sudo -s
进入mysql目录
cd/var/lib/mysql
运行命令
mysql dump -uroot - p 数据库名>~/desktop/备份文件.sql
查询
简介
基本用法
select * from 表名;
消除重复行
select distinct 字段名 from 表名;
条件 语法
select * from 表名 where 条件;
比较运算法
等于
=
大于
>
小于
<
大于等于
>=
小于等于
<=
不等于
<> !=
逻辑运算符
且
and
或
or
不
not
模糊查询
语法
select * from 表名 where 查询名 like '' '';
%表示任意多个字符
_表示一任意字符
范围查询
in 表示在一个非连续的范围内
select * from 表名 where id in(1,2,6,8);
between......and...表示一个连续的范围内
select * from 表名 where id between 1and5;
空判断
判空
is null;
判 非空 is not null;
优先级
小括号,not,比较 运算符,逻辑运算符
and比or先运算,如果同时出现并希望先算or 下需要结合()使用
集合
count(*) 表示计算子总行数,括号中写(*/列名) 结果是一样的
max(列名) 表示求此列的最大值
max(列名) 表示求此列的最大值
min(列名) 表示求此列的最小值
sum(列名) 表示求此列的和
avg(列名) 表示求此列的平均值
分组
按照字段分组,表示此字段相同的数据会被放到一个组中
分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合
语法
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
例:select gender as 性别,count(*)from studentsgroup by gender;
select 列1,列2,聚合... from 表名group by 列1,列2,列3...having 列1,...聚合...
select gender as 性别,count(*)from studentsgroup by genderhaving gender=1;
select count(*)from studentswhere gender=1;
对比
where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选
排序
select * from 表名order by 列1 asc|desc,列2 asc|desc,...
例:select * from students where gender=1 and isdelete=0order by id desc;
分页
select * from 表名limit start,count
从start开始,获取count条数据 start索引从0开始