• mysql使用基础 sql语句与数据完整性(二)


    二、DML:Data Manipulation Language 数据操作语言

      作用:操作表中的数据的。
      关键:INSERT UPDATE DELETE

      注意:日期或字符串、字符要使用单引号引起来。

    假设已经存在表user :

     1 mysql>CREATE TABLE uesr(
     2     id int,
     3     username varchar(200),
     4     gender varchar(10),
     5     birthday date,
     6     entry_date date,
     7     job varchar(200),
     8     salary float(8,2),
     9     resume text
    10 );

    查看表中的所有记录: mysql>SELECT * FROM user;  

    插入中文时的问题:(编码问题)

    查看数据库目前的各种编码: mysql>SHOW VARIABLES LIKE 'character%'; 

    通知服务器客户端使用的编码字符集: mysql>SET character_set_client=gbk; 

    显示时乱码: mysql>SET character_set_results=gbk; 

    ②使用insert语句向表中插入记录

    不省略字段名插入(建议):

    mysql>INSERT INTO user (id,username,gender,birthday,entry_date,job,salary,resume) VALUES (1,'Tom','0','1991-09-07','2013-04-12','CTO',10000.00,'beauty');

    省略字段名插入(当插入values值顺序与表字段声明必须完全一致):

    mysql>INSERT INTO user VALUES (2,'Jack','1','1987-09-07','2013-04-12','CEO',10000.00,'hand');

       

    ③使用update语句更改表中记录

    将所有员工薪水修改为5000元:

     mysql>UPDATE user SET salary=5000; 

    将姓名为Tom的记录薪水改为3000:

    mysql>UPDATE user SET salary=3000 WHERE username='Tom';

    将姓名为Tom的员工薪水修改为4000,job改为CMO:

    mysql>UPDATE user SET salary=4000,job='CMO' WHERE username='Tom';

    将Jack的薪水在原有基础上增加1000元:

    mysql>UPDATE user SET salary=salary+1000 WHERE username='Jack';

    ④删除操作

    删除表中名称为Tom的记录: mysql>DELETE FROM user WHERE username='Tom'; 

    删除表中所有记录(一条一条的删除): mysql>DELETE FROM user; 

    使用TRUNCATE删除表中记录(摧毁整张表,然后重建表结构): mysql>TRUNCATE user; 

    三、数据完整性

    数据完整性分为四类:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)、用户自定义完整性(User-definedIntegrity)。

    ①实体完整性:

    规定表中的一行在表中是唯一的实体,一般是通过定义主键的形式来实现的。实体完整性要求每一个表中的主键字段都不能为空或者重复的值。实体完整性指表中行的完整性。要求表中的所有行都有唯一的标识符,称为主关键字。主关键字是否可以修改,或整个列是否可以被删除,取决于主关键字与其他表之间要求的完整性。

    关键字:PRIMARY KEY
    特点:不能为null,必须唯一

     1 CREATE TABLE shanghai1(
     2     id int PRIMARY KEY,
     3     name varchar(100)
     4 );
     5 
     6 
     7 //实际开发中不建议使用。
     8 CREATE TABLE shanghai2(
     9     id int PRIMARY KEY auto_increment,
    10     name varchar(100)
    11 );
    12 
    13 insert into shanghai2 (name) values('aa');    

    ②域完整性

    指数据库表的列(即字段)必须符合某种特定的数据类型或约束。域完整性是针对某一具体关系数据库的约束条件。它保证表中某些列不能输入无效的值。

    NOT NULL:不能为空
    UNIQUE:必须唯一

    1 CREATE TABLE shanghai3(
    2     id int PRIMARY KEY,
    3     name varchar(100) NOT NULL,
    4     idnum varchar(100) unique
    5 );


    关于主键(建议)
    逻辑主键:给编程人员用的。与具体业务无关
    业务主键:用户也可以用。与具体业务有关


    ③参照完整性(多表设计)

    当更新、删除、插入一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,简单的说就是表间主键外键的关系。

    一对多:

     1 create table department(
     2     id int primary key,
     3     name varchar(100)
     4 );
     5 
     6 create table employee(
     7     id int primary key,
     8     name varchar(100),
     9     salary float(8,2),
    10     dept_id int,
    11     constraint dept_id_fk foreign key(dept_id) references department(id)
    12 );


    多对多:

     1 create table teacher(
     2     id int primary key,
     3     name varchar(100),
     4     salary float(8,2)
     5 );
     6 
     7 create table student1(
     8     id int primary key,
     9     name varchar(100),
    10     grade varchar(10)
    11 );
    12 
    13 create table teacher_student1(
    14     t_id int,
    15     s_id int,
    16     primary key(t_id,s_id),
    17     constraint t_id_fk foreign key(t_id) references teacher(id),
    18     constraint s_id_fk foreign key(s_id) references student1(id)
    19 );

     一对一:

     1 create table human(
     2     id int primary key,
     3     name varchar(100)
     4 );
     5 
     6 create table idcard(
     7     id int primary key,
     8     num varchar(100),
     9     constraint huanm_id_fk foreign key(id) references human(id)
    10 );
  • 相关阅读:
    此类目的是防治序列化Json字符串时的循环引用问题-------最好解决方案
    Json.Net学习笔记
    深入理解javascript原型和闭包(完结)
    SDL 威胁建模工具入门 threat modeling tool
    .NET 4.0 中的契约式编程
    MVC调用部分视图PartialView
    visual studio 常识
    【阿里云产品评测】小鸡咕咕的初体验
    【阿里云入门产品免费试用半年】加入微博话题+“最”炫推荐理由,得精美小礼物
    镜像公测招募啦!!!用镜像开通云服务器,限时免费体验!!
  • 原文地址:https://www.cnblogs.com/z941030/p/4553404.html
Copyright © 2020-2023  润新知