大家好,我是秋意临。
一学期快结束了,结束前总结一篇MySQL,篇幅内容很多,所以是一篇收藏级,因为内容覆盖面比较广、比较浅、好理解非常适合正在学习mysql同学的新手,可以当作msyql命令手册大全,覆盖了mysql基本操作的所有内容(相信看到目录结构的一瞬间就会明白)。
常看常新,常看常新,常看常新哦!!~
记得收藏+关注免得迷了路。
欢迎加入云社区
一、ER模型
实体-联系模型(简称E-R模型)它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。
我们在做一个项目是就需要提前使用ER模型来绘制ER图,从而使其数据库结构清晰、合理。
DBMS 中的约束,约束强制限制可以从表中插入、更新、删除的数据或数据类型。约束的整个目的是在更新、删除、插入表中时保持数据完整性。
约束的类型
- 非空、独特、默认、校验、键约束 – 主键,外键、域约束、映射约束
二、数据类型
三、字段命名规范
1.采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线_'组成,命名简洁明确,多个单词用下划线_'分隔。
2.—般采用小写命名。
3.禁止使用数据库关键字,如: table, time, datetime, primary等。
4.字段名称一般采用名词或动宾短语,如user_id,is_good。
5.采用字段的名称必须是易于理解,一般不超过三个英文单词。
四、数据库创建与管理
帮助
说明:
- table_name:数据表表名
col_name:字段名
data_type:字段的数据类型
查看创建过程
语法:show create 关键字(table database) 名称;
show create table t_teacher;
4.1、创建数据库
语法:create database db_name;
create database db_test;
4.2、删除数据库
语法:drop database db_name;
drop database db_test;
4.3、列出数据库
语法:show databases;
show databases;
4.4、备份数据库
如果在宿主机操作,可省略 -h 参数。
语法:mysqldump -h 主机名 -u 用户名 -p 密码 数据库名称 > 脚本文件路径;
mysqldump -uroot -p000000 test > test.sql;
4.5、还原数据库
语法:mysql -h 主机名 -u 用户名 -p 密码 数据库名称 < 脚本文件路径;
mysql -uroot -p000000 test < test.sql; 或者 source test.sql;
4.6、使用某个数据库
语法:use db_name;
use db_test;
五、数据表创建与管理
5.1、创建表、结构
语法:create table table_name(col_name1 data_type1,col_name2 data_type2,....);
创建t_test数据表,字段为id,name(数据类型中的数字是字段长度)
create table t_test(id char(20),name char(10));
5.2、查看表结构
语法:describe table_name;
desc table_name;
describe可以缩写为desc。
describe t_test; desc t_test;
5.3、查看数据表
语法:show tables;
show tables;
5.4、复制表结构
如果是复制其他数据库的表结构,在table_name2前加上数据库的名称
语法:create table new_table_name1 like old_table_namme2;
将数据库db_test中的t_test1表结构复制到当前数据库,命名为表结构t_test2。
create table t_test1 like t_test2;
5.5、复制表数据
表结构一致
insert into table_name_new select * from table_name_old;
表结构不一致
insert into table_name_new(column1,column2...) select column1,column2... from table_name_old;
5.6、修改表名
语法:alter table old_table_name (旧名字) rename new_table_name(新名字);
alter table t_test1 rename t_test2;
5.7、增加字段
语法:alter table table_name add col_name1(添加字段名)data_type (字段类型);
alter table t_test add test_address varchar(255);
5.7.1、将添加的字段放入首位
语法:alter table table_name add col_name1(添加字段名)data_type (字段类型) first;
alter table t_test add test_address varchar(255) first;
5.7.2、将添加的字段放入 test2字段之后
语法:alter table table_name add col_name1(添加字段名)data_type (字段类型) after test2(字段);
alter table t_test add test1 varchar(20) after test2;
5.8、删除字段
语法:alter table t_reader drop reader_qq (删除的字段名);
alter table t_test drop test1;
5.9、修改字段的数据类型
语法:alter table table_name modify col_name1(字段名) data_type (字段类型);
将test2的数据类型由varchar改为char。
alter table table_name modify test2 char(100);
5.10、修改字段的名称
语法:alter table table_name change old_col_name(字段名) new_col_old(新字段名) data_type(字段数据类型);
alter table t_test change test_address address char(100);
5.11、设置主键
作用:保证输入记录唯一性
方式:
- 创建表时设置
- 创建表之后设置
语法:create table table_name(xs_id char(12),xs_name char(10) primary key (xs_id));
创建studnet表时,将xs_id设置为主键。
create table student (xs_id char(12),xs_name char(10),primary key(xs_id));
创建studnet表时,将xs_id和xs_name设置为主键。这种将多个字段设为主键的方式称为:组合主键。组合主键也是一个主键(唯一性)。
create table student (xs_id char(12),xs_name char(10),primary key(xs_id,xs_name));
5.12、删除主键
语法:alter table table_name drop primary key;
alter table studnet drop primary key;
5.13、外键
作用:确保数据完整性。如:
- 实体完整性
- 用户定义完整性
- 参照完整性
只有当某个字段成为了主键后,该字段才能在其它表中成为外键。
语法:alter table table_name add constraint 外键名称 foreign key (设为外键的字段名)references t_table2(主键字段名);
将t_test1表中id字段设为主键,t_test2表中id字段设为外键。
alter table t_test2 add constraint fk1 foreign key (id) references t_test1(id);
5.14、删除外键
语法: show create table table_name;
获取外键名称:
show create table t_test2;
语法:alter table t_test2 drop foreign key 外键名称;
alter table t_test2 drop foreign key fk1;
六、数据更新
6.1、insert 插入记录
6.1.1、插入单条记录
语法:insert [into] 表名 [字段1,字段n] values(值1,值n);
insert into test values(123,'tt'); insert into test(pid) values(124);
6.1.2、插入多条记录
insert into test values(125,'ttww'),(126,'ttwwe'),(127,'ttqqq');
6.1.3、子查询,插入多条记录
使用select查询出来的内容字段,插入到inert对应的字段
语法:insert [into] 表名1 [字段1,字段n] select [字段1,字段n] from 表名2 [where语句];
insert into test-1 select * from test-2; insert into test-1(pid,name) select pid,name from test-2;
6.2、delete 删除记录
语法:delete from 表名 [where <条件>];
delete from test; ## 删除所有记录 delete from test where pid==123; #删除id为123的这条记录。
6.3、update 更新记录
语法:update 表名 set 列名1 = 值1,列名2 = 值2,…[where 条件];