mysqlshu数据库

为数据库创建数据表,可以使用SQL命令CREATE TABLE来完成。此语句的完整语法是相当复杂的,因为存在很多的可选子句创建表使用CREATE TABLE命令。

    语法格式:

    CREATE TABLE [IF NOT EXISTS] 表名

      列名  数据类型  [NOT NULL | NULL] [DEFAULT 列默认值]…

       ENGINE = 存储引擎

 

   CREATE TABLE命令的基本格式:

     CREATE TABLE tbl_name

      列名数据类型 1 [NOT NULL | NULL] ,

          列名数据类型 2 [NOT NULL | NULL] ,

         ..

例:

CREATE TABLE  book (

 图书编号  char(20)   NOT NULL  PRIMARY KEY,

 图书类别  varchar(20)  NOT NULL  DEFAULT  '计算机',

 书名       varchar(40)  NOT  NULL ,

 作者       char(10)     NOT  NULL ,

 出版社     varchar(20)  NOT  NULL ,

 出版时间   date        NOT  NULL ,

 单价      float(5,2)      NOT  NULL ,

 数量      int(5),  

 折扣      float(3,2) , 

 封面图片  blob

) ENGINE=InnoDB;

例中,primary key表示将学号字段定义为主键。engine=innodb 表示采用的存储引擎是innodb,是mysql在window平台默认的存储引擎,因此可以省略。

1)显示数据表文件名

       语法格式:  SHOW TABLES

显示Bookstore 数据库建立的数据表文件:

        USE Bookstore 

        SHOW TABLES ;

2)显示数据表结构

       语法格式:

            {DESCRIBE | DESC} 表名 [列名 | 通配符 ]

     DESCDESCRIBE的简写,二者用法相同。

 用DESCRIBE语句查看 Book 表的列的信息。

        USE Bookstore

        DESCRIBE Book ;

 查看 Book 表图书编号 列的信息。

        USE Bookstore

        DESC Book 图书编号 ;

ALTER TABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。

语法格式:

