MY SQL 实验二:

实验2 创建实验用的数据库

一、实验目的

    通过实验掌握使用Mysql数据库管理系统中建立数据库和用SQL定义基本表、修改基本表和删除基本表的方法。

二、实验原理

  数据库定义:

   (一)创建数据库(模式)

        CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name

         数据库名 database_name

         MySQL不区分数据库及模式

   (二 )创建表及 MySQL 数据类型  

       一般分为数值型(Numeric), 字符串型(String)及 日期时间型(Date/Time) 三类

      1.数值型 分为整型及小数型

         1) 整型

    TINYINT: 8-bit,[-128, 127] , [0, 255]

    SMALLINT: 16-bit  [-32768, 32767] , [0, 65535]

    MEDIUMINT: 24-bit [-8388608, 8388607] , [0, 16777215]

    INT (or INTEGER): 32-bit [-2147483648, 2147483647]  [0, 4294967295]

    BIGINT: 64-bit  [-9223372036854775808, 9223372036854775807] [0, 18446744073709551615]

    BIT(n): A n-bit 列.

    BOOLEAN (or BOOL): 与 TINYINT(1)相同

      2) 小数型

   FLOAT: 32-bit

   DOUBLE (or DOUBLE PRECISION or REAL): 64-bit

   DECIMAL(n, d) 例如 DECIMAL(6, 2),-9999.99 to 9999.99.

   FLOAT(n, d) or DOUBLE(n, d):

    2、字符串-文本型

   

      CHAR(n): 固定长字符, 最大255个字符。

      VARCHAR(n): 变长字符串最大65535(utf8 characters range from 1-4 bytes).

      TINYTEXT:  255 Bytes

      TEXT:  64 KBytes

      MEDIUMTEXT:  16 MBytes

      LONGTEXT:  4 GBytes

   3、日期时间Date/Time

     DATETIME:  'YYYY-MM-DD HH:MM:SS' 年-月-日-时-分-秒

     DATE: 'YYYY-MM-DD'

     TIME:  'HH:MM:SS'

     YEAR(4|2):  'YYYY' or 'YY'.

     TIMESTAMP: 与 DATETIME 类似

  4.其他类型

     1) 枚举 -enu, MySQL在存储枚举时非常紧凑,会根据列表值的数量压缩到一个或者两个字节中。

         sex 字段只允许插入 male , female , unknow 中的其中之一

 枚举最大可以有 65535 个成员值。

 create table tt2(sex enum('男','女','未知')default '未知');

     2)二进制数据Binary Data and BLOB

      BINARY(n),VARBINARY(n),TINYBLOB: 255 bytes,BLOB:  64KBytes,MEDIUMBLOB: 16MBytes

      LONGBOLB:  4GBytes

    3) 空间数据类型 Spatial Data Types(点,线,几何图)及 enum, Set 等

   

   (三)修改表的结构

     ALTER TABLE <表名>

         [ ADD <新列名> <数据类型> [ 完整性约束 ] ]

         [ DROP <完整性约束名> ]

     [ ALTER COLUMN<列名> <数据类型> ];

 例如

   #表test_tab增加列test

     alter table test_tab add(test char(10));

   #表test_tab修改列test

     alter table test_tab modify test char(20) not null;

   #表test_tab修改列test默认值

       alter table test_tab alter test set default 'system';

    #表test_tab去掉test默认值

   alter table test_tab alter test drop default;

     #表test_tab去掉列test

   alter table test_tab drop column test;

  

  三、实验条件

     windows7 操作系统, mysql5.6 数据库服务器。

 四、实验内容和方法

   实验数据库,老师提供数据库脚本TradeDBSQL.txt

   (一) 建立实验数据库

         1. 启动MYSQL服务器

              在命令窗口(cmd),输入mysqld --console 命令

         2. 登录MYSQL系统

           在另外一个命令窗口(cmd)输入mysql -u root -p 回车

          密码为空 进入系统

        3.在E盘创建自己的工作目录,例如db2021,将老师提供的数据库脚本文件TradeDBSQL.txt放在此目录下

运行数据库脚本

