二、数据类型与操作数据表

2-1基本内容回顾

默认端口 3306

默认超级用户名 root

创建数据库 CREATE DATABASE

修改数据库 ALTER DATABASE

删除数据库 DROP DATABASE

 

2-2MySQL数据类型之整型

①整型 ,整型的存储范围分有符号位和无符号位两种,一般无符号位是有符号位的两倍。

②选择数据类型要根据实际数据的大小,选择合适的数据类型有利于数据的优化。

100以内可以使用      tiny int            (非常小的整数)    字节数---1;

3w以内可以使用       small int         (小的整数)            字节数---2

800w以内可以使用  medium int    (中等的整数)          字节数---3   

21y以内可以使用      int                 (常用整数)              字节数---4

超过21y使用        big int                (大整数)                 字节数---8

https://img-blog.csdn.net/20160704155320481

 

2-3MySQL数据类型之浮点型

float(单精度浮点):float[(M,D)] m是数字总位数,d是小数点后面的位数,如果md被省略,会根据硬件允许的限制来保存值 double(双进度浮点):double[(M,D)]一般是float存储范围的十倍,C语言默认显示15位小数。 FLOAT[(M总位数,D小数点后位数)]M>=D。单精度浮点,保留小数点后7位,C语言默认显示6位小数。

https://img-blog.csdn.net/20160704160200307

 

2-4MySQL数据类型之日期

1、YEAR:1970至2069

2、TIME:-838:59:59至838:59:59

3、DATE:1000-1-1至9999-12-31

4、DATETIME: 1000-1-1 00:00:00至9999-12-31 23:59:59

5、TIMESTAMP存储范围:1970-1-1 00:00:00到2037-12-31 23:59:59 真正的开发过程中,日期时间型用的比较少(会牵扯到跨时区的问题)

https://img-blog.csdn.net/20160704160824188

 

2-5MySQL数据类型之字符串

1、CHAR(M):定长类型,比如CHAR(5),如果我们只赋值abc,那么系统会自动在后面补两个空格0——255

2、VARCHAR(M):变长类型,L+1个字节,其中L<=M且0<=M0——65535

3、ENUM('value1','value2'...)枚举值,提供几个选项,选择其中一个,如:性别('男','女','保密')

4、SET('value1','value2'...) 最多64个成员,可以任选里面其中几个,任意排列组合

  1. CHAR(n)和VARCHAR(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。
  2. 同时CHAR和VARCHAR最大的区别就在于CHAR不管实际value都会占用n个字符的空间,而VARCHAR只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。
  3. 超过CHAR和VARCHAR的n设置后,字符串会被截断。
  4. CHAR的上限为255字节,VARCHAR的上限65535字节,TEXT的上限为65535。
  5. CHAR在存储的时候会截断尾部的空格,VARCHAR和TEXT不会。
  6. VARCHAR会使用1-3个字节来存储长度,TEXT不会。
  7. 字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。

 

2-6MySQL创建数据表

一、数据表

1、数据表(或表)是数据库最重要的组成部分之一,是其他对象的基础

2、表是一个二维表,行称为【记录】,列称为【字段】

二、创建数据表

1、首先打开数据库(数据库要存在): USE 数据库名称

2、创建数据表:CREATE TABLE [IF NOT EXISTS] table_name( column_name(列名称) data_type(列类型), .... ) 举例—— CREATE TABLE tb1( username VARCHAR(20), userage TINYINT UNSIGNED, salary FLOAT(8,2) UNSIGNED, ); UNSIGNED 无符号

 

2-7MySQL查看数据表

查看数据表:(查看选择的数据库的表)

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr];(可以用来查看其他数据库的表列表)

例: SHOW TABLES;//查看当前选择的数据库的所有表

SHOW TABLES FROM TEST;//查看TEST数据库中的所有表,当前选择数据库位置不变。

SELECT DATABASE();//查看当前选择的数据库

 

2-8查看数据表结构

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr] SHOW TABLES; //查看当前数据库中的表

SHOW TABLES FROM mysql;

FROM之后,当前数据库不会发生改变

SHOW COLUMNS FROM tb1; 查看tb1中的数据表结构

 

