数据类型:
指数据列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不用的信息类型
(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;