1.MariaDB 数据类型
MariaDB数据类型可以分为数字,日期和时间以及字符串值。
使用数据类型的原则:够用就行, 尽量使用范围小的,而不用大的
常用的数据类型:
1.整数:int, bit(位,0和1 )
数值类型(常用)
2.小数:decimal #decimal(5,2) 五位数,保留两位小数
3.字符串:varchar, char
字符串
4.日期时间: date, time, datetime
日期时间类型
5.枚举类型(enum) :只能在制定好的选项中选择,enum('男','女','人妖','保密')再给该选项赋值的时候可以用1代表男,2代表女,3代表人妖,4代表保密,5以后就不可以了。
约束:
1.主键primary key:物理上存储的顺序;唯一性,不为空,关联外键,索引功能
2.非空not null:此字段不能为空,如果字段为空,整条数据都作废
3.唯一unique:此字段不允许重复
4.默认default:当不填写此值时会使用默认值,如果填写则已填写为准
5.外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。在范围小的表中设置外键。
6.auto_increment :自动增加
2. sql语句-增
显示当前时间:select now();
create table classes (id tinyint unsigned primary key,name varchar(10) ); #创建一个classes的表,里面有id和name字序。
desc classes; #查看classes表都有哪些字序
Field:定义
Type:类型
Null:是否为空字段
Key:是否有主键(PRI表示有主键)
Default:是否有默认值(null表示没有)
Extra:扩展
--创建student表 #--表示注释的意思
auto_increment #自动增加
MariaDB [testdb]> desc students;
show create table students; #查看表的创建
MyISAM与InnoDB区别:两种类型最主要的区别就是InnDB支持事务处理与外键和行级锁
添加字段:alter table 表名 add 列名 类型;
alter table students add birthday datetime; #在students表中添加birthday 类型为datetime
修改表-修改字段:不重命名版
alter table 表名 modify 列名 类型及约束;
alter table students modify birthday date; #在students表中将birthday的数据类型修改为date
修改表-修改字段:重命名版
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth datetime; #在students表中将birthday修改为birth,数据类型修改为datetime
修改表-删除字段
alter table 表名 drop 列名;
alter table students drop birth; #在students表中将birth数据删除
drop table 表名; #删除表
全列插入数据
insert into 表名 values(..)
主键字段 可以用0 null default 来站位:
在primary key并且 设置auto_incremen的数列中,不输入数据和输入0 null default 代表默认,也就是也就是说会递增
输出的值与show create table students;中的AUTO_INCREMENT=5相等,即输出5.
insert into students values (1,'孙','100','男',1,'250.23654'); #插入一行数据
select *from students; #查看students表中的所有数据,此操作工作中不使用,因为数据太多
insert into students values (0,'孙','100','男',1,'250.23654'); #id为0,则输出的id会递增,由AUTO_INCREMENT这个数值据据决定。
show create table students;
插入部分数据
部分插入一条数据
insert into students (name,age) values ('张三',88); #在students表中添加制定name,age的一条数据
部分插入(多条记录)
insert into students (name,age) values ('张三',88),('李四',70);
3. sql语句-删
物理删除
delete from 表名 where 条件
delete from students where cls_id=88; # 删除students表中cls_id=88的数据
删除所有数据:delete from students; #删除students表中的所有数据(一般不进行此操作)
show create table students;
delete from students; #清空数据后,AUTO_INCREMENT=5 这个数据不会清空减少。在事务中可以rollback。
truncate table students; #清空students表中所有的数据,包括AUTO_INCREMENT的数据。在事务中不可以rollback。
逻辑删除
用一条字段来表示 这条信息是否已经不能在使用了
给students表添加一个is_delete字段 bit 类型
alter table students add is_delete bit default 0;
4. sql语句-改
update 表名 set 列1=值1, 列2=值2... where 条件;
update students set age=100 where id=1;
update students set age=100,cls_id=77 where id=1;