2-9记录的插入与查找

INSERT tbl_name [字段(colume),...] VALUES(val,...);

省略字段后,values(记录内容必须按照表列顺序也就是字段顺序以逗号分隔,且插入内容一个不能少);

若不省略字段(可部分省略,省略部分记录自动为空),values(记录内容按照字段插入内容,写几个字段插入几个内容);

记录查找(多表查原理笛卡尔积): SELECT ecpr(表达式),...FROM tbl_name;

----------------------------

插入记录:INSERT [INTO] tab_name [(col_name,...)] VALUES(val,) 若是省略插入的字段名,则不能省略要插入所以字段。INSERT tb1 VALUES('TOM',25,6782.12) 当我们仅仅是为某一些字段赋值时,就必须将字段写上。

INSERT tb1(username,salary) VALUES('jOIN',3398.98)

================================

完整插入记录:INSERT tb1 VALUES(Tom,25,7863.25);

部分插入记录:INSERT tb1(username,salary) VALUES('John',4500.69);

星号是字段的过滤:SELECT * FROM tb1;

---------------------------------

插入记录: INSERT [INTO] tbl_name [(col_name,...)] VALUES (val,...);

查找记录: SELECT expr,... FROM tbl_name;

*字段的过滤,全部记录

 

2-10空值与非空

NULL,字段值可以为空 NOT NULL, 字段值禁止为空

CREATE TABLE tb2( username VARCHAR(20) NOT NULL,age TINYINT UNSIGNE NULL);

INSERT tb2 VALUES('tom',NULL);可行

INSERT tb2 VALUES(NULL,32); 报错

 

2-11自动编号

1.自动编号 AUTO_INCREMENT 自动编号,且必须与主键配合使用

2.自动编号AUTO_INCREMENT作用 1、自动编号:保证记录的唯一性 2、类型必须为整型(可以是FLOAT(5,0)等,小数点后必须为0),必须和主键PRIMARY KEY组合使用 3、默认情况下,起始值为1,每次的增量为1 默认情况下,起始值为1, 每次增量为1.

CREATE TABLE tb3( id SMALLINT UNSIGNED AUTO_INCREMENT, username VARCHAR(30) NOT NULL); //报错,自动增量字段必须设置成主键

 

2-12初涉主键约束

主键可以写为PRIMARY KEY,也可以写成KEY 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL,也就是说必须要为主键赋值。

但如果主键选择了AUTO_INCREMENT,那么不需要手动赋值。

auto_increment必须和主键primary key一起使用,但是主键primary key不一定要和auto_increment一块使用

(主键的字段是可以赋值的,但不能赋相同的值)

 

2-13初涉唯一约束

(1)唯一约束

(2)唯一约束可以保证记录的唯一性

(3)唯一约束的字段可以为空值(NULL)

(4)每张数据表可以存在多个唯一约束

 

2-14初涉默认约束

建表时 sex enum('1','2','3') default '3' 表示当sex没有赋值时,默认值为3

 

2-15总结

  • 数据类型
  • 整型 (tinyint smallint mediumint int bigint) 浮点型 (FLOAT{[M,D]},DOUBLE{[M,D]})M:总位数,D:小数点后位数 日期 (YEAR DATE TIME TIMESTEMP) 字符型 (CHAR VARCHAR TEXT)
  • DOS 界面连接数据库 mysql -u用户名 -p密码 -hHOST 显示数据库 SHOW DATABASES;
  • 显示表结构 SHOW COLUMNS FROM table;
  • 显示所有表 SHOW TABLES; 进入数据库 USE 数据库;
  • 创建数据库 CREATE DATABASE 库名;
  • 创建表 CREATE TABLE 表名(字段及信息);
  • 插入数据 INSERT INTO table []VALUES();[]为空说明插入全部的值 查询数据 SELECT 字段 FROM table WHERE 条件
  • 自增自动编号 auto_increment
  • 主键约束 primary key(有auto_increment的一定是主键,主键不一定有auto_increment)
  • 唯一约束 unique key
  • 默认约束 default 当没有赋值时则自动添加默认值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值