[MySQL]数据库原理3——喵喵期末不挂科

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

目录

前言

创建与管理数据库

创建库

查看与打开数据库

修改数据库

删除数据库

创建与管理表

创建表

查看表

复制表

总结


前言

本任务将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。在任务实施过程中,要特别注意表的规范化,要注意数据类型的正确选择,还要注意数据库和数据表字符集的统一问题。S学校要建立一个教学管理系统。根据需求分析,要求创建学生、课程、教师和系部等数据表来存储数据。接下来,要建立数据库,设计数据表的结构,并初始化相关表数据。


创建与管理数据库

创建库

使用 CREATE DATABASE CREATE SCHEMA 命令可以创建数据库,其语法结构如下。

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

    [DEFAULT] CHARACTER SET charset_name

    | [DEFAULT] COLLATE collation_name

注:SCHEMA 概要,计划,图表。数据库中的Schema,为数据库对象的集合,一个用户一般对应一个schema

创建数据库。 

    mysqlCREATE  DATABASE  [IF NOT EXISTS]  JXGL;

  创建数据库 CPXS 库,并指定字符集为 utf8

  mysqlCREATE DATABASE CPXS

    DEFAULT CHARACTER SET utf8  

    COLLATE utf8_general_ci

DEFAULT CHARACTER SET :指定数据库的默认字符集( Charset ), charset_name 为字符集名称。
COLLATE :指定字符集的校对规则, collation_name 为校对规则名称。
创建数据库时 最好指定字符集 。如果指定了,在其内部创建的表、表中的字段都将继承使用这个字符集。若没有指定,则会继承使用服务器级的字符集。
IF NOT EXISTS :如果指定了已有的数据库名,会出现错误信息。 IF NOT EXISTS 可防止同名,且不报错。

查看与打开数据库

查看本服务器中的所有数据库

   mysql> SHOW DATABASES;

打开或选定数据库

  创建了数据库并不表示选定并使用它,必须明确地操作。为了使JXGL成为当前的数据库,使用如下命令。

  mysql> USE  JXGL;

查看当前正在使用的数据库名称。

   mysql> select database();


修改数据库

数据库创建后,如果需要修改数据库的参数,可以使用 ALTER  DATABASE 命令。语法类似创建:

  ALTER {DATABASE | SCHEMA} [db_name]

    [DEFAULT] CHARACTER SET charset_name

    | [DEFAULT] COLLATE collation_name

JXGL 库修改字符集为 utf8 ,校对原则为 utf8_general_ci

 mysql>ALTER  DATABASE  JXGL  DEFAULT

  CHARACTER SET utf8 

  COLLATE utf8_general_ci


删除数据库

已经创建的数据库,如果需要删除,可使用 DROP DATABASE 命令。语法格式:

   

DROP DATABASE  [IF EXISTS] db_name

删除 YGGL 库。

  mysql> DROP  DATABASE  YGGL;

注: 删除了数据库,数据库里的所有表也同时被删除。因此,最好先对数据库做好备份,然后再执行删除操作。


创建与管理表

数据库创建之后,数据库是空的,是没有表的,可以打开数据库查看。

   mysql> USE  JXGL;

   mysql> SHOW TABLES;

表决定了数据库的结构, 表是存放数据的地方,一个库需要什么表,各数据库表中有什么样的列,是要合理设计的。

创建表

创建表的语法如下:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name

    [ ( [column_definition] , ... | [index_definition] ) ]

    [table_option] [select_statement];

其中: column_definition

col_name  type  [NOT NULL | NULL] [DEFAULT default_value]  [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]  [COMMENT 'string'] [reference_definition]

学生管理系统( JXGL ),在这个库中要设计 6 张表。
students( 学生信息表 )
course (课程表)
score (成绩表)
departments (院系单位表)
teachers (教师表)
teach (讲授表)
student
course
score
department
teacher
teach
//创建表teachers 	  
mysql>  CREATE TABLE IF NOT EXISTS teachers 
	(     
	T_NO char(8) NOT NULL COMMENT '教师编号',
	 T_NAME char(8) NOT NULL COMMENT'教师姓名',
	 D_NO char(8) NOT NULL COMMENT '院系编号',
	PRIMARY KEY (T_NO)
	)
	ENGINE=InnoDB DEFAULT CHARSET=utf8;
//创建表departments。 
 mysql>  CREATE TABLE IF NOT EXISTS departments 
		(  
		D_NO char(8) NOT NULL COMMENT '院系编号',
		D_NAME char(8) NOT NULL COMMENT '院系名称',
		 PRIMARY KEY (D_NO)
		  )
	         ENGINE=InnoDB DEFAULT CHARSET=utf8;
