2-1 内容回顾
默认端口号3306
超级用户 root
创建数据库 CREATE DATABASE
修改数据库 ALTER DATABSE
删除数据库 DROP DATABASE
2-2数据类型之整型和数据表的操作
数据类型:
整型 TINYINT 有符号值:-128到127 无符号值:0到255
SMALLINT 有符号值:-32768到32767 无符号值:0到65535
MEDIUMINT有符号值:-8388608到8388607 无符号值:0到16777215
INT 有符号值:-2147483648到2147483647无符号:0到4294967295
BIGINT有符号值:-923372036854775808到923372036854775807无符号:0到18446744073709551615
DOUBLE[(M,D)]M是数字总位数,D是小数点后面的位数 M>=D
2-4日期时间型
YEAR
TIME
DATE
DATETIME
TIMESTAMP
2-5字符型
CHAR(M) M个字节,0<=M<=255
VARCHAR(M) 65536
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM
SET
2-6创建数据表
数据表是数据库最重要的组成部分之一,使其他对象的基础。
打开数据库 USE 数据库名称;
登录到mysql客户端,进入mysql 在里面输入mysql -root -proot
输入USE test;表示使用test这个数据库,表示打开了这个数据库,怎么知道已经打开了呢?再在下面输入SELECT DATABASE();敲回车即可看出
接下来要在打开的test数据库中创建数据表 CREATE TABLE TABLE_name(列名 数据类型,列名 数据类型)
例如在里面创建一个数据表 CREATE TABLE tb1(username VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);
2-7查看数据表是否存在
SHOW TABLES;
2-8查看数据表结构
SHOW COLUMNS FROM tb1;
可以看到2-6中创建的数据表的具体表格形式
2-9记录(行)的插入和查找,向数据表中写数据
给所有的的字段赋值INSERT tb1 VALUES('TOM',25,7500);
给其中的一部分字段赋值INSERT tb1(username,salary) VALUES('Tim',25);
记录的查找 SELECT * FROM tb1;
2-10空值与非空(NOT NULL)_
新建个表格tb2,两个属性,姓名和年龄,其中姓名不可以为空,年龄可以为空
CREATE TABLE tb2(username VARCHAR(20) NOT NULL,age TINTINT UNSIGNEDNULL);
接着显示表格
再输入命令让他显示一下
SELECT * FROM tb2; 敲回车后显示出错
2-11自动编号(必须数值型,如果为浮点型则小数位为0)自动编号必须和主键组合使用,而主键不一定和自动编号一起使用
AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次的增量为1
创建个表格CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT,username VARCHAR(30) NOT NULL);
其中第一个自动编号,敲回车报错,因为自动编号的字段必须定义为主键才行
2-12主键约束(每张数据表只能有一个,它可以保证记录的唯一性)
PRIMARY KEY
每张数据表只能存在一个主键,逐渐保证记录的唯一性,主键自动为NOT NULL(不能为空)
2-11节中的创建的表格写成这样CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,username
VARCHAR(30) NOT NULL);敲回车显示创建正确
输入SHOW COLUMNS FROM tb3;显示下表格
接着在里面插入多个名字INSERT tb3(username) VALUES('TOM');敲回车
INSERT tb3(username) VALUES('LUCY');敲回车
INSERT tb3(username) VALUES('LILY');敲回车
INSERT tb3(username) VALUES('ROSE');敲回车
SELECT * FROM tb3; 敲回车看到了id自动编号每次递增1
AUTO_INCREMENT 必须定义为主键,但主键(PRIMARY KEY)不一定与AUTO_INCREMENT一起使用,再创建一张表只有主键没有自动编号
AUTO_INCREMENT, CREATE TABLE tb4(id SMALLINT UNSIGNED PRIMARY KEY,username VARCHAR(20) NOT NULL);
首先查看下数据表的基本结构SHOW COLUMNS FROM tb4;
再往里面写值INSERT tb4 VALUES(4,'TOM');
INSERT tb4 VALUES(22,'JOHN');
查找记录SELECT * FROM tb4;
可以发现主键的字段是可以赋值的,能赋同样的值吗?再输一遍INSERT tb4 VALUES(22,'JOHN');显示错误,表示不能赋同样的值
综上AUTO_INCREMENT 必须和PRIMARY KEY一块使用,而PRIMARY KEY不一定和AUTO_INCREMENT一块使用
2-13唯一约束UNIQUE KEY
CREATE TABLE tb5(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL UNIQUE KEY,age TINYINT UNSIGNED);敲回车,创建好了这个表
再查看下数据库的结构SHOW COLUMNS FORM tb5;
上面的id是自动赋值,所以不用赋值,所以只需要给username和age赋值 INSERT tb5(username,age) VALUES('TOM',22);
再写一次系统会提示错误,就不唯一了INSERT tb5(username,age) VALUES('TOM',22);因为username中已经存在了TOM了
2-14默认约束(加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');
看一下数据表的结构SHOW COLUMNS FROM tb6;可以发现sex字段存在默认值3
id有自动给的值,sex有默认的值,给username赋值为TOM,INSERT tb6(username) VALUES('TOM');
接下来查看记录SELECT * FROM tb6; 敲回车可以发现没有明确赋值的时候系统将默认值3赋给这个字段
2-15 总结
数据类型:字符型,整型,浮点型,日期时间型
数据表操作:插入记录(insert),查找数据(select)(数据表是数据库的重要组成部分,使其他对象的基础)
记录操作:创建数据表,约束的使用
默认端口号3306
超级用户 root
创建数据库 CREATE DATABASE
修改数据库 ALTER DATABSE
删除数据库 DROP DATABASE
2-2数据类型之整型和数据表的操作
数据类型:
整型 TINYINT 有符号值:-128到127 无符号值:0到255
SMALLINT 有符号值:-32768到32767 无符号值:0到65535
MEDIUMINT有符号值:-8388608到8388607 无符号值:0到16777215
INT 有符号值:-2147483648到2147483647无符号:0到4294967295
BIGINT有符号值:-923372036854775808到923372036854775807无符号:0到18446744073709551615
2-3浮点型
FLOAT[(M,D)]M是数字总位数,D是小数点后面的位数 M>=D,可以保留到小数点后面7位DOUBLE[(M,D)]M是数字总位数,D是小数点后面的位数 M>=D
2-4日期时间型
YEAR
TIME
DATE
DATETIME
TIMESTAMP
2-5字符型
CHAR(M) M个字节,0<=M<=255
VARCHAR(M) 65536
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM
SET
2-6创建数据表
数据表是数据库最重要的组成部分之一,使其他对象的基础。
打开数据库 USE 数据库名称;
登录到mysql客户端,进入mysql 在里面输入mysql -root -proot
输入USE test;表示使用test这个数据库,表示打开了这个数据库,怎么知道已经打开了呢?再在下面输入SELECT DATABASE();敲回车即可看出
接下来要在打开的test数据库中创建数据表 CREATE TABLE TABLE_name(列名 数据类型,列名 数据类型)
例如在里面创建一个数据表 CREATE TABLE tb1(username VARCHAR(20),age TINYINT UNSIGNED,salary FLOAT(8,2) UNSIGNED);
2-7查看数据表是否存在
SHOW TABLES;
2-8查看数据表结构
SHOW COLUMNS FROM tb1;
可以看到2-6中创建的数据表的具体表格形式
2-9记录(行)的插入和查找,向数据表中写数据
给所有的的字段赋值INSERT tb1 VALUES('TOM',25,7500);
给其中的一部分字段赋值INSERT tb1(username,salary) VALUES('Tim',25);
记录的查找 SELECT * FROM tb1;
2-10空值与非空(NOT NULL)_
新建个表格tb2,两个属性,姓名和年龄,其中姓名不可以为空,年龄可以为空
CREATE TABLE tb2(username VARCHAR(20) NOT NULL,age TINTINT UNSIGNEDNULL);
接着显示表格
SHOW COLUMNS FROM tb2;
往里面插入个有姓名但是没年龄的
INSERT tb2 VALUES ('kate',NULL);输入命令让他显示一下
SELECT * FROM tb2;再往里面插入个没姓名但是有年龄的,会出问题
INSERT tb2 VALUES(NULL,26);再输入命令让他显示一下
SELECT * FROM tb2; 敲回车后显示出错
2-11自动编号(必须数值型,如果为浮点型则小数位为0)自动编号必须和主键组合使用,而主键不一定和自动编号一起使用
AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次的增量为1
创建个表格CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT,username VARCHAR(30) NOT NULL);
其中第一个自动编号,敲回车报错,因为自动编号的字段必须定义为主键才行
2-12主键约束(每张数据表只能有一个,它可以保证记录的唯一性)
PRIMARY KEY
每张数据表只能存在一个主键,逐渐保证记录的唯一性,主键自动为NOT NULL(不能为空)
2-11节中的创建的表格写成这样CREATE TABLE tb3(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,username
VARCHAR(30) NOT NULL);敲回车显示创建正确
输入SHOW COLUMNS FROM tb3;显示下表格
接着在里面插入多个名字INSERT tb3(username) VALUES('TOM');敲回车
INSERT tb3(username) VALUES('LUCY');敲回车
INSERT tb3(username) VALUES('LILY');敲回车
INSERT tb3(username) VALUES('ROSE');敲回车
SELECT * FROM tb3; 敲回车看到了id自动编号每次递增1
AUTO_INCREMENT 必须定义为主键,但主键(PRIMARY KEY)不一定与AUTO_INCREMENT一起使用,再创建一张表只有主键没有自动编号
AUTO_INCREMENT, CREATE TABLE tb4(id SMALLINT UNSIGNED PRIMARY KEY,username VARCHAR(20) NOT NULL);
首先查看下数据表的基本结构SHOW COLUMNS FROM tb4;
再往里面写值INSERT tb4 VALUES(4,'TOM');
INSERT tb4 VALUES(22,'JOHN');
查找记录SELECT * FROM tb4;
可以发现主键的字段是可以赋值的,能赋同样的值吗?再输一遍INSERT tb4 VALUES(22,'JOHN');显示错误,表示不能赋同样的值
综上AUTO_INCREMENT 必须和PRIMARY KEY一块使用,而PRIMARY KEY不一定和AUTO_INCREMENT一块使用
2-13唯一约束UNIQUE KEY
主键约束可以保证数据的唯一性,但一个表只能有一个主键。唯一约束也可以保证记录的唯一性,唯一约束的字段可以为空值(NULL),每张数据表可以存在多个唯一约束
创建一个既有主键约束,又有唯一约束的数据表tb5CREATE TABLE tb5(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(20) NOT NULL UNIQUE KEY,age TINYINT UNSIGNED);敲回车,创建好了这个表
再查看下数据库的结构SHOW COLUMNS FORM tb5;
上面的id是自动赋值,所以不用赋值,所以只需要给username和age赋值 INSERT tb5(username,age) VALUES('TOM',22);
再写一次系统会提示错误,就不唯一了INSERT tb5(username,age) VALUES('TOM',22);因为username中已经存在了TOM了
2-14默认约束(加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');
看一下数据表的结构SHOW COLUMNS FROM tb6;可以发现sex字段存在默认值3
id有自动给的值,sex有默认的值,给username赋值为TOM,INSERT tb6(username) VALUES('TOM');
接下来查看记录SELECT * FROM tb6; 敲回车可以发现没有明确赋值的时候系统将默认值3赋给这个字段
2-15 总结
数据类型:字符型,整型,浮点型,日期时间型
数据表操作:插入记录(insert),查找数据(select)(数据表是数据库的重要组成部分,使其他对象的基础)
记录操作:创建数据表,约束的使用