表的介绍
数据库是有组织可共享的,持久存储和管理数据的容器。
数据表是由表名、表中的字段和表的记录三个部分组成的表。
数据存放在表里,表存放于库里.
表的创建用到的数据类型:
1.整形:
1.tinyint(1字节) 有符号值:-128到127(-2^7~2^-1)
无符号值:0到255(0到2^8-1)
2.smallint(2字节) 有符号值:-32768到32767(-2^15到2^15-1)
无符号值:0到65535(0到2^24-1)
3.mediumint(3字节) 有符号值:-8388608到8388607(-2^23到2^23-1)
无符号值:0到16777215(0到2^24-1)
4.int(4字节) 有符号值:-2147483648到2147483647(-2^31到2^31-1)
无符号值:0到16777215(0到2^32-1)
5.bigint(8字节) 有符号值:-9223372036854775808到9223372036854775807(-2^63到2^63-1)
无符号值:0到18446744073709551615(0到2^64-1)
2.浮点数(小数):
1.float[(M,D)] -3.402823466E+38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38
M是数字总位数,D是小数点后面的位数,如果M和D被忽略,
根据硬件允许的限制来保存值。
精度浮点数精确到大约7位小数位。
2.double[(M,D)] -1.7976931348623157+308到-2.2250738585072014E-308,0和2.2250738585072014E-308到1.7976931348623157+308
3.real[(M,D)]
4.decimal[(M,D)]
3.时间日期型:
year 1字节 '2017'
time 3字节 '12:29:59'
date 3字节 '2020-01-01'
datetime 8字节 '2020-01-01 12:29:59'
timestamp 4字节 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC
4.字符窜类型:
char 固定长度字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
varchar 可变长度字符串,如varchar(3),填充'ab'时就会存储'ab'
文本:
tinytext 占L+1个字节,L<2^8
text 占L+1个字节,L<2^16
mediumtext 占L+1个字节,L<2^24
longtext 占L+1个字节,L<2^32
enum('value1', 'value2', ...) 1或2个字节,取决于枚举值的个数(最多65535个值)
set('value1', 'value2', ...) 1,2,3,4或8个字节,取决于set成员的数目(最多64个成员)
5.二进制:
(blob可以用来保存数据量很大的二进制数据,如图片等)
tinyblob,blob,mediumblob,longblob
(以下也是二进制类型)
binary,varbinary,bit
常用7种约束:
unsigned: 无符号约束,指定数字不能为负数
-- 数字(整数,小数)
not null: 非空约束,指定某列不为空 必须做数据插入
auto_increment: 自动增长约束,序号自动加一
-- 注意:必须与主键组合使用
-- 默认情况下,初始值为1,每次增量为1
unique: 唯一约束,指定某列和几列组合的数据不能重复
-- 唯一约束可以保证记录的唯一性
-- 唯一约束的字段可以为空值(NULL)
-- 每张数据表可以存储多个唯一约束
primary key: 主键约束,指定某列的数据不能重复、唯一
-- 每张数据表只能存在一个主键
-- 主键保证记录的唯一性
-- 主键自动为NOT NULL
foreign key: 外键,指定该列记录属于主表中的一条记录,参照另一条数据
default 0: 当插入数据的时候,如果字段没有数据,则自动插入默认值 set和enum不允许设置默认值
表的操作
create table 1706a_class(
num int auto_increment primary key,
name varchar(20) unique not null,
gender enum(“男”,“女”,“保密”),
age tinyint unsigned,
hobby char(30),
high decimal(5,2)
);
create table +表名(
列名 数据类型 约束,
列名 数据类型 约束,
列名 数据类型 约束,
列名 数据类型 约束 最后一列不加,
);
select * from 表名 查看表中数据 *表示选区全部的列
插入数据 insert into +表名(表中的字段,,)value(字段所对应的记录,,);
insert into 1706a_class (num,name,gender,age,hobby,high)value(2,‘呵呵’,1,19,‘呵呵’,166.50);
insert 表名 values();
删除表内数据,用 delete。格式为:
delete from 表名 where 删除条件;
delete from 表名 删除表中所有数据
alter table 表名 drop 列名 删除一列
drop table 表明 删除表
清除表内数据,保存表结构,用 truncate。格式为:
truncate table 表名;
show tables; 查看数据库中存在什么表
describe(desc) 表名; 显示表的结构
update 表名 set 字段名=‘新内容’ + where条件 修改添加表中数据
alter table 表明 add column 列名 varchar(45) not null(类型和约束); 添加一列(默认最后一列)
alter table 表名 add (column) 要添加的列名 varchar(45) not null(类型和约束) after 指定列名; 添加在指定的一列后面
alter table 表名 add column 添加的列明 varchar(45) not null first; 添加到第一列
rename table 原表名 to 新名; 修改表名
show create table 表名 查看创表语句(结构)
alert table 表名 change 列名 新列名 数据类型及约束; 修改列名
alter table 表名 modify 列名 类型
select 要列出的列名 from 列所在的表名 order by 排序的列名; 排序 正序
select 要列出的列名 from 列所在的表名 order by 排序的列名 desc; 排序 倒叙 limit 几到几 显示前几个
avg(列名) 求平均值
select * from 表名 where 列名 where like ‘%’; 查找匹配字符串所在记录