数据库之二数据类型、约束、表操作

——Sept. 28th, 2015 Mon.15:30 PM

一、数据类型

(1) 整型

TINYINT                    1字节    //TINYINT UNSIGNED

SMALLINT                 2字节

MEDIUMINT             3字节

INT                            4字节

BIGINT                      8字节

(2)浮点型

FLOAT[(M, D)]

DOUBLE[(M, D)]

M是数字总位数,D是小数点后面的位数,如果M和D省略,根据硬件允许的限制来保存值,单精度浮点数精确到大约7位小数位。一般使用FLOAT就可以。

(3)日期时间型

YEAR                      1    范围:70-69(1970-2069之间的日期)

TIME                       3    838-5959

DATE                      3    日期范围:1000.1.1-9999.12.31

DATETIME             8    日期时间合理范围:1000.1.1.00:00:00-9999.12.31.23:59:59

TIMESTAMP          4    (时间戳) 1970.1.1.00:00:00-2037...

在开发过程,日期时间一般不用,因为要考虑到跨时区,而是采用数字类型。 

(4)字符型

CHAR(M)                                         M个字节,0<=M<=255,定长类型

VARCHAR(M)                                  L+1个字节,L<=M且0<=M<=65535,变长类型

TINYTEXT                                      L+1个字节,L<2的8次方(256)

TEXT                                               L+2个字节,L<2的16次方

MEDIUMTEXT                                L+3个字节,L<2的24次方

LONGTEXT                                     L+4个字节,L<2的32次方

ENUM(‘value1‘, ‘value2‘, ...)              1或2个字节,取决于枚举值的个数,最多65,535个值

SET(‘value1‘, ‘value2‘, ...)                  1,2,3,4或8个字节,取决于set成员的数目(最多 64个成员)(集合)

二、数据表操作

数据表 即表是数据库最重要的组成部分之一,是其他对象的基础。

(1)打开数据库

USE database_name

(2)创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(

column    _name data_type,

...

);

如:> CREATE TABLE t1(

>   username VARCHAR(20),

>   age TINYINT  UNSIGNED,

>   salary FLOAT(8, 2) UNSIGNED

> );

字段名 - 类型 - 约束

删除数据表:DROP TABLE table_name;

(3)查询数据表列表

SHOW TABLES [FROM db_name]  [LIKE ‘pattern‘ | WHERE expr]

查询整个mysql的表:SHOW TABLES FROM mysql;当前数据库是不会变化的。

(4)查看数据表结构

SHOW COLUMNS FROM tbl_name    对表处理

(5)记录的插入与查找

行:记录

插入记录:INSERT [INTO] tbl_name [(col_name, ...)] VALUES(val, ...)    //可以为指定的col_name字段赋值,也可以省略不写,但此时必须为所有的字段赋值

> INSERT tb1 VALUES(‘Tom‘, 25, 9998.78);

> INSERT tb1(username, salary) VALUES(‘John‘, 5000.00)

查找记录:SELECT expr, ... FROM tbl_name    //expr表达式

如:SELECT * FROM tb1;    //* 表示字段的过滤,而非记录的过滤

三、约束

约束保证数据的完整性和一致性。

分类:表级约束、列级约束

这是根据约束字段的数目来分类:如果只针对某一个字段约束,则称之为列级约束;

                  如果针对多个字段约束,则称之为表级约束。

列级约束既可以在列定义时声明,也可以在定义之后声明。表级约束只能在列定义之后声明。

NOT NULL、DEFAULT只能存在于列级约束,其他的可以都存在与两者。

类型: 非空约束   ( NOT NULL )

  主键约束   ( PRIMARY KEY )

唯一约束   ( UNIQUE KEY )

    默认约束   ( DEFAULT )

   外键约束   ( FOREIGN KEY )

  check约束

(1)非空与空值

NULL 字段值可以为空

NOT NULL 字段值禁止为空(比如在填表时有些项是必填的)

> CREATE TABLE tb2(

> username VARCHAR(20) NOT NULL,

> age TINYINT UNSIGNED NULL

> );

可以查看SHOW COLUMNS FROM tb2;

(2)自动编号

AUTO_INCREMENT 自动编号必须与主键结合使用。可以保证记录的唯一性。

默认情况下,起始值为1,每次的增量为1。

应该为整型,如果为浮点型,那么小数点后必须为0

如:

> CREATE TABLE tb3(

> id SMALLINT UNSIGNED AUTO_INCREMENT,

> username VARCHAR(30) NOT NULL

> );

ERROR 1075 (42000) : Incorrect table definition; there can be only one auto column and it must be defined as a key.

(3)主键约束

PRIMARY KEY 主键用来保证记录的唯一性,每张表只能存在一个主键,且自动为NOT NULL.

