创建表 User后加
)character set 字符集
collate 检验规则
engine 存储引擎; MyISAM engine
创建字段后
comment ’ 注释’
查看表结构:
修改表的结构: 添加,删除,修改字段等
alter table tablename add …
alter table tablename modify… 这是修改表的数据类型,不是修改名字
alter table tablename drop (column)
alter table users add assects varchar(100) comment ‘图片路径’ after birthday
插入新字段后对原来表中的数据没有影响
alter table user modify name varchar(20)
将name的数据长度修改到60
alter table user drop name ;
删除字段name
alter table user rename yonghu;
将表名修改为yonghu
alter table user name chang name xingming varchar(10);
将name列修改为姓名. ----新的字段需要完整定义
drop table 表名
删除表
数据类型
1,数值类型
bit(M) M是指定位数 范围1~64
tinyint[unsigned] 带符号是-128~127 无符号范围是0~255 默认有序号
int [unsinged] 带符号是-2^15 到 2^15-1 无符号是2^16-1
float [(M,D)] [unsigned] M指定显示长度,D指定小数位数,占用四字节
decimal(M,D) [unsigned] M指定长度,D表示小数点的位数
2.文本,二进制类型
char(size) 固定长度的字符串 最大255
varchar(size) 可变长度字符串,最大长度65535
text 大文本,不支持全文索引,不支持默认值
3.时间日期
date yyyy-mm-dd
datetime yyyy-mm-dd hh:mm:ss
timestamp 时间戳-添加数据时,时间戳自动补上当前时间
4.String类型
enum类型 最多65535个 enum是一个字符串对象,其值来自表创建时在列规定中显示枚举的一列值
set类型 最多64个 是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值.
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字节数是
65532。
如何选择定长或变长字符串?
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。
表的约束
保证数据的合法性
null/notnull, default, comment, zerofill, primary key, auto_increment, unique key
default 默认值
列描述
comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。
通过desc查看不到注释信息 ,只能通过show create table 表名\G
zerofill,
alter table tt change a a int(5) unsigned zerofill;
如果宽度小于设定的宽度(这里设置的是
5),自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。
主键
主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表最多只能有一个主键,主键所在的列通常是整数类型
当表创建好之后,可以再次追加主键
id int unsigned,
course char(10) comment ‘课程代码’,
score tinyint unsigned default 60 comment ‘成绩’,
primary key(id, course) – id和course为复合主键
alter table 表名 add primary key (字段列表)
alter table 表名 drop primary key;
自增长
auto_increment:
自增长的的特点
*
任何一个字段要做自增长,前提本身是一个索引(key一栏有值)
*
自增长字段必须是整数
*
一张表最多只能有一个自增长
索引:**
在关系数据库中,索引是一种单独的,物理的数据对表中一列或多列的值进行排序的一种存储结构, 它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容
唯一键
一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表只能有一个主键;唯一键就可以解决表中有多个字段需要唯一性约束的问题.
唯一键允许为空,而且可以多个为空,空字段不做唯一性比较
外键
外键用于定义主表和从表之间的关系: 外键约束主要定义在从表上, 主表则必须是有主键约束或unique约束. ?
当定义外键后,要求外键列数据必须在主表的主键列存在或为null.
表的增删改查
CRUD Create, Retrieve(取回), Update, Delete
create
insert into 表名 values(XXX,XXX);
插入的主键,和唯一键冲突
duplicate(完全一样)
更新操作
insert into 表名 on duplicate key update column =value;
替换
主键或者唯一键没有冲突, 则之间插入
主键或者唯一键有冲突,则删除后再插入
replace into 表名 values(XXX,XXX);
1.
Retrieve
select
*
进行全列查询 1,查询列越多,意味着需要传输的数据量越大 2,可能会影响到索引的使用
*
指定列的顺序不需要按照定义表的顺序来
*
表达式包含字段 比如: yingyuchengji + 10 那这列所有数据都加上10
*
为查询结果指定别名 AS
*
去重 distinct select distinct shuxue from exam_list
where 条件
1.
, >=, <, <= 大于 大于等于 小于 小于等于
2.
= 等于 null 不安全 例如 null = null 结果是 null
3.
<=> 也是等于 但null安全 null<=>null 的结果是true(1)
4.
!= <> 不等于
5.
between a0 and a1, 范围匹配 都是闭合的 如果values [a0, a1] a0<=values<=a1 则返回 true(1)
6.
in(option…) 是选项里的任意一个 则返回 true
7.
is null 是null
8.
is not null 不是null
9.
like 模糊匹配. %表示任意多个(包括0个)任意字符, _ (下划线)表示任意一个字符
逻辑运算符
1.
and
2.
or
3.
not 条件为true 返回结果为 false
结果排序
----ASC 为升序(从小到大) 默认排序是ASC
----DESC 为降序 (从大到小)
语句为:
SELECT … FROM table_name [WHERE…] ORDER BY column [ASC|DESC];
注意: 没有 ORDER BY自居的查询, 返回的顺序是未定义的, 不能依赖这个顺序
筛选分页结果
语法
从0开始,筛选n条结果
SELECT … FROM table_name [WHERE…] [ORDER BY ] LIMIT n;
从 s 开始, 筛选 n 条结果
SELECT … FROM table_name [WHERE…] [ORDER BY ] LIMIT s, n;
从s开始, 筛选n条结果,比第二种用法更明确
SELECT … FROM table_name [WHERE…] [ORDER BY ] LIMIT N OFFSET S;
SAHNG 未完待续…