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

打印 上一主题 下一主题

主题 515|帖子 515|积分 1545


   希望你开心,希望你健康,希望你幸福,希望你点赞!
  最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!
  喵喵喵,你对我真的很重要!
  
目录
媒介
创建与管理数据库
创建库
检察与打开数据库
修改数据库
删除数据库
创建与管理表
创建表
检察表
复制表
总结

媒介

   本使命将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。在使命实施过程中,要特别注意表的规范化,要注意数据范例的精确选择,还要注意数据库和数据表字符集的同一题目。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      
   
  1. //创建表teachers           
  2. mysql>  CREATE TABLE IF NOT EXISTS teachers
  3.         (     
  4.         T_NO char(8) NOT NULL COMMENT '教师编号',
  5.          T_NAME char(8) NOT NULL COMMENT'教师姓名',
  6.          D_NO char(8) NOT NULL COMMENT '院系编号',
  7.         PRIMARY KEY (T_NO)
  8.         )
  9.         ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码
  1. //创建表departments。
  2. mysql>  CREATE TABLE IF NOT EXISTS departments
  3.                 (  
  4.                 D_NO char(8) NOT NULL COMMENT '院系编号',
  5.                 D_NAME char(8) NOT NULL COMMENT '院系名称',
  6.                  PRIMARY KEY (D_NO)
  7.                   )
  8.                  ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码
  1. //创建表STUDENTS。          
  2. mysql>  CREATE TABLE IF NOT EXISTS STUDENTS
  3.                          (
  4.                          s_no char(4) NOT NULL COMMEN'学号',
  5.                          s_name char(4) NOT NULL COMMENT'姓名',
  6.                         sex ENUM('男', '女') DEFAULT '男' COMMENT '性别',
  7.                          birthday date NOT NULL COMMENT'出生日期',
  8.                          d_no varchar (4) NOT NULL COMMENT'所在系部',
  9.                         address varchar(20) NOT NULL COMMENT'家庭地址',
  10.                           phone varchar(12) NOT NULL COMMENT'联系电话',
  11.                           photo blob COMMENT'照片',
  12.                           PRIMARY KEY (s_no)
  13.                         )
  14.                 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   查询已创建的表的环境。   
  1. mysql> SHOW TABLES;
复制代码

修改表
      ALTER TABLE   用于更改原有表的结构。         可以增加或删减列、重新命名列或表,还可以修改默认字符集。   
  1. 语法格式:
  2.     ALTER [IGNORE] TABLE tbl_name  //主句,指定要修改在表名
  3.     alter_specification [, alter_specification] ...   //子句,指定要作的修改操作
复制代码
     其中:        IGNORE             MySQL      ANSI SQL92    的一个扩充,如果在表中的唯一键上有重复,它控制   ALTER TABLE   怎样工作。         如果   IGNORE   没被指定,副本被放弃而且恢复原状。         如果   IGNORE   被指定,那么对唯一键有重复的行,只有利用第一行;其余被删除。   
  1. alter_specification:
  2. ADD [COLUMN] column_definition [FIRST | AFTER col_name ] //添加字段
  3. | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改字段默认值
  4. | CHANGE [COLUMN] old_col_name column_definition    [FIRST|AFTER col_name]         //重命名字段               
  5. | MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]  //修改字段数据类型
  6. | DROP [COLUMN] col_name                //删除列
  7. | RENAME [TO] new_tbl_name                //对表重命名
  8. | ORDER BY col_name    //按字段排序
  9. | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] //将字符集转换为二进制
  10. | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]  
  11.                         //修改表的默认字符集
复制代码
        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

  
总结

      本使命将学习创建和管理数据库、创建和管理表以及表数据操作的基本方法和技巧。         在使命实施过程中,要特别注意   表的规范化   ,要注意   数据范例   的精确选择,还要注意   数据库和数据表字符集   的同一题目。   
   希望你开心,希望你健康,希望你幸福,希望你点赞!
  最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!
  喵喵喵,你对我真的很重要!
  


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表