mysql> source e:\db2021\TradeDBSQL.txt

  将自动创建Trade数据库,创建产品、订单等8张表,并且插入数据。

   系统将花一点时间自动建立数据库。

       4.了解实验用数据库

           show databases; - 列出所有数据库,有没有trade 数据库?

           use trade; 进入trade 数

   status; 将显示数据库的关键信息,版本号,登录用户,端口号,特别是服务器、客户端的字符集

           show tables; 显示trade 有多少张表

           desc Products;  显示Products 表的结构,用此方法显示所有的表,并且打开TradeDBSQL.txt 文件,与每张表的定义进行比较。

   

      打开数据库结构图,表名及字段用中文名的利弊。

          1) Products -产品表

    ProductID -产品ID, ProductName -产品名称,  SupplierID -供应商ID, CategoryID -类别ID,QuantityPerUnit -单位数量

    UnitPrice -单价,UnitsInStock -库存量, UnitsOnOrder -订购量, ReorderLevel -再订购量,Discontinued -中止

         2) Orders -订单

   OrderID -订单ID,CustomerID -客户ID, EmployeeID -雇员ID, OrderDate -订购日期, RequiredDate -到货日期,ShippedDate -发货日期,

  ShipVia -运货商, Freight -运货费, ShipName -货主名称, ShipAddress -货主地址, ShipCity -货主城市, ShipRegion -货主地区,

  ShipPostalCode -货主邮政编码, ShipCountry -货主国家

         3) OrderDetails -订单明细

    OrderID -订单ID,  ProductID -产品ID, UnitPrice -单价, Quantity -数量, Discount -折扣

        4) Suppliers - 供应商表

    SupplierID -供应商ID, CompanyName -公司名称, ContactName -联系人姓名,ContactTitle -联系人职务, Address -地址, City -城市, Region -地区, PostalCode -邮政编码, Country -国家, Phone -电话, Fax -传真, HomePage -主页

       5) Employees -雇员表  

   EmployeeID 雇员ID,  LastName -姓氏,  FirstName -名字, Title -职务, TitleOfCourtesy -尊称, BirthDate -出生日期, HireDate雇用日期,

  Address -地址, City -城市, Region -地区, PostalCode -邮政编码, Country -国家, HomePhone -家庭电话, Extension -分机, Notes -备注, ReportsTo -上级

       6) Customers -客户表

    CustomerID -客户ID, CompanyName -公司名称, ContactName -联系人姓名, ContactTitle -联系人职务, Address -地址, City-城市,

    Region -地区, PostalCode -邮政编码, Country -国家, Phone -电话, Fax -传真

      7) Categories -类别表

    CategoryID -类别ID, CategoryName -类别名称, Description -说明

    8) Shippers -运货商表

    ShipperID -运货商ID,CompanyName -公司名称,Phone -电话

     4 优化数据类型

      MYSQL 的 procedure analyse() 用于分析优化的数据类型定义。

               select * from Products procedure analyse() \G;

       select * from Products procedure analyse(5,256)\G;  (对于所有表进行比较)

     说明: procedure analyse(5,256)不要建议含有多于5个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长;

           比较优化结果与原设计的异同    

    (二)创建 school 数据库

       1. 创建数据库

           CREATE database school DEFAULT CHARACTER SET gbk ;

       

      2. 创建表-表定义

  根据下列表的信息,参照实验数据库的脚本,定义下列三张表

  

    Student表

Sno       Sname         Ssex         Sage          Sdept

95001     李勇          男           20             CS

95002     刘晨          女           19             IS

95003     王敏          女           18             MA

95004     张立          男           19             IS

Course表

Cno     Cname          Cpno       Credit

1      数据库           5           4

2      数学                         2

3      信息系统         1           4

4      操作系统         6           3

5      数据结构         7           4

6      数据处理                     2

7     PASCAL语言        6           4

SC表

Sno        Cno          Grade

95001      1             92

95001      2             85

95001      3             88

95002      2             90

