MySQL base
数据库之MySQL基础·中文
MySQL 数据库
数据库介绍
关系型数据库(SQL)
存储方式固定,安全
分类储存;列表……
eg:MySQL
非关系型数据库(NoSQL)
存储方式灵活,效率高,不太安全
整体存储;像建立模型
eg:MongoDB
库,表操作
——MySQL管理工具管理库,库中存放表,数据以字段的形式保存在表中。
MySQL不严格区分大小写,但为了程序美观,遵循大写为程序原代码,小写为自定义代码。
语句结束符:每个语句都以 ;或者 \g 结束。
类型:强制数据类型,任何数据都有自己的数据类型
root 账户 权限过高,需要新建一个账户
create user ‘qiye’@’%'identified by ‘qwe123’;
数据操作
库级操作
创建库:create database [if not exists] 库名 ;
重复创建会报错, 可以加上if not exists
删除库:drop database [if exists] db_name;
如果不知道数据库是否存在,记得加 if exists
使用数据库:use db_name;
显示所有的库:show databases;
查询当前使用的库:select database();
表级操作
显示所有的表:show tables;
创建表:create table [if not exists] 表名(id int ,name varchar(20)…)
重复创建会报错, 可以加上if not exists
显示创建表的信息:show create table tb_name;
删除表:drop table tb_name
表中数据操作
增(insert into values)
指定字段插入:INSERT INTO tb_name(field_name) VALUES (field_values);
全字段插入:INSERT INTO tb_name VALUES (all_values);
多条插入:INSERT INTO tb_name(field_name) VALUES (value_1), (value_2), …;
删(delete from where)
:删除表中所有数据:DELETE FROM tb_name;
删除表中满足条件的数据:DELETE FROM tb_name WHERE conditions;
改(update set where)
修改所有数据:UPDATE tb_name SET field_1=value_1
修改多个:UPDATE tb_name SET field_1=value_1, field_2=value_2 … WHERE conditions;
修改满足条件的数据:UPDATE tb_name SET field_1=value_1 WHERE conditions;
查(select from where)
指定字段查询:SELECT field_names FROM tb_name;
全字段查询:SELECT * FROM tb_name;
带条件的查询:SELECT field_names FROM tb_name WHERE conditions;
数据类型
数值类型
int
四个字节(0,4294967295)
float(m,n)
单精度浮点型(4个字节)
double(m,n)
双精度浮点型,m总个数,d小数位(8字节)
不常用:tinyint、samllint、mediumint、bigint
字符类型
char(size)
保存固定长度的字符串(可包含字母、数值以及特殊字符)。在括号中指定字符串的长度。最多255个字符
varchar(size)
保存可变长度的字符串(可包含字母、数值以及特殊字符)。在括号中指定字符串的长度。最多255个字符。如果值的长度大于255,则被转换为text类型
text/blob
文本格式,可存放最多65535字符
enum(枚举)
只能在几项中选择
不常用:tinytext/tinyblob、text/blob、longtext/longblob、
时间日期类型
date:日期 格式:2019-04-16
time:时间 格式:09:32:43
datetime:日期时间 格式:2019-04-16 09:32:43
timestamp:自动存储记录修改的时间
year:存放年
MySQL取数据
筛选条件
比较运算符
——等同Python及其他程序语言
逻辑运算符
——and,or,not
其他操作:
——排序:order by
——限制:limit start,count
——去重:distinct
模糊/范围查询:
——%,任意多个字符
——_,任意一个字符
——between,区间
——in,目标是否存在表中
聚合与分组
常用聚合函数命令如同Excel
group by:分组
having:对聚合出来的数据进行筛选
where,在聚合分组前对数据进行筛选;group by,在聚合后再进行筛选
子查询
select 中嵌套 select
连接查询
内连接(inner join)
无条件内连接:又名交叉连接/笛卡尔连接 (交集)
eg:Mysql>select * from student [inner] join scoren
有条件内连接:在无条件连接上加上on自居,连接时,筛选有实际意义的记录来进行组合
修改表结构约束条件
alter 命令
对表的结构进行修改(不建议使用,应在设计表时就考虑到各种情况,宁多勿缺)
ALTER TABLE tab1 DROP i ; 删除tab1表中的i字段
ALTER TABLE tab1 ADD i INT; 在tab1中添在i字段,默认添在段尾。
——(FIRST,添在段首)……
ALTER TABLE tab1 MODIFY c CHAR(10); 修改字段c 的类型为CHAR(10)
ALTER TABLE tab1 CHANGE c x INT;修改字段名称及类型
ALTER TABLE tab1 RENAME TO tab2; 修改tab1表名为tab2;
约束条件
default 设定默认值(不设定即赋予默认值)
not null 不允许空值
unique key 该字段值唯一
auto_increment 自增加,可在定义字段类型后对自增加设定起始值以及步长
set @@auto_increment_increment=2; *--设置步长为2*
set @@auto_increment_offset=2; *--设置初始值为3*
primary key 主键(非空+唯一)每张表中只能设定一个主键
foreign key 外键,子表字段设定外键所取值不能超过索引表
表关系
一对一
一对多
多对多