MySQL数据库建表过程 

目录

创建并使用数据库

第一步:打开命令行

第二步:运行MySQL

第三步:建立数据库以及表数据

创建表时约束条件

约束类型

其他SQL语句 

MySQL命令行导入导出数据库

char 和 varchar 区别


创建并使用数据库

第一步:打开命令行

有的是直接输入密码就可以(软件版比较常用)

有的是首先Win+r 输入cmd,打开MySQL命令行(用的多一些)

还有的是到数据库安装目录下的【bin】文件夹,在地址栏中运行【cmd】

注意:Windows启动 MySQL 的几种方式

第二步:运行MySQL

运行cmd后输入:【mysql -u root -p 再回车,我的没有密码,所以password那里没有输入。 

【正常来讲输入自己设置的密码:(默认:123456)直接回车。】

第三步:建立数据库以及表数据

首先就是建立一个数据库,在这里我们把数据库的名字命名为:jdbc_demo 

输入:

create database jdbc_demo;

2、然后我们检查一下是否创建成功

输入:

show databases;

3、使用数据库

输入:

use jdbc_demo;

4、创建表,让表中有ID、名字、密码三条信息(里面信息可以随便改)

输入:

create table user(
        id int(4) not null primary key auto_increment,
        username varchar(20) not null,
        password varchar(10) not null 
       );

当然我们在创建表之前可以先判断一下这个表在不在

如果数据库中存在这个表,就把它从数据库中drop掉。

DROP TABLE IF EXISTS 表名;

总的来说可以这样写:

IF EXISTS 表名;  作用:如果表存在就删掉(这段代码怎么执行都不会报错)

DROP TABLE IF EXISTS user; 
-- IF EXISTS 表名; 作用:如果表存在就删掉(这段代码怎么执行都不会报错)

create table user
(
    id int(4) primary key auto_increment,   -- 主键ID 可以不设置非空,因为主键本来就是非空且唯一
    username varchar(20) not null,  -- 用户名  非空
    password varchar(10) not null   -- 密码   非空
);

5、查看表是否存在

输入:

show tables;

6、查看表的定义

输入:

desc user;

7、插入数据(我们在这里随便写一下)

输入:

insert into user values(0,"tom","12");

8、查看数据

输入:

select * from user;

到这里我们就完成一个创建数据库、建表的过程了,我们看一下运行效果:

注意事项:所有的符号都是英文编写。

创建表时约束条件

约束是建表时给某一列增加的强制数据规则

创建表的语法结构

CREATE TABLE <表名> (
   <列名>  <数据类型>  [列级完整性约束定义] 
   {, <列名>  <数据类型>  [列级完整性约束定义]
                 … } 
   [, 表级完整性约束定义 ]
);

约束类型

根据上表student表结构写一下约束类型:

主键:PRIMARY KEY 一个表最多只能设置一个,是表每行的唯一性标识,非空且唯一

外键:FOREIGN KEY是别的表中的主键,两个表有依赖关系),被别的表依赖的表称为父表,依赖别的表的表成为子表,子表数据增加或修改时,数据必须在父表中存在。父表中数据删除或修改时,数据没有被子表使用

非空:NOT NULL(不允许为空)

唯一性:UNIQUE KEY(如果某列定义加了这个约束,那后续数据不允许出现重复,唯一约束允许NULL值的存在),比如说手机号。每个表最好都有主键约束

检查约束:CHECK (条件表达式),用于限制列的取值范围或规则,例如限制性别只能是男或女

自增:auto_increment常用在主键上,如果ID有1、2、3、4、5,删掉了3号,那么会变成:1、2、4、5)

【例一】用student表进行举例