95002      3             80

   3 修改基本表 alter table

    1) 添加新列

     在SC表中添加2个新列,名为T1和T2数据类型均为整型。参考ALTER TABLE 语法

      增加新列方法

     参考: ALTER TABLE 表名 ADD 列名 数据类型;

       用desc sc 查看结果

     2) 修改列名及数据类型

          1) 改变某列的数据类型

  修改SC表中T1的数据类型为 TINYINT

  参考: ALTER TABLE 表名 MODIFY 列名 新数据类型      

          2) 改变某列的列名及数据类型

  将T2名改为T22类型改为varchar(20)

  参考: ALTER TABLE 表名 CHANGE 老列名 新列名  新数据类型

       用desc sc 查看结果

    3) 删除列

       删除SC 表的T22列

      参考:   ALTER TABLE 表名 DROP COLUMN 列名;      

  

    4) 修改表名    

       重命名 将SC表名名改为SC1

       参考: ALTER TABLE 表名 RENAME 新表名;

  4 添加记录

insert into  student values ('95001','李勇','男',20,'CS');

insert into student values ('95002', '刘晨','女',19,'IS');

insert into  student values('95003', '王敏', '女',18, 'MA');

insert into student values('95004', '张立', '男',19, 'IS');

insert into Course values('1','数据库', '5',4);

insert into Course values('2', '数学', '' ,2);

insert into Course values('3', '信息系统', '1', 4);

insert into Course values('4', '操作系统', '6', 3);

insert into Course values('5', ' 数据结构', '7', 4);

insert into Course values('6', '数据处理',  '',  2);

insert into Course values('7',  'PASCAL语言', '6', 4);

insert into SC1 values('95001', '1', 92);

insert into SC1 values('95001', '2', 85);

insert into SC1 values('95001', '3', 88);

insert into SC1 values('95002', '2', 90);

insert into SC1 values('95002', '3', 80);

   分别用select * from student, select * from course 和select * from sc,检验三张表是否存在正确的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java爬虫代理ip(java爬虫代码示例)

java爬虫代理ip 在编写java爬虫时&#xff0c;经常会遇到需要使用代理IP来访问目标网站的情况。这时候&#xff0c;我们就需要编写代码来实现代理IP的功能。接下来&#xff0c;我们将为大家介绍如何在java爬虫中使用代理IP&#xff0c;以及给出相应的代码示例。 首先&#xff…

腾讯游戏海外扩张,增持芬兰游戏开发商股份持股比例增至14.8%

易采游戏网5月8日消息&#xff0c;近日腾讯再次出手&#xff0c;大幅增持了芬兰知名游戏开发商Remedy Entertainment的股份&#xff0c;持股比例猛增至14.8%。这一举动引起了业界和投资者的广泛关注。 据了解&#xff0c;腾讯此次增持是在2024年4月24日完成的。根据芬兰法律规…

TCP通信并发:

上次的程序只能保持&#xff0c;单线程或者进程 多进程并发服务器 进程的特点&#xff08;有血缘关系&#xff09; 创建子进程&#xff1a;fork&#xff08;&#xff09;&#xff1b; 虚拟地址空间被复制 &#xff0c;从一份变成两份&#xff08;用户区和内核区&#xff09…

JVM垃圾回收详解

一、基本概念 1、HotSpot VM &#xff1a;是由 Oracle 公司开发的一种 Java 虚拟机&#xff08;JVM&#xff09;&#xff0c;是 Java SE 平台上最广泛使用的虚拟机之一。它是 OpenJDK 的一部分&#xff0c;也是 Oracle JDK 的基础之一。使用即时编译&#xff08;Just-In-Time …

为什么使用bean注解创建IRule,就可以定义负载均衡规则

Bean public IRule randomRule() { return new RandomRule(); } 当您在Spring Cloud中定义一个IRule的Bean时&#xff0c;您实际上是在配置Ribbon的负载均衡规则。这个Bean会被注入到Ribbon客户端中&#xff0c;并在客户端发起服务调用时用于决定如何选择目标服务实例。 这里需…

ELK原理详解

ELK原理详解 一、引言 在当今日益增长的数据量和复杂的系统环境中&#xff0c;日志数据的收集、存储、分析和可视化成为了企业运营和决策不可或缺的一部分。ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;堆栈凭借其高效的性能、灵活的扩展性和强大的功能&…

使用ROW_NUMBER()分组遇到的坑

1、再一次清洗数据时&#xff0c;需要过滤重复数据&#xff0c;使用了ROW_NUMBER() 来分组给每组数据排序号 在获取每组的第一行数据 with records as(select cc.F_Id as Id,REPLACE(cc.F_CNKITitle,char(10),1) as F_CNKITitle,REPLACE(REPLACE(cc.F_Special,专题&#xff1…

