Mysql建库及建表流程总结

一,创建库

1.进行准备工作

登入数据库:使用 mysql -u root -p 然后再输入密码后进行操作。

2.查看已有的数据库

使用show databases ;命令就能够查看当前所有的自带数据库。

其中show databases**like 条件;**这个命令还可以添加条件的进行查看,特定条件下可以快速查询到自己想要看到的内容。

3.创建数据库

create database aa加粗部分是创建表的名字可以任意取名。

show databases;用这个命令进行查看。

创建时若数据库已存在,则报错

查看创建数据库的语句:

show create database ;

show create database testdb \G 折行显示

4.切换数据库

查看当前使用的数据库:

select database();

5.使用数据库

use 数据库名; 一般搭配show databases ;使用

6.删除数据库

drop database 数据库名;

二,创建表

1.表的创建

create database 表名;

新建表时注意创建再哪个库中。

2.查看表

show语句:

show tables;显示当前数据库中已有的数据表

show create table student1**\G**使用\G可以查看更全面的表定义信息

describe语句:

desc student1;查看数据表中各列的信息。

3.删除表

drop table if exists 表名;用户必须拥有执行 drop table 命令的权限,否则数据表不会被删除

drop table if exists tb1;即先判断是否存在,存在则删除。

4.修改表

改表名:

alter table 表名 rename 新表名;

rename table 表名 to 新表名;

5.新增列

alter table student1 add password char(8); 在最后一行新增

alter table student1 add notes varchar(30) after age;再添加一个新列notes varchar(30),位置在score之前

alter table student1 add aa int first; 在第一列添加一个新列

6.删除列

alter table student1 drop notes;

7.修改列名

alter table student1change password passwd char(8); 将password改为passwd

8.修改列类型

alter table student1 add birthday char(10);插入新列,修改类型

9.复制表

create table student2 like student1;只是复制结构框架,内容看不见

create table student3 select * from student1; 复制结构+数据

三,表的约束

保证数据 的合法性,从业务逻辑角度保证数据的正确性

1 .列级约束

alter table 表名 modify 列名 列类型 列约束; 修改

alter table 表名 modify 列名 列类型 #; 不加约束即可删除

2.表级约束

alter table 表名 add constraint 约束名 约束类型(要约束的列名) ; 添加

alter table 表名 drop 约束类型 约束名; 删除

注意:不能直接修改表级约束,要删除原有的表级约束,再新增即可

3.非空约束

create table myclass1(class_name varchar(20) not null, class_room varchar(20) not null, class_id int); name跟room不能为空

删除not null:

alter table student1 modify id int null;

4.默认值约束

create table teacher1(id int not null, name varchar(30) not null, sex char(2) default '女');

insert into teacher1(id,name) values('1001','林雪');

及添加的林雪性别为女

insert into teacher1 values('1002','石磊','男');

若添加注释则不会被默认

数据在插入的时候不给该字段赋值,就使用默认值

四,列描述

create table myclass2( class_name varchar(20) not null comment '教 室',class_room varchar(20) default '计科2'); 给予描述 作用相当于注解

show create table myclass2\G 用\G才能看到

五,主键约束

通俗来讲是为了保证数据的唯一性

create table t1 ( id int unsigned primary key comment '学号不能为空', name varchar(20) not null ,sex char(2) default '男'); 创建了增加主键的命令,这时再添加的人物前的序号就只能出现一次

及insert into t1 values(1,'孙文','女');

显示Query OK, 1 row affected (0.00 sec)

再次输入insert into t1 values(1,'孙文','女');

则出现ERROR 1062 (23000): Duplicate entry '1' for key 't1.PRIMARY'

六,主键自增长

alter table student1 add primary key(id); 先增加主键

alter table student1 modify id int auto_increment; Query OK, 3 rows affected (0.05 sec)设置自增长

create table t3 ( id int primary key auto_increment, systemname varchar(10) not null )auto_increment=100;指定自增长的起始值为100

insert into t3(systemname) values('windows'),('linux'); 添加记录后及windows的id为100,Linux的为101

注意:自增长在出现重复时它会直接跳过错误的哪一个,重下一次的再进行增长

六,外键约束

表分主跟从两种

主表(父表):被引用的表、被参考的表

从表(子表):引用别人的表,参考别人的表

两表之间必须建立联系:

foreign key (从表的字段名称) references 主表名字(主表的字段名称)

例:

create table myclass3(id int primary key, name varchar(20) not null ; 主表

create table myclass3_stu( id int primary key, name varchar(30) not null, class_id int, foreign key (class_id) references myclass3(id) ); 从表

主表中插入数据

mysql> insert into myclass3 values(10,'C++'),(20,'Java');

select * from myclass3;

从表中正常插入数据

insert into myclass3_stu values(1,'Li',10),(2,'Sun',20);

select * from myclass3_stu;

从表中插入没有班级的记录,受外键控制,报错

insert into myclass3_stu values(3,'wang',30);

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`stu_info`.`myclass3_stu`, CONSTRAINT `myclass3_stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `myclass3` (`id`))

从表中,收到外键控制,可以使用null替代,表示没有分配班级

insert into myclass3_stu values(3,'wang',null);

七,检查约束

创建约束0~10000:

create table t5(id int primary key, name varchar(20), salary float, check(salary>0 and salary<10000) );

insert into t5 values(1,'Li',5984);在范围内可以创建

insert into t5 values(2,'wang',12000);不符合则报错

八,删除约束

删除not null约束、default约束

alter table 表名 modify 列名 类型;

删除unique约束

alter table 表名 drop index 惟一约束名;

删除primary key约束

alter table 表名 drop primary key;

删除foreign key约束

alter table 表名 drop foreign key 外键名;

删除check约束

alter table 表明 drop check 约束名;

九,储存引擎

查看支持的引擎命令:

show engines\G

在创建表时, 可以指定表的存储引擎:

create table (...) engine=InnoDB;

相关推荐
梦幻通灵2 小时前
MybatisPlus使用数据库递增ID实现方案【持续更新】
数据库·oracle
l1t2 小时前
DeepSeek总结的从 SQL 桥梁到智能体基础设施:Hex 的 DuckDB 实践
数据库·sql·duckdb
代码派2 小时前
PostgreSQL 同构迁移上云方案|NineData 数据复制、实时增量与一致性校验
数据库·postgresql·上云·ninedata·迁移·数据库迁移·版本升级
孙琦Ray2 小时前
Speedb 数据引擎转向开源,RocksDB 替代方案迎来新竞争
数据库·开源·rocksdb·键值存储·speedb
与数据交流的路上2 小时前
一次 redis 幽灵内存的分析
数据库·redis·缓存
霂鳯2 小时前
新手勇闯网络安全 | MySQL基础(四)
mysql·web安全·adb
qq_401700412 小时前
Qt Modbus 工程化封装:超时、重试、取消与资源释放,别让异步请求变成隐患
数据库·qt
ESDWAN2 小时前
SD-WAN 是什么?工作原理、适用场景与选型要点
开发语言·网络·数据库·架构·php
m0_639906942 小时前
MySQL 慢查询优化|explain执行计划详解
数据库·mysql