一、数据类型:创建表的时候,给字段指定数据类型
整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT
作用:用于存储用户的年龄、游戏的Level、经验值等
[root@localhost ~]# mysql -u root -p'QianFeng@123'
create database cloud; //创建库
use cloud;
create table t1(id int(20),age int(10)); //表名为t1
insert(插入数据) into t1 values(1,18);
浮点数类型
浮点数类型:FLOAT DOUBLE
作用:用于存储用户的身高、体重、薪水等
float(5,3) 5宽度 3精度
注意:
宽度不算小数点
宽度-精度=点前
案例:
[root@localhost ~]# mysql -u root -p'QianFeng@123'
create database cloud; //创建库
use cloud;
insert into t2 values(2.22)
select * from t2; // 查看表
字符串类型
CHAR系列 CHAR VARCHAR
TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT
BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB
BINARY系列 BINARY VARBINARY
枚举类型
枚举类型:枚举列可以把一些不重复的字符串存储成一个预定义的集合
时间和日期类型
timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。
二、表操作
语法:
create table 表名(自定义)(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)[存储引擎 字符集];
==在同一张表中,字段名是不能相同
==宽度和约束条件可选
==字段名和类型是必须的
创建库表:
mysql> CREATE DATABASE school; //创建数据库school
mysql> use school;
mysql> create table student1(
id int,
name varchar(50),
sex enum('m','f'),
age int
);
Query OK, 0 rows affected (0.03 sec)
查看库:
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| student1 |
+------------------+
1 row in set (0.00 sec)
插入语法:
insert into 表名(字段1,字段2...) values(字段值列表...);
插入数据:
mysql> insert into student1(id,name,sex,age) values(1,'xingdia','m','26');
查看表结构:
mysql> desc student1;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| sex | enum('m','f') | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
查询数据:
mysql> select id,name,sex,age from student1; //查询表中所有字段的值
Empty set (0.00 sec)
mysql> select * from student1; /查询表中所有字段的值
Empty set (0.00 sec)
mysql> select name,age from student1; //查询表中指定字段的值
Empty set (0.00 sec)
扩展插入:
mysql> insert into student1 values (1,'xingdian','m',33),(2,'alice','m',20),(3,'jack','m',40); //顺序插入
Query OK, 3 rows affected (0.14 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into student1(name,age) values ('zhuzhu',10),('gougou',20); //只向指定的字段插入值
Query OK, 2 rows affected (0.12 sec)
Records: 2 Duplicates: 0 Warnings: 0
查看表的创建过程
删除表
三、修改表
修改表名
alter table 旧表名 rename 新表名;
增加字段:
alter table 表名 add 字段名 数据类型 [约束条件], add 字段 数据类型 [约束条件] ;
first after 指定字段位置
删除字段:
alter table 表名 drop 字段名
修改字段:
修改原有字段的数据类型和约束条件
alter table 表名 modify 字段名 新类型 [新约束条件]
修改原有字段的名字(数据类型和约束条件)
alter table 表名 change 旧字段名 新字段名
修改数据库存储引擎
alter table 表名 engine=新引擎;
四、约束条件
1.作用
用于保证数据的完整性和一致性
2.约束条件
PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录,不可以为空 UNIQUE + NOT NULL
FOREIGN KEY (FK) 标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
NOT NULL 标识该字段不能为空
UNIQUE KEY (UK) 标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT 为该字段设置默认值
注意:
是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值
字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值
unique 保证唯一性
自增影响删主键
9.复制表
复制表结构+记录 (key不会复制: 主键、外键和索引)复制表结构/记录+表结构,不会将Key复制
mysql> create table new_service select * from service;
只复制表结构
mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
可以复制主键,只复制表结构
mysql> create table t4 like employees;
(不可复制数据)