student 表
sno name sex age dep uid
09512101 张三 18 计算机系 000001
09512102 李四 19 计算机系 000002
09512103 王五 20 计算机系 000003
student 表结构
列名 数据类型 约束 说明
sno CHAR(8) 主键 每个学生学号应非空且唯一
name CHAR(10) 非空 姓名信息必须要保存        
sex CHAR(2) 检查 取值“男”或“女”
age INT 检查 小于10,大于60的学生年龄无意义
dep VARCHAR(26) default 默认值为“计算机系”
uid CHAR(18) 唯一值 每个人的身份证号是唯一

创建 student 表

CREATE TABLE student(
    sno CHAR(8) PRIMARY KEY ,
    name CHAR(10) NOT NULL ,
    sex CHAR(2) CHECK(sex ='男' OR sex ='女'),
    age INT CHECK(age >=10 AND age <=60),
    dep VARCHAR(26) default '计算机系',
    uid CHAR(18) UNIQUE
);

【例二】用stulesson表进行举例

stulesson 选课表
sno cname score
001 数据库原理 90
003 数据库原理 80
003 C语言 75
stulesson 选课表结构
列表 数据类型 约束 说明
sno CHAR(8)
cname CHAR(50) 非空 姓名信息必须要保存
score INT 检查 在0~100之间

创建 stulesson 表

CREATE TABLE stulesson(
    sno CHAR(8),
    cname CHAR(50) NOT NULL,
    score INT CHECK(score >=0 AND score <=100),
    PRIMARY KEY(sno, cname), 
    FOREIGN KEY(sno) REFERENCES student(sno)
)

注释:

<表名>:所要定义的基本表的名字

<列名>:组成该表的各个属性(列)

<列级完整性约束条件>:涉及相应属性列的完整性约束条件

<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

其中 PRIMARY KEY 为主码约束,CHECK为检查约束
 

其他SQL语句 

删除数据库:

drop database 数据库名

删除表:

drop table 表名

在表的末尾添加一个列:

Alter table 表名 add 列名 数据类型 (约束条件);

在表的开头添加一个列:

Alter table 表名 add 列名 数据类型 (约束条件) first;

MySQL命令行导入导出数据库

想直接导入sql文件或者写好后想导出数据库怎么办

MySQL命令行导入导出数据库

char 和 varchar 区别

`char`和`varchar`都是SQL数据库中用于存储字符串数据类型的字段类型,它们的主要区别在于存储方式、空间效率以及长度处理:

1. 存储方式:
   char:定长字符串类型,每个`char`类型的字段会占用预定义的固定长度的空间,不论实际存储的字符串长度是否达到预设长度。例如,如果你声明一个`char(10)`字段,那么即使你只存储了3个字符,也会占用10个字符的存储空间,并用空格或其他空白字符填充剩余的7个字符位置。
   varchar:变长字符串类型,根据实际存储的字符数动态分配存储空间。例如,对于`varchar(10)`,若存储3个字符,只会占用包含3个字符及必要结束标记的存储空间。

2. 空间效率:
   char:当数据长度往往固定且较小,或者经常填充到预定义长度时,空间利用率较高,但存储短字符串时可能会造成空间浪费。
   varchar:更适合存储长度变化较大的字符串,能有效节省空间,特别是对于大多数字符串都不满预定义长度的情况下。

3. 性能:
   char:因为长度固定,在数据存储和检索上可能会更快,特别是在索引密集型操作中,因为存储结构更加紧凑和可预测。
   varchar:数据长度不固定,尽管现代数据库系统对此做了优化,但在某些条件下,尤其是在索引较大且字符串长度变化范围大的情况下,其性能可能略低于char。

4. 适用场景:
   char:适用于存储固定长度的数据,如身份证号码、ID、邮政编码等,或者是长度一定且不需要额外空间的场景。
  varchar:适用于存储长度可变的数据,如姓名、地址、评论等,这些数据长度可能有很大差异。

需要注意的是,不同数据库系统对char和varchar的具体实现可能会有所不同,包括最大长度限制、是否填充空格、存储效率等方面。在MySQL等数据库中,varchar的最大长度可达65535字节,而在Oracle数据库中,varchar2是varchar的增强版本,通常用于替代varchar。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