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

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

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

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

假设已经存在表user :

mysql>CREATE TABLE uesr(
    id int,
    username varchar(200),
    gender varchar(10),
    birthday date,
    entry_date date,
    job varchar(200),
    salary float(8,2),
    resume text
);

查看表中的所有记录:

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,必须唯一

CREATE TABLE shanghai1(
    id int PRIMARY KEY,
    name varchar(100)
);


//实际开发中不建议使用。
CREATE TABLE shanghai2(
    id int PRIMARY KEY auto_increment,
    name varchar(100)
);

insert into shanghai2 (name) values('aa');

②域完整性

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

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

CREATE TABLE shanghai3(
    id int PRIMARY KEY,
    name varchar(100) NOT NULL,
        idnum varchar(100) unique
);

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

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

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

一对多:

create table department(
    id int primary key,
    name varchar(100)
);

create table employee(
    id int primary key,
    name varchar(100),
    salary float(8,2),
    dept_id int,
    constraint dept_id_fk foreign key(dept_id) references department(id)
);

多对多:

create table teacher(
    id int primary key,
    name varchar(100),
    salary float(8,2)
);

create table student1(
    id int primary key,
    name varchar(100),
    grade varchar(10)
);

create table teacher_student1(
    t_id int,
    s_id int,
    primary key(t_id,s_id),
    constraint t_id_fk foreign key(t_id) references teacher(id),
    constraint s_id_fk foreign key(s_id) references student1(id)
);

一对一:

create table human(
    id int primary key,
    name varchar(100)
);

create table idcard(
    id int primary key,
    num varchar(100),
    constraint huanm_id_fk foreign key(id) references human(id)
);

博客园博文地址: mysql使用基础 sql语句与数据完整性(二)

坚持原创技术分享,您的支持将鼓励我继续创作!
0%