约束
限制用户输入的的数据
????NULL和NOT NULL
限制字段是否可以为空
mysql根据null或者not null自动设置默认值
查询pass为NULL的记录
????DEFAULT
字段的默认值约束
????auto_increment
只能修饰int字段,表明是自动增长列,每次在上一个值的基础上加1
????索引
用来加快搜索速度
给stocks创建symbol列的索引名称为sym
index修饰符可以为多个字段添加索引
可以创建联合(复合)索引
如果给已经存在的表,添加索引
create index 索引名称 on 表名(字段名,…);
create index username on sysusers(uname);
对于blob、TEXT字段,也可以强制性地指定字符的个数来为它添加索引
create index synopsis on books(synopsis(100));
????删除索引
drop index 索引名 on 表名
????UNIQUE索引
被UNIQUE(唯一)所修饰的字段,不能输入重复的值
不能插入
UNIQUE修饰的字段可以为NULL
添加唯一性索引
alter table Stundet
add unique index(Sno,Cno)
????主键
唯一标识一行数据
是not null 和 unique的
可以建立复合主键
create table firewall
(
host varchar(50) not null,
port int not null,
access enum(‘allow’,‘deny’) not null,
primary key(host,port)
#复合主键
)
????创建表
修改表结构
添加列
alter table Stundet add column Sremarks varchar(400)
alter table tbWork add column col1 varchar(50);
修改字段类型
alter table tbWork modify Did int
修改列名(col1—>col2)
alter table tbWork change col1 col2 varchar(50);
删除主键约束:
alter table 表名 drop primary key;
删除外键约束:
alter table 表名 drop foreign key 外键(区分大小写);
????复制表
注意:create table …select结构不能从原表中复制键,需要手工创建
复制表结构和数据
复制表结构
临时表
create temporary table 表名
临时表,仅仅存在于mysql的会话期内,当客户关闭了与mysql服务器的连接时,这种表会被自动删除,因为临时表是依赖于会话的,两个会话连接中使用名字相同的临时表是不冲突的。
????查询
获取5行数据(0,代表表中的第一行数据,5代表记录的行数)
选择列
查询条件
获取年月日
count
过滤重复数据
ike模糊查询(_代表一个字符,%代表任意个字符)
随机产生选取数据
分组
mysql中会显示每个分组中的第1条数据
cast
可以转换的类型是有限制的。这个类型可以是以下值其中的一个:
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
????连接查询
分为内连接(inner join)和外连接(outer join)
外连接:左连接、右连接
内连接:
外连接:
右连接:
right join 关键字右侧的表是主表,主表中的字段无论是否匹配,都必须全部显示出来
左连接:
left join 关键字左侧的表是主表,主表中的字段无论是否匹配,都必须全部显示出来
????视图
是由查询语句定义的
查询每个部门多少人