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个成员,可以任选里面其中几个,任意排列组合
- CHAR(n)和VARCHAR(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。
- 同时CHAR和VARCHAR最大的区别就在于CHAR不管实际value都会占用n个字符的空间,而VARCHAR只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。
- 超过CHAR和VARCHAR的n设置后,字符串会被截断。
- CHAR的上限为255字节,VARCHAR的上限65535字节,TEXT的上限为65535。
- CHAR在存储的时候会截断尾部的空格,VARCHAR和TEXT不会。
- VARCHAR会使用1-3个字节来存储长度,TEXT不会。
- 字符是指计算机中使用的字母、数字、字和符号,包括: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 当没有赋值时则自动添加默认值