Kubernetes——基础认识

目录 前言 什么是云原生 云元素 K8s与中间件以及微服务之间的关系 Kubernetes发展历史 一、简介 1.Kubernetes是什么 2.为什么要使用Kubernetes 3.Kubernetes特性 3.1自我修复 3.2弹性伸缩 3.3自动部署和回滚 3.4服务发现和负载均衡 3.5集中化配置管理和密钥管理…

车载测试系列:车载测试流程

车载测试流程是保证软件质量的重要支撑&#xff0c;优秀的团队都必须拥有规范的流程体系支撑&#xff0c;它能够约束测试人员的测试行为&#xff0c;约束测试环境的测试精度&#xff0c;提升测试的覆盖度&#xff0c;保证团队成员工作的协调性。 该测试流程建立的依据&#xf…

书生浦语训练营第2期-第7节笔记

一、为什么要研究大模型的评测&#xff1f; 首先&#xff0c;研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多个通用任务上已经达到或超越了人类水平&#xff0c;但仍然存在质疑&#xff0c;即这些模型的能力是否只是对训练数据的…

二分查找向下取整导致的死循环69. x 的平方根

二分查找向下取整导致的死循环 考虑伪题目&#xff1a;从数组arr中查找出目标元素target对应的下标&#xff0c;如果数组中不存在目标元素&#xff0c;找 到第一个元素值小于target的元素的下标。 编写二分查找算法如下&#xff1a; Testvoid testBinarySearch(){int[] arr n…

java如何打印数组所有元素

java如何打印数组所有元素 用for循环的话 语法格式是 for(int i0;i<数组名.length;i) { System.out.prontln(数组名[i]); } 如果用while循环 先定义一个变量&#xff0c;变量的值等于0 假定变量名为j int j0; while(j<数组名.length) { System.out.println(数组…

Web 功能以及源码讲解

Web 功能以及语言讲解 培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;624032112 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 移动应用开发群&#xff1a;548238632 短视频制作群&#xff1a; 744125867极…

leetcode203-Remove Linked List Elements

题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#xff1a; 输入&…

Eigen中的刚体变换表达

在Eigen中&#xff0c;旋转矩阵、变换矩阵、欧拉角都可以表示为Eigen库中的特定类型的矩阵。 1、旋转矩阵 旋转矩阵通常用于表示三维空间中的旋转操作。在Eigen中&#xff0c;可以使用Eigen::Matrix3d类型来表示三维的旋转矩阵。通常&#xff0c;旋转矩阵是一个正交矩阵&…

网络新手如何上手水牛社软件?我的建议与看法

水牛社是一款专为电脑用户设计的软件&#xff0c;拥有明确的著作权&#xff0c;其核心功能在于发布和整合各类网络活动任务资源、教程等&#xff0c;内容多元且不设固定分类。其靠谱程度取决于你对软件的了解程度和个人需求的适配性。 软件内部包含五个主要栏目&#xff0c;大…

轮廓提取、矩形标记时,点的位置需要重标

在下图中的0&#xff0c;3&#xff0c;1&#xff0c;2位置如何变换成0&#xff0c;1&#xff0c;2&#xff0c;3 先显示结果&#xff1a; 变换之后图&#xff1a; 这边提供两种解决方案&#xff1a; 第一种&#xff1a;将坐标值相加求和&#xff0c;采用冒泡排序实现从小到大…

使用固定公网地址远程访问开源服务器运维管理面板1Panel管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

顺序表的实现(迈入数据结构的大门)(完整代码)

seqlist.h #pragma once typedef int SLDataType;#include<stdio.h> #include<stdlib.h> #include<assert.h>typedef struct SeqList {SLDataType* a;int size; // 有效数据个数int capacity; // 空间容量 }SL;//初始化和销毁 void SLInit(SL* ps); void SL…

ReentrantLock的原理

总结&#xff1a; ReentrantLock 的基本实现可以概括为&#xff1a;先通过 CAS 尝试获取锁。如果此时已经有线程占据了锁&#xff0c;那就加入 AQS 队列并且被挂起。当锁被释放之后&#xff0c;排在 CLH 队列队首的线程会被唤醒&#xff0c;然后 CAS 再次尝试获取锁。在这个时候…