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','','1991-09-07','2013-04-12','CTO',10000.00,'beauty');
省略字段名插入(当插入values值顺序与表字段声明必须完全一致):
mysql>INSERT INTO user VALUES (2,'Jack','','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语句与数据完整性(二)的更多相关文章
- mysql使用基础 sql语句(一)
csdn博文地址:mysql使用基础 sql语句(一) 点击进入 命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需 ...
- mysql数据库基础SQL语句总结篇
常用的sql增删改查语句 创建数据库:create database db_name character set utf8;删除数据库:drop database db_name;切换数据库:use ...
- MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系
数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...
- MySQL数据库(一)—— 数据库介绍、MySQL安装、基础SQL语句
数据库介绍.MySQL安装.基础SQL语句 一.数据库介绍 1.什么是数据库 数据库即存储数据的仓库 2.为什么要用数据库 (1)用文件存储是和硬盘打交道,是IO操作,所以有效率问题 (2)管理不方便 ...
- Oracle,SQL Server 数据库较MySql数据库,Sql语句差异
原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...
- MySQL的常用SQL语句.md
修改密码 这是常见的大家一般都要用的 首先 安装成功了打开cmd --> mysql -u root -p -->输入你的密码 修改mysql root用户密码 格式 ...
- 常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释)
常用sql语句总结(二)(更新数据,序列,创建数据表,约束,注释) 一. 增 INSERT INTO 数据表(字段,字段,-) VALUES(值,值-); INSERT INTO emp(empno, ...
- 《SQL Server基础——SQL语句》
SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE ...
- Mysql(Mariadb) 基础操作语句 (持续更新)
基础SQL语句,记录以备查阅.(在HeiDiSql中执行) # 创建数据库 Create Database If Not Exists VerifyIdear Character Set UTF8; ...
随机推荐
- 问题解决——使用GP-3120TN打印条形码标签
终于大致的尝试出了参数和编程手册里指令的使用. 在这里,感谢佳博中一个叫做"Gprinter 陶玮"的工程师所提供的技术支持.非常感谢,如果没有你,在写这篇文章之前我可能换别的打印 ...
- 烂泥:SQL Server 2005数据库备份与恢复
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 服务器的迁移,因为业务使用的数据库是SQL Server 2005,所以就要首先对数据库进行备份. 备份可以分为手动备份和自动备份,我们先来介绍手动备份 ...
- MySQL中EXPLAIN的解释
EXPLAIN是查看MySQL优化器如何决定执行查询的主要方法,这个功能具有局限性,以为它并总是会说出真相,但是却可以获得最好信息. 学会解释EXPLAIN,你就会了解MySQL优化器是如何工作,你才 ...
- 给Azure 虚机的硬盘扩充容量[转]
接到用户的需求,需要给Azure 上虚机的硬盘扩充空间,网上找到下面的资源,做个备忘: https://github.com/azure-contrib/WindowsAzureDiskResizer
- 矩阵乘法快速幂 codevs 1732 Fibonacci数列 2
1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在“ ...
- C. Coloring Trees DP
传送门:http://codeforces.com/problemset/problem/711/C 题目: C. Coloring Trees time limit per test 2 secon ...
- Topcoder SRM 618 Div2 --900
题意:给定两个NxN的棋盘,每个棋盘都有一个‘车’的摆放状态,问进行若干次交换,能否使棋盘1变为棋盘2. 交换规则:每次选两个‘车’,坐标分别为(r1,c1),(r2,c2),如果r1<r2并且 ...
- HDU 1850 Being a Good Boy in Spring Festival
此题先考虑第一种,5 7 9的情况,先手如果想赢,则必定要把异或值变为0,因为随便取,所以此处的异或指的是对堆中的石子数进行异或,而非异或其SG函数. 首先7^9=14,因为要异或为0,则5要变成14 ...
- 深入理解maven及应用--转
(一):生命周期和插件 在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最 ...
- Loadrunner:场景运行较长时间后报错:Message id [-17999] was not saved - Auto Log cache is too small to contain the message.
loadrunner运行时间较长后,跑数据过程老是失败,有如下error: Message id [-17999] was not saved - Auto Log cache is too smal ...