数据完整性
一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束
数据类型
可以通过查看帮助文档查阅所有支持的数据类型
使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
常用数据类型如下:
整数:int,bit
小数:decimal
字符串:varchar,char
日期时间: date, time, datetime
枚举类型(enum)
特别说明的类型如下:
decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'
字符串text表示存储大文本,当字符大于4000时推荐使用
对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
更全的数据类型可以参考http://blog.csdn.net/anxpp/article/details/51284106
约束
主键primary key:物理上存储的顺序
非空not null:此字段不允许填写空值
惟一unique:此字段的值不允许重复
默认default:当不填写此值时会使用默认值,如果填写时以填写为准
外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制
#创建数据库
#后面的charset是编码的意思,一般使用utf8
create database 数据库名 charset=utf8;
#使用数据库
use 数据库名;
#创建表
create table 表名(
在这里写每一个字段的创建及其要求
例如:
id int unsigned primary key auto_increment not null,
name varchar(20) default '',
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女','中性','保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
#插入数据
insert into 表名 value
(这里根据你创建的表中的字段进行填写,注意你在设置表的时候已经对字段的类型进行了要求(int型,double型等等),那么在这里插入数据的时候要注意)
每一行的数据用()包括起来,两条数据之间使用 , 进行分割,结尾处使用;完结。
#查询字段
select 列的名字 from 列所在的表的名字。
列的名字可以用*代替 意为查询该表下的所有字段
查询中难免会出现重复的数据,如果你不想在查询结果中看到这些重复数据的话,可以在查询语句的末尾加上distinct 对结果进行筛选
如果你想对表中的数据的某一个字段的值的范围进行筛选那么需要用到where关键字
例如你想查询班上同学考试分数 数学分数超过75分的同学
select * from score where math>75
同时,sql支持多个选择项进行查询,
例如你想查询班上同学考试分数 数学分数超过75分并且英文超过80的同学
select * from score where math>75 and English>80
当然查询还有多表的联查,这个我会在后续的博客中更新
以上的查询方式针对于我已经知晓了我要查询的条件是什么
但如果要查询的是某一个学生的名字,但是我目前记不清出他叫什么,只是记得他的姓。针对于这种情况我们用的一般是模糊查询
like
%表示任意多个任意字符
_表示一个任意字符
我们会用到like % _ 等来配合我们的查询语句
例如我们要在学生表中查询一个姓王的学生,他可能叫王大锤,也可能叫王锤,所以在这里我们使用%来查询
select * from students where name like '王%';
再例如我们要在学生表中查询一个姓王的学生,他可能叫王大锤,也可能叫王小锤,所以在这里我们使用_来查询
select * from students where name like '王_锤';
数据库的创建以及查询1
最新推荐文章于 2024-05-10 15:31:28 发布