基于MySQL 8.0 Command Line Client数据库操作2

表包含的概念:
    1.表:数据库中存储数据的数据库对象,每个数据库包含若干表,表由行和列组成。
    2.表结构:每个表具有一定的结构,表结构包含一组固定的列列,由数据类型,长度,允许Null、键、默认值等组成。
    3.记录:每个表包含若干行数据,表中一行称为一个数据。
    4.段表:表中每列称为字段,每个记录由若干数据项(列)构成,构成记录的每个数据项就称为字段。
    5.空值(Null):通常表示未知、不可用或将在以后添加的数据。
    6.关键字:关键字用于唯一标识记录。如果表中记录的某一字段或字段组合能唯一标识记录,则该字段或字段组合称之为选键。如果一个表有多个候选键,则选定其中一个为主键。
    7.默认值:默认值只在插入数据时,当然没有明确给出某列的值。系统为此列指定一个值。
    
数据类型:
    1.整型类型:包括tinyint、smallint、mediumint、int、bigint等类型。
    2.定点数类型:用于存储定点数,必需保存为确切精度的值。
    3.浮点数类型:包括单精度浮点数float类型和双精度浮点类型double类型。
    4.字符串类型:有char(n)、varchar(n)、tinytext、text等。
    5.日期和时间类型:有date、time、datetime、timestamp、year。
    6.二进制数据类型:有bit、binary、varbinary、tinyblob、blob、mediumblob、longblob。
    7.枚举类型:
        enum(成员1,成员2,成员3,···)
    8.集合类型:
        set(成员1,成员2,成员3,···)

数据类型的选择:
    一、般来讲,数据类型的选择遵循以下原则
    一、在符合应用要求(取值范围、精度)的前提下,尽量使用“短”数据类型。
    二、数据类型越简单越好。
    三、尽量采用精确小数据类型(如decimal),而不采用浮点数类型。
    四、在MySQL中。应该用内置的日期和时间数据类型,而不是用字符串来存储日期和时间。
    五、尽量避免字段的属性为Null。建议将字段定义为Not Null约束。


创建表:
    在学生信息数据库(stusys)中创建student表
                学生表(student)的结构
-----------------------------------------------------------------------------
列名        数据类型    允许NULL值    键        默认值        说明
-----------------------------------------------------------------------------
sno         char(6)      无        主键        无        学号
-----------------------------------------------------------------------------
sname         char(8)      无                无        姓名
-----------------------------------------------------------------------------
ssex        char(2)      无                男        性别
-----------------------------------------------------------------------------
sbirthday    date          无                无        出生日期
-----------------------------------------------------------------------------
speciality    char(12)      有                无        专业
-----------------------------------------------------------------------------
tc        tinyint      有                无        总学分
-----------------------------------------------------------------------------

mysql> use stusys;
Database changed
mysql> create table student
    ->  (
    ->          sno char(6) not null primary key,
    ->          sname char(8) not null,
    ->          ssex char(2) not null default '男',
    ->          sbirthday date not null,
    ->          speciality char(12) null,
    ->          tc tinyint null
    ->  );

执行结果:
Query OK, 0 rows affected (0.01 sec)

复制已有表:
    在数据库stusys中,使用复制方式创建student1表,表结构取自student表
mysql> use stusys;
Database changed
mysql> create table student1 like student;
执行结果:
Query OK, 0 rows affected (0.01 sec)

查看表:
     查看数据库stusys中的所有表名
mysql> use stusys;
Database changed
mysql> show tables;
执行结果:
+------------------+
| Tables_in_stusys |
+------------------+
| student          |
| student1         |
+------------------+
2 rows in set (0.00 sec)


查看表的基本结构:
    查看数据库stusys中student表的基本结构
mysql> show columns from student;
执行结果:
+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| sno        | char(6)  | NO   | PRI | NULL    |       |
| sname      | char(8)  | NO   |     | NULL    |       |
| ssex       | char(2)  | NO   |     | 男           |       |
| sbirthday  | date     | NO   |     | NULL    |       |
| speciality | char(12) | YES  |     | NULL    |       |
| tc         | tinyint  | YES  |     | NULL    |       |
+------------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)

查看表的详细结构:
    查看数据库stusys中student表的详细结构
mysql> show create table student\G
执行结果:
*************************** 1. row ***************************
       Table: student
Create Table: CREATE TABLE `student` (
  `sno` char(6) NOT NULL,
  `sname` char(8) NOT NULL,
  `ssex` char(2) NOT NULL DEFAULT '男',
  `sbirthday` date NOT NULL,
  `speciality` char(12) DEFAULT NULL,
  `tc` tinyint DEFAULT NULL,
  PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)


修改表:
1.添加列
    在数据库stusys的student1表中增加一列sid,添加到表的第一列,不为空,取值唯一并自动增加
mysql> alter table stusys.student1
    -> add column sid int not null unique auto_increment first;
执行结果:
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

使用DESC语句查看student1表
mysql> DESC stusys.student1;
执行结果:
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| sid        | int      | NO   | UNI | NULL    | auto_increment |
| sno        | char(6)  | NO   | PRI | NULL    |                |
| sname      | char(8)  | NO   |     | NULL    |                |
| ssex       | char(2)  | NO   |     | 男           |                |
| sbirthday  | date     | NO   |     | NULL    |                |
| speciality | char(12) | YES  |     | NULL    |                |
| tc         | tinyint  | YES  |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

2.修改列
    将数据库stusys的student1表的sbirthday列修改为sage,将数据类型改为tinyint,可为空,默认值为18
mysql> alter table stusys.student1
    -> change column sbirthday sage tinyint default 18;
执行结果:
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
使用DESC语句查看student1表
mysql> DESC stusys.student1;
执行结果:
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| sid        | int      | NO   | UNI | NULL    | auto_increment |
| sno        | char(6)  | NO   | PRI | NULL    |                |
| sname      | char(8)  | NO   |     | NULL    |                |
| ssex       | char(2)  | NO   |     | 男           |                |
| sage       | tinyint  | YES  |     | 18      |            |
| speciality | char(12) | YES  |     | NULL    |                |
| tc         | tinyint  | YES  |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+
7 rows in set (0.00 sec)


3.删除列
    删除数据库stusys的student1表中的sid列
mysql> alter table stusys.student1
    ->  drop column sid;
执行结果:
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0


4.重命名表
    在数据库stusys中,将student1表重命名为student2表
一、rename to子句:
mysql> alter table stusys.student1
    -> rename to stusys.student2;
执行结果:
Query OK, 0 rows affected (0.01 sec)

二、rename table语句
mysql> rename table stusys.student2 to student3;
执行结果:
Query OK, 0 rows affected (0.01 sec)

5.删除表
    删除数据库stusys中的student3表
mysql> drop table stusys.student3;
执行结果:
Query OK, 0 rows affected (0.01 sec)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X卫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值