ALTER TABLE 表名

  ADD [COLUMN] 列定义  [FIRST | AFTER列名]                 /*添加列*/ 

  | ALTER [COLUMN] 列名 {SET DEFAULT 默认值| DROP DEFAULT}

                                                                                        /*修改默认值*/

  | CHANGE [COLUMN] 旧列名 列定义                    /*对列重命名*/

        [FIRST|AFTER列名

  | MODIFY [COLUMN] 列定义 [FIRST | AFTER 列名]  

                                                                                        /*修改列类型*/

  | DROP [COLUMN] 列名                                      /*删除列*/

  | RENAME [TO] 新表名                                                                         /*重命名该表*/

假设已经在数据库Bookstore中创建了表book,表中存在书名列。在表book中增加浏览次数列并将表中的书名列删除。

       ALTER TABLE book  ADD 浏览次数 tinyint NULL ,

                          DROP COLUMN 书名 ;

 假设数据库Bookstore中已经存在table1表,将table1表重命名为student

        ALTER TABLE table1 RENAME TO student; 

             

 修改表名除了上面的ALTER TABLE命令,还可以直接用RENAME TABLE语句来更改表的名字。

    语法格式: RENAME TABLE 旧表名1  TO 新表名1

              [ , 旧表名2  TO 新表名2] ...

 假设数据库BookStore中已经存在table2表和table3表,将table2表重命名为orderstable3表重命名为orderlist

       RENAME TABLE table2 TO orders, Table3 TO orderlist;

好的,我可以为您提供一些参考代码,您可以根据您的实际情况进行修改和优化。 首先,我们需要定义一个图书信息的结构体: ```c typedef struct BookInfo { char bookName[50]; // 书名 char author[20]; // 作者 int bookID; // 书号 int borrowed; // 是否被借阅,0示未被借阅,1示已被借阅 struct BookInfo *next; // 指向下一本书的指针 } BookInfo; ``` 然后,我们可以定义一个链来存储图书信息: ```c BookInfo *head = NULL; // 链头指针 ``` 接下来,我们可以实现录入新书的功能: ```c void addBook() { BookInfo *newBook = (BookInfo*) malloc(sizeof(BookInfo)); // 分配新的图书信息结构体 printf("请输入书名:"); scanf("%s", newBook->bookName); printf("请输入作者名:"); scanf("%s", newBook->author); printf("请输入书号:"); scanf("%d", &(newBook->bookID)); newBook->borrowed = 0; // 初始状态为未被借阅 newBook->next = NULL; if (head == NULL) { // 链为空,直接将新图书作为头节点 head = newBook; } else { // 链不为空,将新图书插入链末尾 BookInfo *p = head; while (p->next != NULL) { p = p->next; } p->next = newBook; } printf("录入成功!\n"); } ``` 然后,我们可以实现借阅图书和归还图书的功能: ```c void borrowBook() { int bookID; printf("请输入要借阅的图书的书号:"); scanf("%d", &bookID); BookInfo *p = head; while (p != NULL && p->bookID != bookID) { // 查找对应书号的图书 p = p->next; } if (p == NULL) { // 没有找到对应书号的图书 printf("未找到该书!\n"); } else if (p->borrowed == 1) { // 图书已被借阅 printf("该书已被借出!\n"); } else { // 图书未被借阅,可以借阅 p->borrowed = 1; printf("借阅成功!\n"); } } void returnBook() { int bookID; printf("请输入要归还的图书的书号:"); scanf("%d", &bookID); BookInfo *p = head; while (p != NULL && p->bookID != bookID) { // 查找对应书号的图书 p = p->next; } if (p == NULL) { // 没有找到对应书号的图书 printf("未找到该书!\n"); } else if (p->borrowed == 0) { // 图书未被借阅,无需归还 printf("该书未被借出!\n"); } else { // 图书已被借阅,可以归还 p->borrowed = 0; printf("归还成功!\n"); } } ``` 接着,我们可以实现查找图书和删除图书的功能: ```c void searchBook() { char bookName[50]; printf("请输入要查找的图书的书名:"); scanf("%s", bookName); BookInfo *p = head; while (p != NULL && strcmp(p->bookName, bookName) != 0) { // 查找对应书名的图书 p = p->next; } if (p == NULL) { // 没有找到对应书名的图书 printf("未找到该书!\n"); } else { // 找到了对应书名的图书 printf("书名:%s\n", p->bookName); printf("作者:%s\n", p->author); printf("书号:%d\n", p->bookID); printf("借阅状态:%s\n", p->borrowed == 0 ? "未借出" : "已借出"); } } void deleteBook() { int bookID; printf("请输入要删除的图书的书号:"); scanf("%d", &bookID); BookInfo *p = head; BookInfo *q = NULL; while (p != NULL && p->bookID != bookID) { // 查找对应书号的图书 q = p; p = p->next; } if (p == NULL) { // 没有找到对应书号的图书 printf("未找到该书!\n"); } else { // 找到了对应书号的图书,可以删除 if (q == NULL) { // 要删除的是头节点 head = p->next; } else { q->next = p->next; } free(p); printf("删除成功!\n"); } } ``` 最后,我们可以实现退出系统并保存书籍的功能: ```c void saveBooks() { FILE *fp = fopen("book.txt", "w"); // 打开文件,以写入方式打开 if (fp == NULL) { printf("文件打开失败!\n"); return; } BookInfo *p = head; while (p != NULL) { // 将链中的图书信息写入文件 fprintf(fp, "%s %s %d %d\n", p->bookName, p->author, p->bookID, p->borrowed); p = p->next; } fclose(fp); // 关闭文件 } void quitSystem() { saveBooks(); // 保存图书信息 BookInfo *p = head; while (p != NULL) { // 释放链中的内存 BookInfo *q = p; p = p->next; free(q); } printf("已退出系统!\n"); } ``` 至此,一个简单的图书管理系统就完成了。您可以根据您的实际需求进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

辛夷xin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值