数据库02
操作表
增
create table 表名 (
字段名1 列约束 [可选的参数],
字段名2 列约束 [可选的参数],
……..
字段名3 列约束 [可选的参数] 最后一行不要加逗号
)charset = UTF-8;
既然在键的是后要给表添加字段的数据类型,和约束条件,那么有哪些数据类型和约束条件呢
数据类型
-
数字类型:
数字类型分为整型和浮点型:
-
整型
在MySQL中的整数类型可以分为5中,分别是tinyint、smallint、mediumint、int、bigint,不同的整数型所对应的字节大小和取值范围都不同,我们用的最多的就是int类型
-
浮点型
float:不一定非常精确
decimal:非常精确的数字,decimal (m,n) m:指数字的个数,n:指小数点位数
double:双精度浮点数,意思就是小数点后面两位
float和double都是小数点后面两位,但是取值范围double比float要大
-
-
日期和时间
YEAR:YYYY(1901/2155)
DATE:YYYY-MM-DD(1000-01-01/9999-12-31)
TIME :HH:MM:SS('-838:59:59'/'838:59:59')
DATETIME :YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
TIMESTAMP :YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037 年某时)
我们可以使用current_date()或者now()来获取当前时间
-
枚举:列出所有的选项
-
字符串
char:定长的字符串,如char(4)无论输入多少个(少于4个),始终占4字节的空间
varchar:不定长的字符串,varchar(4),所占字节为输入实际字节长度加1
约束条件
- 主键约束(primary key):为了快速查找表中的某条记录可以通过设置主键来完成,它是唯一标识表中的记录
- 非空约束(not null):让字段不能为空,如果为空则会报错
- 唯一约束(unique):保证字段唯一
- 默认约束(default):给字段设置一个默认值
- 自增(auto_increment):必须要约束一个整数类型,从1开始自动增加
删
删除可以删除表也可以删除字段,不过在正常的开发中,一般不会使用删除表的操作
删除表的命令:drop table 表名;
删除字段的命令:alter table 表名 drop 字段名;
查
查表无非就是查看数据库里所有的表,和查看表的结构
查看库里所有的表:show tables;
查看表结构:desc 表名;
查看建表时的语句:show create table 表名;
改
对表的修改可以修改表名,可以修改字段
修改表名:alter table 旧表名 rename 新表名;
修改字段:alter table 表名 modify 字段名 数据类型 [约束条件];
增加字段:
-
**ALTER TABLE 表名 ADD 字段名 列类型 [可选的参数] FIRST; **first 表示添加在第一个位置
-
**ALTER TABLE 表名 ADD 字段名 列类型 [可选的参数] AFTER 字段名; **表示在选定字段后面添加
-
ALTER TABLE 表名 ADD 字段名 列类型 [约束条件];什么都不加默认添加在最后
操作表数据
对数据表的操作也无非增删查改,我们首先来了解单表的增删查改
增
增加就是向数据表中插入数据
语法:insert into 表名 (字段1, 字段2) values (值1,'值2');
如果不写插入的字段,就默认全部,我们可以通过这种方法插入单条数据,可以插入多条数据,所以就不赘述其他的操作命令了
删
按条件删除命令:delete from 表名 where 条件;
删除所有: delete from 表名;
删除所有还有一种方式truncate
命令:truncate 表名;
那么delete 和 truncate 有什么区别呢
-
delete之后,插入数据从上一次主键自增加1开始, truncate则是从1开始
-
delete删除, 是一行一行的删除, truncate:全选删除 truncate删除的速度是高于delete的
改
在修改时你要知道要修改的数据在哪,所以要有一个where条件
命令:update 表名 set 字段1 = 新值1 ,字段2 = 新值2 where 条件;
但是当你没有添加where条件时,它会默认修改全部。
查
对于表中的数据而言,查数据才是最为重要的,我们首先了解单表查询
在MySQL中查询数据的基本语句是select语句,在select语句中可以根据自己对数据的需求使用不用的查询条件
最基本的查询命令:**select * | {字段1,字段2···} from 表名 **
*代表表中的所有字段,这个命令的意思是查询指定字段的所有数据
带关系运算符的查询
在select语句中,最常用的是使用where 子句来进行条件的过滤
命令:select 列1, 列2 from 表名 where 条件;
条件运算符就是我们最常用的一些数学符号
= 等于、<> 和 != 不等于、< 小于 、> 大于、<=小于等于、>=大于等于
带between and 关键字的查询
如果我们想要取一定范围内的值就可以使用between and 进行判断
如我们要查找id在30-40之间的数据就可以使用如下命令
命令:select 列1, 列2 from 表名 where id between 30 and 40;
要注意的是,between and 的取值范围是闭区间
带in关键字的查询
in的作用是用于判断某个字段的值是在指定的集合,也可以在前面加个not 表示不再指定的集合
命令:select 列1, 列2 from 表名 where 字段名 [not] in (元素1,元素2,···);
空值查询
在数据表中,有些字段的值可能为空,如果要查空值,就要使用is null来进行判断
命令:select 列1, 列2 from 表名 where 字段名 is [not] null;
加上not 表示不为空
distinct 关键字查询
DISTINCT表示去重,如果表中的数据有重复,我们就可以使用distinct过滤重复的字段
命令:select distinct 字段名 from 表名;
like关键字模糊查询
查询以x开头: mysql> select * from t66 where name like 'x%';
以x结尾:mysql> select * from t66 where name like '%x';
包含x : mysql> select * from t66 where name like '%x%';