MySQL学习笔记(二)数据类型及数据表的相关操作

数据类型:

指数据列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不用的信息类型

(1)整型:TINYINT(1字节),SMALLINT(2字节),MEDIUMINT(3字节),INT(4字节),BIGINT(8字节)

(2)浮点型:FLOAT[(M,D)]和DOUBLE[(M,D)],其中M是数字总位数,D是小数点后面的位数

(3)日期时间型:YEAR(1byte)、TIME(3bytes)、DATE(3bytes)、DATETIME(8bytes)、

TIMESTAMP(4bytes)

(4)字符型:

CHAR(M)                           M个字节

VARCHAR(M)                    L+1个字节,其中L<=M

TINYTEXT                         L+1个字节

TEXT                                 L+2个字节

MEDIUMTEXT                   L+3个字节

LONGTEXT                        L+4个字节

ENUM('value1','value2',…)   1个或两个字节,取决于枚举值的个数

SET('value1','value2',…)              1,2,3,4或8个字节



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


打开数据库,格式如下:

USE 数据库名称


创建数据表

CREATE TABLE [IF NOT EXISTS] table_name(column_name  data_type,…);

如:

CREATE TABLE lib(username VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2)) UNSIGNED);


查看数据表列表

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

提示:不仅可以查看当前数据库中的数据表,也可以查看其他数据库中的列表

如:(1) //查看当前数据库中的数据表

SHOW TABLES;         

(2) //查看自带数据库mysql中的数据表

SHOW TABLES FROM mysql;   


查看数据表结构

SHOW COLUMNS FROM tb_name;


插入记录

INSERT [INTO] tb_name [(col_name,…)] VALUES(val,…)

注意省略列明col_name时,将需要给所有的列名赋值


查找记录

SELECT express,…  FROM tb_name

如:SELECT * FROM tb1;  //查找数据表tb1中所有的记录

SELECT username,age  FROM  tb1;      //查找数据表tb1中的username和age的记录


空值与非空

NULL     //表示字段值可以为空

NOT NULL    //表示字段值禁止为空

如:

//创建一个数据表,其中username字段不能为空,age字段可以为空

CREATE TABLE IF NOT EXISTS tb2(username VARCHAR(20) NOT NULL,age TINYINT UNSIGNED NULL);

//插入记录
INSERT INTO tb2 VALUES('Daniel',NULL);/*正确*/
//INSERT INTO tb2 VALUES(NULL,20); /*程序将报错,提示username字段不能为空*/
//查看记录
SELECT * FROM tb2;

AUTO_INCREMENT

自动编号,且必须与主键组合使用,默认情况下,起始值为1,每次的增量为1

注意:增加该属性的字段的数据类型可以为整型,也可以为浮点型,浮点型时需要小数位数为0

 

PRIMARY KEY

主键约束,每张数据表只能存在一个主键,主键保证记录的唯一性,主键自动为NOT  NULL

注意:主键不一定和AUTO_INCREMENT一起使用

如:

实例1:自动增长属性的使用

//创建数据表tb3,主键约束为id,且为自动增长型
CREATE TABLE tb3(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL);
//插入记录
INSERT INTO tb3 (username) VALUES('Tom');
INSERT INTO tb3 (username) VALUES('John');
INSERT INTO tb3 (username) VALUES('William');
INSERT INTO tb3 (username) VALUES('Kate');
//查看记录
SELECT * FROM tb3;

实例2:字段声明为主键时,不一定要同时声明为自动增长

//创建数据表tb4,主键约束为id
CREATE TABLE tb4(id SMALLINT PRIMARY KEY, username VARCHAR(20) NOT NULL);
//显示数据表的结构
SHOW COLUMNS FROM tb4;
//插入记录
INSERT tb4 VALUES(4,'John');
INSERT tb4 VALUES(10,'Tom');
/*INSERT tb4 VALUES(10,'King');      //报错,因为主键的唯一性*/

UNIQUE  KEY

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

注意:即使有多个字段是NULL,但是只保留一个空值,因此可以保证记录的唯一性

示例:

CREATE TABLE IF NOT EXISTS tb2(id SMALLINT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL UNIQUE KEY,age TINYINT UNSIGNED);
//显示该数据表的结构
SHOW COLUMNS FROM tb2;
//向数据表tb2中添加记录
INSERT INTO tb2 (username,age) VALUES('Tom',20);
//INSERT INTO tb2 (username,age) VALUES('Tom',20);   /*将报错,因为username是UNIQUE KEY*/</span>

DEFAULT

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

CREATE TABLE IF NOT EXIST tb3(id SMALLINT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL UNIQUE KEY,sex ENUM('1','2','3') DEFAULT '3');
//显示该数据表的结构,可看到sex的默认值为'3'
SHOW COLUMNS FROM tb3;
//插入记录
INSERT tb3 (username) VALUES('Tom');
//查看记录,可以看到,如果没有对sex进行赋值的话,则sex则被置为默认值
SELECT* FROM tb3;


 

 




你可能感兴趣的:(数据类型,约束,数据表)