> CREATE TABLE tb4(

> id SMALLINT UNSIGNED AUTO_INCREMENTPRIMARY KEY,

> username VARCHAR(30) NOT NULL

> );

可以查看SHOW COLUMNS FROM tb4;

(4)唯一约束

UNIQUE KEY 唯一约束可以保证记录的唯一性,它的字段可以为空(NULL),每张数据表可以存在多个唯一约束。

如创建既有主键约束又有唯一约束的数据表:

> CREATE TABLE  tb5(

> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

> username VARCHAR(20) NOT NULL UNIQUE KEY,

> age TINYINT UNSIGNED

> );

可以查看SHOW COLUMNS FROM tb5;

(5)默认约束

DEFAULT 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

> CREATE TABLE tb6(

> id  SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

> username VARCHAR(20) NOT NULL UNIQUE KEY,

> sex ENUM(‘1‘, ‘2‘, ‘3‘) DEFAULT ‘3‘

> );

时间: 2024-10-12 06:04:29

数据库之二数据类型、约束、表操作的相关文章

数据库(二)约束

既然是管理,就需要有一定量的规则.数据库也一样.我们把它的管理方式叫做约束.相对正规一点的公司,都会拥有一定量的数据库进行管理.同理他们也都会做约束.数据库约束比较严谨,常见的分为以下四种:主键约束.外键约束.唯一约束.check约束. 主键约束 我们经常使用baidu与google等搜索引擎,登录各大网站搜索信息辅助工作.输入的关键字就被称为主键.同样我们在表格的设置界面中,列上右键,设置一列作为主键列,那么这一列的信息就将作为主键以参考辅助我们的搜索.为了方便搜索,信息不能重复,不能为空,一

MySQL数据库实验二:单表查询

实验二   单表查询 一.实验目的 理解SELECT语句的操作和基本使用方法. 二.实验环境 是MS SQL SERVER 2005的中文客户端. 三.实验示例 1.查询全体学生的姓名.学号.所在系. SELECT Sname,S#,Sdept FROM S: 2.查询全体学生的详细记录. SELECT  * FROM S: 3.查全体学生的姓名及其出生年份. SELECT Sname,2011-Sage    /*假定当年的年份为2011年*/ FROM S: 4.查询选修了课程的学生学号.

Django模型层之单表操作

Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle.Microsoft SQL Server等. 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图一^①^ 但是直接编写原生sql语句会存在两方面的问题,严

Windows中使用MySQL 创建数据库(二)

一.数据库操作 1.查看当前存在的所有数据库 mysql>show databases; 2.切换当前使用数据库 mysql>use test 3.授权 mysql>grant all on 数据库名.* to 用户名@主机名 4.创建数据库 mysql>create database company; 其中:company 为要创建的数据库名 二.创建表 1.查看当前数据库中的所有表 mysql>show tables; 2.创建表 create table employe

17-2 orm单表操作和多表操作

参考:https://www.cnblogs.com/liwenzhou/p/8660826.html 一  ORM单表操作 1 增删改查 1 1. 查询 2 1. 查所有 3 models.Publisher.objects.all() 4 2. 查某个具体的记录 5 models.Publisher.objects.get(id=1) --> 注意查询条件不成立就报错 6 2. 删除一条记录 7 models.Publisher.objects.get(id=1).delete() 8 3.

单表多表操作 联表查询

目录 一.单表操作 1. 分组--> group by 2. 排序--> order by 3. 分页--> limit 4. 总结(很重要) 二.多表操作 1. 外键 2. 一对多(很常见类型) 3. 多对多(常见类型) 4. 一对一(不常见类型) 三.多表联查 1. 左连接-->left join...on 2. 右连接-->right join...on 3. 内连接-->inner join...on 一.单表操作 1. 分组--> group by 分组

MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于excel),用来存放多行内容/多条记录 5. 记录:事物一系列典型的特征 6. 数据:描述事物特征的符号 MySQL数据库就是一个套接字软件,用来管理其他机器上的数据文件 MySQL介绍: MySQL是一个关系型数据库管理系统:就是一个基于socket编写的C/S架构胡软件 客户端软件 mysql

二 数据库、数据表操作

一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件.锁等现象 mysql: 授权库,主要存储系统用户的权限信息test: MySQL数据库系统自动创建的测试数据库 二 创建数据库 1 语法(help create database) CREATE DA

DJango周总结二:模型层,单表,多表操作,连表操作,数据库操作,事务

django周复习二 1,模型层:  1单表操作:   13个必会操作总结    返回QuerySet对象的方法有    all()    filter()    exclude()    order_by()    reverse()    distinct()    特殊的QuerySet    values()       返回一个可迭代的字典序列    values_list() 返回一个可迭代的元祖序列    返回具体对象的    get()    first()    last()