收藏 分销(赏)

用MySQL创建数据库和数据库表.doc

上传人:丰**** 文档编号:10003698 上传时间:2025-04-16 格式:DOC 页数:22 大小:998.54KB
下载 相关 举报
用MySQL创建数据库和数据库表.doc_第1页
第1页 / 共22页
用MySQL创建数据库和数据库表.doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述
用MySQL创建数据库和数据库表正式版 用MySQL创建数据库和数据表: 步骤: 1、 使用show语句找出在服务器上当前存在什么数据库: mysql>show databases; 2、 创建一个数据库test: mysql>create database test; 3、 选择你所创建的数据库: mysql>use test; 4创建一个数据表: 首先查看刚才创建的数据库中存在什么表: mysql>show tables; (说明刚才创建的数据库中还没有数据库表) 接着我们创建一个关于students的数据表:包括学生的学号(id),姓名(name),性别(sex),年龄(age)。 mysql>create table students(id int unsigned not null auto_increment primary key,name char(8) not null,sex char(4) not null,age tinyint unsigned not null,); 解释:以 "id int unsigned not null auto_increment primary key" 行进行介绍: "id" 为列的名称; "int" 指定该列的类型为 int(取值范围为 -8388608到8388607), 在后面我们又用 "unsigned" 加以修饰, 表示该类型为无符号型, 此时该列的取值范围为 0到16777215; "not null" 说明该列的值不能为空, 必须要填, 如果不指定该属性, 默认可为空; "auto_increment" 需在整数列中使用, 其作用是在插入数据时若该列为 NULL, MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。 "primary key" 表示该列是表的主键, 本列的值必须唯一, MySQL将自动索引该列。 下面的 char(8) 表示存储的字符长度为8, tinyint的取值范围为 -127到128, default 属性指定当该列值为空时的默认值。 创建一个表后,用show tables显示数据库中有哪些表: mysql>show tables; 5、 显示表结构: mysql>describe students; 6、 在表中添加记录: 首先用select命令来查看表中的数据: mysql>select*from students; (说明刚才创建的数据库表中还没有任何记录) 接着加入一条新纪录: mysql>insert into students value(‘01’,’Tom’,’F’,’18’); 再用select命令来查看表中的数据的变化: mysql>select*from students; 7、 用文本方式将数据装入一个数据库表: 创建一个文本文件“student.sql”,每行包括一个记录,用TAB键把值分开,并且以在createtable语句中列出的次序,例如: 02TonyF18 03AmyM18 04LisaM18 将文本文件“student.sql”装载到students表中: mysql>load data local infile”e:\\student.sql”into table students; 再使用select命令来查看表中的数据的变化: mysql>select*from students; Mysql数据库主要系统表说明 1. 获取所有表结构(TABLES) SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA='数据库名'; TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。各字段说明如下: 字段 含义 Table_catalog 数据表登记目录 Table_schema 数据表所属的数据库名 Table_name 表名称 Table_type 表类型[system view|base table] Engine 使用的数据库引擎[MyISAM|CSV|InnoDB] Version 版本,默认值10 Row_format 行格式[Compact|Dynamic|Fixed] Table_rows 表里所存多少行数据 Avg_row_length 平均行长度 Data_length 数据长度 Max_data_length 最大数据长度 Index_length 索引长度 Data_free 自由数据? Auto_increment 做自增主键的自动增量当前值 Create_time 表的创建时间 Update_time 表的更新时间 Check_time 表的检查时间 Table_collation 表的字符校验编码集 Checksum 校验和 Create_options 创建选项 Table_comment 表的注释、备注 2. 获取表字段(COLUMNS) SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。各字段的说明信息如下: 字段 含义 Table_catalog 数据表登记目录 Table_schema 数据表所属的数据库名 Table_name 所属的表名称 Column_name 列名称 Ordinal_position 字段在表中第几列 Column_default 列的默认数据 Is_nullable 字段是否可以为空 Data_type 数据类型 Character_maximum_length 字符最大长度 Character_octet_length 字节长度? Numeric_precision 数据精度 Numeric_scale 数据规模 Character_set_name 字符集名称 Collation_name 字符集校验名称 Column_type 列类型 Column_key 关键列[NULL|MUL|PRI] Extra 额外描述[NULL|on update CURRENT_TIMESTAMP|auto_increment] Privileges 字段操作权限[select|select,insert,update,references] Column_comment 字段注释、描述 3. 获取表键值 SELECT * FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' KEY_COLUMN_USAGE表:存取表的健值。各字段的说明信息如下: 字段 含义 Constraint_catalog 约束登记目录 Constraint_schema 约束所属的数据库名 Constraint_name 约束的名称 Table_catalog 数据表等级目录 Table_schema 键值所属表所属的数据库名(一般与Constraint_schema值相同) Table_name 键值所属的表名 Column_name 键值所属的列名 Ordinal_position 键值所属的字段在表中第几列 Position_in_unique_constraint 键值所属的字段在唯一约束的位置(若为外键值为1) Referenced_talble_schema 外键依赖的数据库名(一般与Constraint_schema值相同) Referenced_talble_name 外键依赖的表名 Referenced_column_name 外键依赖的列名 4. 获取表Check约束 SELECT* FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' TABLE_CONSTRAINTS表:存储主键约束、外键约束、唯一约束、check约束。各字段的说明信息如下: 字段 含义 Constraint_catalog 约束登记目录 Constraint_schema 约束所属的数据库名 Constraint_name 约束的名称 Table_schema 约束依赖表所属的数据库名(一般与Constraint_schema值相同) Table_name 约束所属的表名 Constraint_type 约束类型[primary key|foreign key|unique|check] 5. 获取表索引 SELECT * FROM information_schema.STATISTICS WHERETABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' STATISTICS表:提供了关于表索引的信息。各字段的说明信息如下: 字段 含义 Table_catalog 数据表登记目录 Table_schema 索引所属表的数据库名 Table_name 索引所属的表名 Non_unique 字段不唯一的标识 Index_schema 索引所属的数据库名(一般与table_schema值相同) Index_name 索引名称 Seq_in_index Column_name 索引列的列名 Collation 校对,列值全显示为A Cardinality 基数(一般与该表的数据行数相同) Sub_part Packed 是否包装过,默认为NULL Nullable 是否为空[‘’|YES|NO] Index_type 索引的类型,列值全显示为BTREE(平衡树索引) Comment 索引注释、备注 6. mysql有关show的用法 SHOW DATABASES列出 MySQL Server上的数据库。 SHOW TABLES [FROM db_name]列出数据库中的表。 SHOW TABLE STATUS [FROM db_name]列出数据库的表信息,比较详细。 SHOW COLUMNS FROM tbl_name [FROM db_name]列出表的列信息,同 SHOW FIELDS FROM tbl_name [FROM db_name],DESCRIBE tbl_name [col_name]。 SHOW FULL COLUMNS FROM tbl_name [FROM db_name]列出表的列信息,比较详细,同 SHOW FULL FIELDS FROM tbl_name [FROM db_name]。 SHOW INDEX FROM tbl_name [FROM db_name]列出表的索引信息。 SHOW STATUS列出 Server 的状态信息。 SHOW VARIABLES列出 MySQL 系参数值 SHOW PROCESSLIST查看当前mysql查询进程 SHOW GRANTS FOR user列出用户的授权命令 1.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束: (1)“图书表”结构如下: 书号:统一字符编码定长类型,长度为6,主键; 书名:统一字符编码可变长类型,长度为30,非空; 第一 普通编码定长字符类型,长度为10,非空; 出版日期:小日期时间型; 价格:定点小数,小数部分1位,整数部分3位。 (2)“书店表”结构如下: 书店编号:统一字符编码定长类型,长度为6,主键; 店名:统一字符编码可变长类型,长度为30,非空; :普通编码定长字符类型,8位长,每一位的取值均是0~9的数字; 地址:普通编码可变长字符类型,40位长。 邮政编码:普通编码定长字符类型,6位长。 (3)“图书销售表”结构如下: 书号:统一字符编码定长类型,长度为6,非空; 书店编号:统一字符编码定长类型,长度为6,非空; 销售日期:小日期时间型,非空; 销售数量:小整型,大于等于1。 主键为(书号,书店编号,销售日期); 其中“书号”为引用“图书表”的“书号”的外键; “书店编号”为引用“书店表”的“书店编号”的外键。 答: CREATE TABLE 图书表 ( 书号 nchar(6) primary key, 书名 nvarchar(30) not null, 第一作者 char(10) not null, 出版日期 smalldatetime, 价格 numeric(4,1)) CREATE TABLE 书店表 ( 书店编号 nchar(6) primary key, 店名 nvarchar(30) not null, char(8) check ( like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), 地址 varchar(40), 邮政编码 char(6)) CREATE TABLE 图书销售表 ( 书号 nchar(6) not null, 书店编号 nchar(6) not null, 销售日期 smalldatetime not null, 销售数量 smallint check(销售数量>=1), primary key(书号,书店编号,销售日期), foreign key(书号) references 图书表(书号), foreign key(书店编号) references 书店表(书店编号)) 1.1为图书表添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。 答:ALTER TABLE 图书表 ADD 印刷数量 int check (印刷数量>=1000) 1.2删除“书店表”中的“邮政编码”列。 答:ALTER TABLE 书店表 DROP COLUMN 邮政编码 1.3将“图书销售表”中的“销售数量”列的数据类型改为整型。 答:ALTER TABLE 图书销售表 ALTER COLUMN 销售数量 int 2.设某商业集团数据库中有三个实体集: 商店:商店编号、商店名、地址 商品:商品编号、商品名、规格、单价 职工:职工编号、姓名、性别、业绩 每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品时有月销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。 (1)试画出E-R图,要求在图上注明属性及联系的类型; (2)将E-R图转换成关系模型,并注明主码; (3)根据实际情况,使用SQL创建表,包括各种约束; (4)用SQL语句查找大于平均业绩的职工姓名; (5)用SQL语句创建一个业绩大于100的所有男职工信息的视图。 (1)(5分) (2)这个E-R图可转换为4个关系模式:(8分) 商店(商店编号,商店名,地址) (2分) 职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪) (2分) 商品(商品编号,商品名,规格,单价) (2分) 销售(商店编号,商品编号,月销售量) (2分) (3)create shop(Sid char(3) primary key, Sname char(10), Sadd char(50)); (2分) create employee(Eid char(3) primary key, Ename char(5), Esex char(1), Each real, Sid char(3),Ere date, Esa int, foreign key (Sid) references (shop)); (2分) create commodity(Cid char(3) primary key, Cname char(10), Csp char(10), Cpr real); (2分) create vendition(Sid char(3), Cid char(3), Vse int, primary key (Sid,Cid),foreign key (Sid) references (shop), foreign key (Cid) references (commodity)); (2分) (4) (4)select Ename from employee x where Each>=(select avg(Each) from employee y where y.Each=x.Each); (5)create view Eman(Eid, Ename, Esex, Each, Sid, Ere, Esa) As select Eid, Ename, Esex, Each, Sid, Ere, Es from employee where Each>100 and Esex=’男’;(2分) 3. (共10分)设学校数据库中有两个实体集: 学生表:学号、姓名、班级 课程表:课程号、课程名称、教师 某学校有若干学生,每个学生可以选修多门课程,学校有若干课程供学生选修,每门课程可以供多个学生选修,要建立该学校学生选修课程的数据库,请设计: (1)试画出E-R图,要求在图上注明属性及联系的类型; (2)将E-R图转换成关系模型,并注明主码; (2)这个E-R图可转换为4个关系模式:(12分) 商店(商店编号,商店名,地址) (3分) 职工(职工编号,姓名,性别,业绩,商店编号,聘期,月薪) (3分) 商品(商品编号,商品名,规格,单价) (3分) 销售(商店编号,商品编号,月销售量) (3分) (1)(4分) (2)这个E-R图可转换为3个关系模式:(6分) 课程表(学号,姓名,班级) 选修(学号,课程号) 课程表(课程号,课程名称,教师) 4.一个图书借阅管理数据库要求提供下述服务: 1)可随时查询书库中现有书籍的品种,数量与存放位置。所有各类书籍均可由书号唯一标识。 2)可随时查询书籍借还情况。包括借书人单位、姓名、借书证号、借书日期和还书日期。约定任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。 3)当需要时,可通过数据库中保存的出版社的电报编号、 、 及地址等信息向有关书籍的出版社增购有关书籍。约定一个出版社可以出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。 根据以上情况,试构造满足需求的E-R图,并转换成等价的关系模型结构。 答案: 图略。 转换为等价的关系模型结构如下: 借书人(借书证号,姓名,单位) 图书(书号,书名,数量,位置,出版社名) 出版社(出版社名,电报, , ,地址) 借阅(借书证号,书号,借书日期,还书日期) 实验一 创建数据库和表 1、目的和要求 (1)了解SQL Server数据库的逻辑结构和物理结构。 (2)了解表的结构特点 (3)了解SQL Server的基本数据类型。 2、实验内容 (1)实验题目 ①创建一个新的数据库。创建用于企业管理的员工数据库,数据库名称为YGGL。 ② 在创建好的数据库YGGL中创建数据表。考虑到数据库YGGL中包含员工的信息、部分信息以及员工的薪水信息,所以数据库YGGL应该包含三个表:Employees(员工自然信息)表、Departments(部门信息)表和Salary(员工薪水情况)表。 3、实验步骤 (1)在对象资源管理器中创建数据库YGGL。 (2)删除数据库YGGL。 ①界面操作删除数据库 删除数据库YGGL时,右键单击数据库,弹出菜单点击“删除”,弹出“删除对象”窗口,确认删除。 ② T-SQL语句删除数据库 在代码空白处右击鼠标,弹出菜单选择“执行(X)”或者键盘“F5”运行代码,在下方会显示运行成功。 此时在左侧“对象资管理器”中右键点击“数据库”选择刷新数据库,会发现数据库“PX”已经删除。 注意:当执行过一遍代码时,也就是执行了T-SQL语句删除数据库后再次执行代码会出现这样的警告。原因是由于执行过一遍T-SQL语句,进行操作的数据库已经被删除,不存在。 (3)使用T-SQL语句创建数据库YGGL。 新建查询后,在窗口中输入上面代码,右键代码空白处执行。然后在“对象资源管理器”中查看。如果“数据库”列表中并未列出YGGL数据库,则单击右键“数据库”,选择“刷新”选项,“数据库”列表中就会出现创建的YGGL数据库。 (4)在对象资源管理器中创建表。 ① 创建表。Employees(员工自然信息)表、Departments(部门信息)表和Salary(员工薪水情况)表。 在对象资源管理器中选择创建的数据库“YGGL”,展开数据库YGGL,选择“表”,右键单击“表”在弹出的菜单中选择“新建表”。将表保存并命名为“Employees”。下面是相同方法创建的Employees(员工自然信息)表、Departments(部门信息)表和Salary(员工薪水情况)表。 Employees(员工自然信息)表 Departments(部门信息)表 Salary(员工薪水情况)表 ② 删除表。右击表弹出的快捷菜单中“删除”项,打开“删除对象”窗口。 在YGGL数据库中选择“表”,展开找到Employees(员工自然信息)表右键单击在弹出菜单内选择删除,在“对象删除”窗口中选择确定删除。 (5)使用T-SQL语句创建表。 ①利用T-SQL语句创建Employees(员工自然信息) 注:Employees红色下划线,由于已经运行了代码,数据库中已经存在Employees表,所以将鼠标放在上面才会出现下面这样的错误。 ② 利用T-SQL语句创建Departments(部门信息)表。 在代码空白处单击右键选择“执行”,会在下方“消息”对话框中看到执行成功。 在左侧对象资源管理器中YGGL数据库的子菜单表中右键选择刷新,就会显示创建的表。 ③ 利用T-SQL语句创建Salary(员工薪水情况)表。 同样执行后,在下方“消息”中会看到“命令已成功完成”,在左边对象资源管理器中YGGL数据库的表中单击右键选择刷新,会出现新建的Salary(员工薪水情况)表。 4、思考与练习 (1)在YGGL数据库存在的情况下,使用CREATE DATABASE语句新建数据库YGGL,查看错误信息。 当左侧资源管理器的数据库中已经存在数据库YGGL时,再次用CREATE DATABASE语句新建数据库YGGL时,在下方“消息”中会出现以下错误,是由于已经存在数据库YGGL。 (2)创建数据库YGGL1,使用界面方式或者ALTER DATABASE语句尝试修改YGGL1数据库逻辑文件的初始大小。 在左侧对象资源管理器中刷新数据库,在数据库YGGL1中右键单击查看属性,逻辑文件大小已经由初始值修改为20MB。 (3)在YGGL1中创建表Salary1(参照表Salary的结构),表Salary1比Salary多一列计算列,列名为“ActIncome”,由InCome-OutCome得到。 在下方“消息”中显示“命令执行完成”。 在数据库YGGL1的Salary1表单击右键“设计”中会发现比起Salary表已经多了ActInCome一项。 (4)在YGGL1数据库中创建Employees1(结构与Employees相同),分别使用命令行方式和界面方式将表Employees1中的Address列删除,并将Sex列的默认值修改为0。 利用命令行形式在数据库YGGL1中创建表Employees1. 利用界面操作的形式将数据库YGGL1中表Address列删除,并且将Sex的默认值修改为0。 在数据库YGGL1中打开表Employees1,在列中找到Sex这一项,单击右键修改,在列属性中将Sex的默认值或绑定由原来的1修改为0。 同样在表Employees1中找到Address找到,在Address属性上单击右键,选择删除 ,在弹出的删除对象窗口中选择确定,进行删除。 (5)什么是临时表?怎样创建临时表? 可以创建本地和全局临时表。本地临时表仅在当前会话中可见;全局临时表在所有会话中都可见。 本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。 方法一: create table #临时表名(字段1 约束条件, 字段2 约束条件, .....) create table ##临时表名(字段1 约束条件, 字段2 约束条件, .....) 方法二: select * into #临时表名 from 你的表; select * into ##临时表名 from 你的表; 注:以上的#代表局部临时表,##代表全局临时表 下面是我创建的临时表Salary1
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服