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)相同

  1. 小数型

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,检验三张表是否存在正确的数据。

相关推荐
帅的被人砍xxx5 分钟前
mariadb 升级 (通过yum)
数据库·mariadb
通义灵码9 分钟前
MySQL 开发的智能助手:通义灵码在 IntelliJ IDEA 中的应用
数据库·mysql·阿里云·intellij-idea·通义灵码
mxs05231 小时前
抢购Python代码示例与技术解析
开发语言·数据库·python
Hadoop_Liang1 小时前
openEuler24.03 LTS下安装MySQL8.0.42
数据库·mysql·openeuler
LB21121 小时前
黑马 javaweb Day07 MySQL --DQL(查询)语句
android·数据库·mysql
掘根1 小时前
【MySQL】使用文件进行交互
数据库·mysql
昭阳~2 小时前
MySQL故障排查与生产环境优化
数据库·mysql·oracle
猴子请来的逗比4892 小时前
mysql的安装方式
linux·数据库·学习·mysql
酷爱码3 小时前
python如何遍历postgresql所有的用户表
python·postgresql·oracle
白初&3 小时前
CVE-2015-3934 Fiyo CMS SQL注入
数据库·sql