//创建表STUDENTS。	  
mysql>  CREATE TABLE IF NOT EXISTS STUDENTS 
			 (
			 s_no char(4) NOT NULL COMMEN'学号',
			 s_name char(4) NOT NULL COMMENT'姓名',
 			sex ENUM('男', '女') DEFAULT '男' COMMENT '性别',
			 birthday date NOT NULL COMMENT'出生日期',
		 	d_no varchar (4) NOT NULL COMMENT'所在系部',
			address varchar(20) NOT NULL COMMENT'家庭地址',
		  	phone varchar(12) NOT NULL COMMENT'联系电话',
		  	photo blob COMMENT'照片',
		  	PRIMARY KEY (s_no)
			)
		ENGINE=InnoDB DEFAULT CHARSET=utf8;
关于设置主键。 PRIMARY KEY 表示设置该字段为主键。如在 STUDENTS 表中, PRIMARY KEY ( s_no ) 表示将 s_no 字段定义为主键。 在 score 表中, PRIMARY KEY ( s_no,c_no ) 表示把 s_no c_no 两个字段一起作为复合主键。
添加注释。 COMMENT' 学号 ' 表示对“ s_no ”字段增加注释为“学号”。
字段类型的选择。 SEX  ENUM(' ' ' ') 表示 sex 字段的字段类型是 ENUM ,取值范围为 ' ' ' '
默认值的设置。DEFAULT‘男’表示默认值为“男”。
设置精度。Score表中的report float(5,1)表示精度为6 ,小数位1位。
“ENGINE=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。
DEFAULT CHARSET=utf8表示表的字符集是utf8。
如果没有指定是NULL或是NOT NULL,则列在创建时假定为NULL。
设置自动增量。一个整数列可以拥有一个附加属性AUTO_INCREMENT。AUTO_INCREMENT序列从一般1开始,也可以自定义(通过修改表语句实现)开始值。一般只用于主键字段。
在CPXS库中,创建进货单表,进货ID是自动增量,将进货单价列的精度设置为8  ,小数位设置为2位,进货时间默认为当前时间。

查看表

创建了数据表后,现在再用 SHOW TABLES 查询已创建的表的情况。
mysql> SHOW TABLES;

修改表

ALTER TABLE 用于更改原有表的结构。
可以增加或删减列、重新命名列或表,还可以修改默认字符集。
语法格式:
    ALTER [IGNORE] TABLE tbl_name  //主句,指定要修改在表名

    alter_specification [, alter_specification] ...   //子句,指定要作的修改操作
其中:
 IGNORE
MySQL ANSI SQL92 的一个扩充,如果在表中的唯一键上有重复,它控制 ALTER TABLE 如何工作。
如果 IGNORE 没被指定,副本被放弃并且恢复原状。
如果 IGNORE 被指定,那么对唯一键有重复的行,只有使用第一行;其余被删除。
alter_specification:
 ADD [COLUMN] column_definition [FIRST | AFTER col_name ] //添加字段
 | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改字段默认值
 | CHANGE [COLUMN] old_col_name column_definition    [FIRST|AFTER col_name]         //重命名字段		
 | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]  //修改字段数据类型
 | DROP [COLUMN] col_name		//删除列
 | RENAME [TO] new_tbl_name		//对表重命名
 | ORDER BY col_name    //按字段排序
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] //将字符集转换为二进制
 | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]  
			//修改表的默认字符集
STUDENTS 表的 department 列后面增加一列 speciality

 mysql> ALTER TABLE STUDENTS

    ADD speciality VARCHAR5 ) NOT NULL AFTER department;

STUDENTS 表的 birthday 列后增加一列“入学日期 ,并定义其默认值为 '2014-9-1'

mysql>ALTER TABLE STUDENTS 

    ADD 入学日期 date NOT NULL DEFAULT

'2014-9-1'  AFTER birthday;

修改表 STUDENTS sex 列的默认值为女。

 mysql> ALTER TABLE STUDENTS CHANGE 性别  性别 char2 NOT NULL DEFAULT '';

删除 STUDENTS 表的入学日期列的默认值。

mysql>ALTER TABLE STUDENTS ALTER  入学日期 DROP DEFAULT;

将表 STUDENTS 重名为学生表。
mysql > ALTER TABLE STUDENTS rename to 学生表 ;
修改 course 表的字符集为 utf8
ALTER TABLE course DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

复制表

可以通过 CREATE TABLE  命令复制表的结构和数据。
语法格式:

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

    [LIKE old_tbl_name | (LIKE old_tbl_name )]  //复制表结构

    | [AS (select_statement)]  ;       //复制表结构和数据

创建一个表 STUDENTS 的附表 STUDENTS1

mysql> CREATE  TABLE  STUDENTS1  LIKE STUDENTS;

用命令查看 STUDENTS1 的结构。

mysql> DESC STUDENTS1;

复制表 Students 的结构和数据,名为 students_copy

mysql> CREATE  TABLE  STUDENTS_COPY  AS  SELECT  *  FROM  STUDENTS


总结

本任务将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。
在任务实施过程中,要特别注意 表的规范化 ,要注意 数据类型 的正确选择,还要注意 数据库和数据表字符集 的统一问题。

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猫佛佛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值