MySQL(3)-数据库表的相关操作

博客 分享
0 240
张三
张三 2022-05-05 22:58:49
悬赏:0 积分 收藏

MySQL(3) - 数据库表的相关操作

1.数据库表的创建

逻辑库

1)创建逻辑库:CREATE DATABASE 逻辑库名称;2)显示逻辑库:SHOW DATABASES;3)删除逻辑库:DROP DATABASE 逻辑库名称;

数据表

1)显示逻辑库有哪些表:SHOW TABLES;2)查看student表具体信息:DESC student;3)查看当时创建student表的SQL:SHOW CREATE TABLE student;4)删除student表:DROP TABLE student;
5)创建数据表(中括号内容非必须项):CREATE TABLE 数据表(    列名1 数据类型 【约束】 【COMMENT 注释】,    列名2 数据类型 【约束】 【COMMENT 注释】,       ......   )【COMMENT=注释】;#实例:#UNSIGNED :不带-号的整数; PRIMARY KEY 主键use test;CREATE TABLE student(    id INT UNSIGNED PRIMARY KEY,    name VARCHAR(20) NOT NULL,    sex CHAR(1) NOT NULL,    birthday DATE NOT NULL,    tel CHAR(11) NOT NULL,    remark VARCHAR(200));#插入数据校验INSERT INTO student VALUES(1,'张三','','2000-02-22','11111111111',NULL);
6)数据表添加字段:ALTER TABLE 表名称ADD 列1 数据类型 【约束】 【COMMENT 注释】,ADD 列1 数据类型 【约束】 【COMMENT 注释】,……;
#实例:
ALTER TABLE studentADD address VARCHAR(200) NOT NULL,ADD home_tel CHAR(11) NOT NULL;
7)修改表字段类型和约束ALTER TABLE 表名称MODIFY 列1 数据类型 【约束】【COMMENT 注释】,MODIFY 列2 数据类型 【约束】【COMMENT 注释】,……;
#实例
ALTER TABLE studentMODIFY home_tel VARCHAR(20) NOT NULL;DESC student;#查看表信息,核对字段是否已修改过来
8)修改表字段名称ALTER TABLE 表名称CHANGE 列1 新列名1 数据类型 【约束】【COMMENT 注释】,CHANGE 列2 新列名2 数据类型 【约束】【COMMENT 注释】,……;
#实例
ALTER TABLE studentCHANGE address home_address VARCHAR(200) NOT NULL;DESC student;#查看表信息,核对字段是否已修改过来
9)表删除字段ALTER TABLE 表名称DROP 列1,DROP 列2,……;#实例ALTER TABLE studentDROP home_address,DROP home_tel;DESC student;#查看表信息,核对字段是否已修改过来

2.不同的数据类型


3.数据库表字段约束

前置知识

设计数据表要符合第三范式,下面是字段约束的讲解

CREATE TABLE t_teacher(    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,        #int类型,不能取负整数(UNSIGNED),约束条件:主键约束(PRIMARY KEY),id自增(AUTO_INCREMENT)    name VARCHAR(20) NOT NULL,    #约束条件:非空约束(NOT NULL)    tel CHAR(11) NOT NULL UNIQUE, #约束条件:非空约束(NOT NULL),唯一约束(UNIQUE)    married BOOLEAN NOT NULL DEFAULT FALSE    #约束条件:非空约束(NOT NULL),默认值为FALSE(DEFAULT FALSE)

#父表;CREATE TABLE t_dept(    deptno INT UNSIGNED PRIMARY KEY,    dname VARCHAR(20) NOT NULL UNIQUE,    tel CHAR(4) UNIQUE);#子表CREATE TABLE t_emp(    empno INT UNSIGNED PRIMARY KEY,    ename VARCHAR(20) NOT NULL,    sex ENUM("男","女") NOT NULL,    deptno INT UNSIGNED,    hiredate DATE NOT NULL,    FOREIGN KEY (deptno) REFERENCES t_dept(deptno)    #外键约束);


4.数据库的索引机制

查看数据表有哪些索引

SHOW INDEX FROM 表名;

创建数据表同时创建索引

CREATE TABLE(    ......,    INDEX [索引名称] (字段),   #[索引名称]不填时,索引名称默认就是字段名称    ......);#实例CREATE TABLE t_message(    id INT UNSIGNED PRIMARY KEY,    content VARCHAR(200) NOT NULL,    type ENUM("公告","通知","个人通知"),    create_time TIMESTAMP NOT NULL,    INDEX idx_type (type));

数据表已经存在,添加索引

#方式一CREATE INDEX 索引名称 ON 表名(字段);#方式二ALTER TABLE 表名称 ADD INDEX [索引名](字段);

数据表已经存在,删除索引

DROP INDEX 索引名称 ON 表名;
DROP INDEX idx_type ON t_message;CREATE INDEX idx_type ON t_message(type);SHOW INDEX FROM t_message;


5.MySQL中的相似方法

5.1.DESC和SHOW CREATE TABLE的区别

  • DESC 表名:用来显示表的状态,包括列名(column name),各个列的类型(Type),各个列的值类型,主外键(Key),默认值等;

  • SHOW CREATE TABLE 表名:显示创建表时的sql语句

5.2.MODIFY和CHANGE的区别

  • CHANGE可以重命名列名,也可以修改列的数据类型,而MODIFY只能修改列的数据类型。
  • 在使用CHANGE修改数据类型时,CHANGE语法要写原列名称和新列名称,即使原列名称和新列名称是一样的。这种情况下就可以使用MODIFY来改变列的数据类型,不需要重命名。

5.3.TIME和TIMESTAMP的区别

  • TIME是存储一天的时间:时分秒
  • TIMESTAMP既有日期也有时间,但是保存的时间只能是1970-1-1日之后的,在数据库中存储格式如下图所示:

 5.4. CHAR和VARCHAR的区别

  • CHAR存储定长数据很方便,比如定义CHAR (10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间
  • VARCHAR存储变长数据,若一个字段值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR (10)是最合适的。VARCHAR类型的实际长度是它的值的实际长度+1。所加的1字节就是为了存储实际使用了多大的长度
posted @ 2022-05-05 22:01 葛老头 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    张三

    张三 (王者 段位)

    821 积分 (2)粉丝 (41)源码

     

    温馨提示

    亦奇源码

    最新会员