2018-08-07(17)Mysql基础

Mysql数据库

如何找到my.ini(mysql 的配置文件)?

显示隐藏文件夹,在programeData中。

mysql 数据库管理系统

数据库关系

用来反应实体内部的联系和实体之间的联系,实体内部的联系通常指组成实体的个属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。

一对一,一对多,多对多。(是指数据表之间的关系)

设置主键时尽量选择没有意义的列作为主键。

主表的外键是唯一的。

所以说有重复外键的表是从表。

三大关系完整性

  • 实体完整性
    具有唯一的标识列或组合标识列(主键)
    主键(primary key)不能为空,但是唯一(unique)可以为空。
  • 引用完整性(参照完整性)
    具有对应的主键和外键,每个外键都有其对应的主键。
  • 域完整性(用户自定义完整性)
    • 域完整性和域约束(例如省份名称的约束,不能填入不存在的省份)
    • 类型约束(在int类型中不能填入char类型)
    • 范围约束(char(10)不能填入11个字符)
    • 格式约束(对于指明的格式,不能填入非法格式)

范式

第一范式(R ∈1NF)

所有的属性不能再分,(有些字段不适合再分,如:姓名)。

又叫做“原子化”。

第二范式 (R ∈2NF)

每一个非主属性完全依赖主键(非主属性即为主键之外的列)

完全依赖是指两者之间存在逻辑关联。

第三范式(R ∈3NF)

确保数据表中的每一列数据与主键之间直接关联,不能间接相关。

基本sql语句

-- 数据库名不需要加引号

DROP database if EXISTS mystudents;
CREATE DATABASE mystudents DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 新建表

create table student(
        id INT(11),
        sno VARCHAR(15) PRIMARY KEY,
        sname VARCHAR(20) not null,
        ssex char(2) DEFAULT '女',
        sbirthday date,
        sdept VARCHAR(20)
)

create table sc(
        sno VARCHAR(15),
        cno varCHAR(4),
        grade SMALLINT,
        PRIMARY KEY(sno, cno),
        FOREIGN KEY(sno) REFERENCES student(sno),
        FOREIGN key(cno) REFERENCES course(cno)
        
)

create table sc(
        sno VARCHAR(15),
        cno varCHAR(4),
        grade SMALLINT,
        PRIMARY KEY(sno, cno)
)

对标的一些特殊操作

-- 查看表定义
DESC student;
DESCRIBE sc;

-- 查看表定义语句
show create table sc;

CREATE TABLE `sc` (
  `sno` varchar(15) NOT NULL,
  `cno` varchar(4) NOT NULL,
  `grade` smallint(6) DEFAULT NULL,
  PRIMARY KEY (`sno`,`cno`),
  KEY `cno` (`cno`),
  CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`sno`) REFERENCES `student` (`sno`),
  CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

-- 约束
-- 约束名推荐使用 约束类型_约束字段

-- 删除逐渐约束
-- 删除主键时不需要加主键所在列的名称
alter table student drop PRIMARY KEY;

-- 添加主键约束
alter table student add PRIMARY KEY(sno);

-- 删除外键约束
alter table sc DROP FOREIGN KEY sno;
alter table sc DROP FOREIGN KEY cno;

-- 添加外键约束
alter table sc add FOREIGN KEY(sno) REFERENCES student(sno);
alter table sc add FOREIGN KEY(sno) REFERENCES course(cno);

-- 添加唯一约束
alter table student add unique (id);


alter table ad drop INDEX sname;

-- 设置默认值

alter table student ALTER ssex set DEFAULT '男';


-- 打开数据库然后建表,

use mysql;
create table test(
    id int PRIMARY KEY
)

更新表

-- 修改表约束
alter table sc add FOREIGN KEY (sno) REFERENCES student(sno);
alter table student add FOREIGN KEY (sno) REFERENCES sc(sno);

-- 数据处理
use mystudents;
-- 插入行
select * from student;

-- 插入所有字段
INSERT into student(sno,sname,sgender,sbirthday,sdept)
VALUES('003','张飞','女','348-6-2','数学');

-- 插入字段会更改默认值
insert into student(id,sno,sname,ssex,sbirthday,sdept)
VALUE(002,"002","令狐冲","女","223-4-5","厨师");
insert into student(id,sno,sname,ssex,sbirthday,sdept)
VALUE(003,"003","令狐冲","","223-4-5","厨师");

-- 有默认值的字段可以不写
insert into student(id,sno,sname,sbirthday,sdept)
VALUE(004,"004","令狐冲","223-4-5","厨师");

-- 如果不写字段,必须写入每个字段的值,有默认值的也要写
insert into student
value(005,"005","风清扬","男","122-3-4","养老");



-- 自增
-- 设置自增时,要先将自增列设置为主键,然后再设置其他键为主键,否则会报错。
-- 设置自增列的数据类型要为数字。
insert into students(sno, sname, sbirthday, sdept)
VALUE("001","爱因兹乌鲁恭","342-3-4","化学");

-- 自增了列仍可以指定值
insert into students(id,sno, sname, sbirthday, sdept)
VALUE(4,"002","夏尔提亚","342-3-4","化学");

-- 如果不指定值的话,自增的列会依据上一列增加
insert into students(sno, sname, sbirthday, sdept)
VALUE("002","L","342-3-4","推理");

-- 插入的数据会在其自增列中该在的位置,与插入的先后顺序无关
insert into students(id,sno, sname, sbirthday, sdept)
VALUE(3,"002","夜神月","342-3-4","推理");



-- 修改数据
-- 不指定条件的话会修改所有具有该列的行
update students set sno = ("009");

-- 当制定条件时,指挥修改满足条件的行
update students set sno = ("006") where sname = ("L");


-- 删除语句
delete FROM students where sname = ("L");

-- 删除数据库
drop database mystudents

-- 删除数据表
drop table students

你可能感兴趣的:(2018-08-07(17)Mysql基础)