首页 > 数据库技术 > 详细

mysql_study_1

时间:2019-04-25 14:57:06      阅读:119      评论:0      收藏:0      [点我收藏+]

创建数据库 创建表             

技术分享图片

数据类型

技术分享图片

 

插入数据的几种方法

技术分享图片

约束

技术分享图片

代码

CREATE DATABASE mysql_shiyan;

use mysql_shiyan;

CREATE TABLE department
(
  dpt_name   CHAR(20) NOT NULL,
  people_num INT(10) DEFAULT 10,
  CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
 );

CREATE TABLE employee
(
  id      INT(10) PRIMARY KEY,
  name    CHAR(20),
  age     INT(10),
  salary  INT(10) NOT NULL,
  phone   INT(12) NOT NULL,
  in_dpt  CHAR(20) NOT NULL,
  UNIQUE  (phone),
  CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
 );
 
CREATE TABLE project
(
  proj_num   INT(10) NOT NULL,
  proj_name  CHAR(20) NOT NULL,
  start_date DATE NOT NULL,
  end_date   DATE DEFAULT 2015-04-01,
  of_dpt     CHAR(20) REFERENCES department(dpt_name),
  CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
 );

 

主键

主键 (PRIMARY KEY)是用于约束表中的一行,作为这一行的唯一标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要,主键不能有重复记录且不能为空。

在 MySQL-03-01.sql 中,这里有主键:

技术分享图片

也可以这样定义主键:

技术分享图片

还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识,比如:

技术分享图片

 

默认值

默认值约束 (DEFAULT) 规定,当有 DEFAULT 约束的列,插入数据为空时,将使用默认值。

默认值常用于一些可有可无的字段,比如用户的个性签名,如果用户没有设置,系统给他应该设定一个默认的文本,比如空文本或 ‘这个人太懒了,没有留下任何信息’

在 MySQL-03-01.sql 中,这段代码包含了 DEFAULT 约束:

技术分享图片

DEFAULT 约束只会在使用 INSERT 语句(上一实验介绍过)时体现出来, INSERT 语句中,如果被 DEFAULT 约束的位置没有值,那么这个位置将会被 DEFAULT 的值填充,如语句:

# 正常插入数据
INSERT INTO department(dpt_name,people_num) VALUES(dpt1,11);

#插入新的数据,people_num 为空,使用默认值
INSERT INTO department(dpt_name) VALUES(dpt2);  

 

输入命令 SELECT * FROM department;,可见表中第二行的people_num 被 DEFAULT 的值 (10) 填充:

技术分享图片

约束:

唯一约束 (UNIQUE) 比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

在 MySQL-03-01.sql 中,也有 UNIQUE 约束:

技术分享图片

当 INSERT 语句新插入的数据和已有数据重复的时候,如果有 UNIQUE 约束,则 INSERT 失败,比如:

INSERT INTO employee VALUES(01,‘Tom‘,25,3000,110110,‘dpt1‘);
INSERT INTO employee VALUES(02,‘Jack‘,30,3500,110110,‘dpt2‘); 

结果如图:

技术分享图片

外键:

外键 (FOREIGN KEY) 既能确保数据完整性,也能表现表之间的关系。

比如,现在有用户表和文章表,给文章表中添加一个指向用户 id 的外键,表示这篇文章所属的用户 id,外键将确保这个外键指向的记录是存在的,如果你尝试删除一个用户,而这个用户还有文章存在于数据库中,那么操作将无法完成并报错。因为你删除了该用户过后,他发布的文章都没有所属用户了,而这样的情况是不被允许的。同理,你在创建一篇文章的时候也不能为它指定一个不存在的用户 id。

一个表可以有多个外键,每个外键必须 REFERENCES (参考) 另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

技术分享图片

在 INSERT 时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列 (department 表的 dpt_name) 中没有 dpt3,则 INSERT 失败:

INSERT INTO employee VALUES(02,‘Jack‘,30,3500,114114,‘dpt3‘);

可见之后将 dpt3 改为 dpt2(department 表中有 dpt2),则插入成功:

技术分享图片

非空约束

非空约束 (NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

技术分享图片

 

搭建一个简易的成绩管理系统的数据库

介绍

现需要构建一个简易的成绩管理系统的数据库,来记录几门课程的学生成绩。数据库中有三张表分别用于记录学生信息、课程信息和成绩信息。

数据表结构如下:

学生表(student):学生 id 、学生姓名和性别

技术分享图片

课程表:课程 id 和课程名

技术分享图片

成绩表:成绩 id 、学生 id 、课程 id 和分数

技术分享图片

服务器中的 MySQL 还没有启动,请注意 MySQL 的 root 账户默认密码为空。

$ sudo service mysql start

$ mysql -u root

mysql> CREATE DATABASE gradesystem;

mysql> use gradesystem

mysql> CREATE TABLE student(
    -> sid int NOT NULL AUTO_INCREMENT,
    -> sname varchar(20) NOT NULL,
    -> gender varchar(10) NOT NULL,
    -> PRIMARY KEY(sid)
    -> );

mysql> CREATE TABLE course(
    -> cid int NOT NULL AUTO_INCREMENT,
    -> cname varchar(20) NOT NULL,
    -> PRIMARY KEY(cid)
    -> );

mysql> CREATE TABLE mark(
    -> mid int NOT NULL AUTO_INCREMENT,
    -> sid int NOT NULL,
    -> cid int NOT NULL,
    -> score int NOT NULL,
    -> PRIMARY KEY(mid),
    -> FOREIGN KEY(sid) REFERENCES student(sid),
    -> FOREIGN KEY(cid) REFERENCES course(cid)
    -> );

mysql> INSERT INTO student VALUES(1,Tom,male),(2,Jack,male),(3,Rose,female);

mysql> INSERT INTO course VALUES(1,math),(2,physics),(3,chemistry);

mysql> INSERT INTO mark VALUES(1,1,1,80),(2,2,1,85),(3,3,1,90),(4,1,2,60),(5,2,2,90),(6,3,2,75),(7,1,3,95),(8,2,3,75),(9,3,3,85);

 

mysql_study_1

原文:https://www.cnblogs.com/Galesaur-wcy/p/10768388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!