Mysql完整学习笔记基础篇(有用到的可以收藏)
Mysql完整学习笔记-有用到的可以收藏
一,数据库中 重要概念
1、数据 库
数据库是一个 以某种 有组织的方式存储 的数据集合,可以理解为一个excel文件,文件本身 不存放数据,数据是存放在一个 sheet中
准确的说,数据库 不等同于mysql,数据库是物理存储方式。mysql其实是 DBMS(数据库管理软件),我们习惯性 将 mysq这种管理软件叫做数据库 而已
2、数据库管理软件
在excel中有语句可以查询某一条记录,因为excel提供了语法解析,如果没有这个解析我们就需要一个中间层mysql3、数据库类型
当前数据库主要分为关系型数据库和非关系型数据库
关系型数据库:mysql,oracle, sqlserver,postgresql等
非关系型数据库:mongodb,elasticsearch,redis,neo4j等
4、表,行,列
表:excel文件中一个sheet
行:一条完整的数据,数据都有指定字段
列:数据能按列来存储对关系数据库非常重要,也是数据粒度小的标线,
**5、数据类型:**关系数据库的重要特性就是每个列需要指明数据类型,并且只能保存指定的类型,数据类型还能帮助正确的排序数据,并在优化磁盘使用方面起重要作用
6、主键
表中每一行都应该有可以唯一标识自己的一列,比如身份证号码,一般我们把可以唯一区别某一行的数据的列称为主键
主键用来标识一个特定的列
表中任何列都可以作为主键,只要满足:
1)任意两行都不具备相同的主键值
2)每个行都必须具备一个主键值(不允许为null)
主键的规则:
1)不能修改主键 的 值-就像 可以改名但不能修改 身份证号码
2)已经使用过的主键不能 再使用(就像 已经废弃的身份证号码不能重复使用)
7、sql名词解释
sql是结构化查询语言缩写(structured query language),是一门专门用来和数据库通信的语言
优点:
1)sql不是某个特定数据库供应商专有语言,集合所有重要的DBMS都支持sql,所以学会了基本上可以用于所有数据库
2)sql简单易学,它的语句全都是由英语单词构成,且单词数量不多
3)sql尽管简单,但非常灵活,可以写出复杂的逻辑
二、mysql安装与配置
1、安装mysql及navicat,添加mysql环境变量的步骤可百度搜索教程,这里不再赘述
2、mysql连接命令
mysql -uroot -pXXXXXX
-u:后跟管理员 用户名
-p:后跟管理员用户密码
3、通过登录Navicat for Mysql建立连接,设置此连接的用户名,密码(可百度具体教程)
三、数据库基本操作
1、数据库基础
1)系统数据库:
information_schema:存储系统中一些 数据库对象信息,如用户信息,字符集信息和分区信息等
performance_schema:存储数据库服务器性能参数
mysql:存储系统的用户权限信息
test:mysql自动创建的测试数据库,任何用户都可以使用
2)用户数据库
用户自己创建的数据库
2、新建数据库(sql语句)
create database name;
name:数据库名(不能和已有的库重名)
命名规则:字母,数字,下划线,@,#,
3、查询和选择数据库
show databases; #查看当前连接下的所有数据库
use name; #进入数据库(name为 已建立的数据库名)
4、删除数据库
drop database name;
#删除数据库会删除库中所有数据,慎用
5、新建数据库指定编码
(windows下不指明编码保存中文容易出错)
create database name charset utf8mb4 collate utf8mb4_general_ci;
6、查看数据库创建语句
show create database name;
四、mysql数据类型五、列属性
**1、NULL/NOT NULL:**空 属性,一般 开发时,尽量保证所有的数据都不应该为空,空数据没有意义 ,也无法参与计算
例如 :create table student(name varchar(4) not null,
age int,
birthday datetime);
**2、comment:**列描述,没有实际含义,专门用来描述字段,会根据表创建语句保存,用于给数据管理员来进行了解
例如:create table user(name varchar(4) not null comment “名字”,
age int,
birthday datetime);
**3、default:**默认值,为字段设置该值 ,插入时不指定该值则数据会被赋值为默认值
例如 :create table student(name varchar(4) not null comment ‘名字’, age int default 18, birthday datetime);
**4、primary key:**主键,一张表只能有 一个字段设为主键,用来唯一约束 字段里 的 数据
1)建表时设置主键:
create table user(
id int primary key comment “用户id”,
name varchar(4) not null comment “名字”,
age int default 18,
birthday datetime);
2)设置复合主键:
create table userFavorite(
user_id int comment “用户id”,
article_id int comment “文章id”,
primary key(user_id, article_id));
3)追加主键:
alter table userFavorite add primary key(user_id, article_id);
4)删除主键:
alter table 表名 drop primary key;
**5、unique key:**唯一值,本质与主键差不多,唯一键可以默认允许自动 为空,而且可以多个为空,如用户注册时的邮箱注册,未填写手机号码,后期绑定后必须唯一
1)设置唯一键:
create table user(
id int unique comment “用户id”,
name varchar(4) not null comment “名字”,
age int default 18,
birthday datetime
);
2)设置复合唯一键:
create table userFavorite(
user_id int comment “用户id”,
article_id int comment “文章id”,
unique key(user_id, article_id)
);
3)追加唯一键:
alter table userFavorite add unique key(user_id);
**6、auto_increment:**自增,任何一个字段做自增长前提,自身是一个索引(key一栏有值),自增字段通常是整型,只能设置一个自增长
1)设置自增长:
create tabe user(
id int primary key auto_increment comment “用户id”,
name varchar(10) not null comment “名字”,
age int default 18,
birthday datetime)
2)修改自增长:
alter tabe user change column id id int auto_increment;
3)删除自增长:
alter table user modify id int;
注意 :删除 的 数据 不会改变下一个自增的id
7、foreign key:外键,表A,表 B,字段C为表A的主键,表B中也有字段 C,则字段C是表B的外键
例如:建表时指定外键
父表
create table A(columnC int, primary key(columnC));
子表
create table B(columnC int, constraint fkcc foreign key(columnC) references A(columnC) on delete set null on update set null);
或者先建表在alter建外键
alter table B add constraint fk foreign key(columnC) references A(columnC) on delete set null on update set null;
1)外键模式:
cascade: 在父表Update/delete记录时,同步update/delete掉字表的匹配记录
No action:如果子表中有匹配的记录, 则不允许对父表对应候选键进行update/delete操作
Restrict:同no action, 都是立即检查外键约束
set null:在父表上update/delete记录时, 将子表上匹配记录的列设为null要注意子表外键列不能为not null
六、表的基本操作
1、新建表和删除表
新建表语句:
create table 表名(
列名 数据类型,
…
列名n 数据类型
)charset=utf8;
例如:create table user(
name varchar(10),
age int,
birthday datetime);
删除表语句:
drop table 表名;
例如: drop table user;
2、表的基本操作
1)进入数据库:
use 数据库名;
2)建表:
create talbe 表名(字段1 类型, 字段2 类型)charset=utf8;
3)查看所有表:
show tables;
4)查看见表语句:
show create table 表名;
5)以表格方式查看表:
describe 表名/desc 表名;
6)删除表:
drop table 表名;
7)克隆一张表结构:
create table users2 like user;
3、修改数据库结构
1)修改表名:
alter table 旧表名 rename 新表名;
例如:alter table user rename user1;
2)增加列:
alter table 表名 add 新增字段名 类型(长度) first;
例如:alter table user3 add mobile varchar(11) first;
注:first(可选)表示放在所有列之前
3)删除列
alter table user3 drop mobile;
4)修改列
修改列类型
alter table user modify name varchar(15);
修改列名
alter table user change id new_id int;
4、插入记录
1)指定插入字段
insert into 表名(字段1,字段2,…字段n) values(值1,值2,…值n);
2)省略字段名
insert into 表名 values(字段1,字段2,…字段n);
3)插入多条记录
insert into 表名(字段1,字段2,…字段n) values(值1,值2,…值n),
(值1,值2,…值n),
(值1,值2,…值n),
(值1,值2,…值n);
5、删除记录
delete from 表名 where 条件语句;
delete from 表名;