二、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 );