DDL基础与扩展
Alter:
更改表名
ALTER TABLE test01 RENAME test02;
ALTER TABLE test02 CHANGE name newname VARCHAR(255);
ALTER TABLE test02 ADD sex VARCHAR(255);
ALTER TABLE test02 DROP sex;
ALTER TABLE test02 MODIFY id VARCHAR(255);
ALTER DATABASE test CHARACTER SET utf8;
ALTER TABLE test02 CHARACTER SET utf8 COLLATE utf8_general_ci;
DDL增强
约束的分类
主键
主键通常用于唯一确定表中的一条记录,设置为主键的字段是不能为NULL并且不能重复的。
CREATE TABLE person1(
id int,
name varchar(255),
income decimal(18,2),
primary key(id,name)
);
CREATE TABLE person2(
id int primary key,
name varchar(255),
income decimal(18,2)
);
CREATE TABLE person3(
id int,
name varchar(255),
income decimal(18,2),
);
alter table person3 add primary key (id);
主键自增(auto_increment)
create table person4(
id int auto_increment,
name varchar(200),
primary key(id)
);
create table person5(
id int,
name varchar(200),
primary key(id)
);
alter table person5 modify id int auto_increment;
alter table person5 auto_increment=100;
外键
通过这个表中的外键,去找另一个表的主键,能找到主键就能根据主键找到对应的一行数据 常用于有关联关系的两个表中 外键列的值,必须是关联表中的已有主键值,也可以为空
create table teacher(
id int ,
name varchar(20),
primary key (id)
);
create table student (
id int ,
name varchar(20),
teacher_id int ,
primary key (id),
foreign key (teacher_id) references teacher(id)
);
注意 : 引用student中添加外键列,指向teacher表,所以必须先创建teacher表才行
create table student1 (
id int ,
name varchar(20),
teacher_id int,
primary key (id)
);
create table teacher1(
id int ,
name varchar(20),
primary key (id)
);
alter table student1 add foreign key (teacher_id) references teacher1(id);
唯一:unique
唯一约束是指定table的列或组合不能重复,保证数据的唯一性,不允许出现重复的值,但可以为多个null
create table temp (
id int ,
`name` varchar(20),
unique(id)
);
create table temp (
id int unique ,
`name` varchar(20)
);
create table temp1 (
id int ,
`name` varchar(20)
);
alter table temp1 add unique (id);
非空 (not null 与 default)
所有的类型的值都可以是null,包括int、float 等数据类型,设置为not null的字段,必须填入数据 经常和default一起使用,当不填写数据的时候,把默认值设置成指定的值
create table temp2(
id int not null,
`name` varchar(30) default 'abc',
sex varchar(10) not null default '男'
);
create table temp3(
id int,
`name` varchar(30) ,
sex varchar(10)
);
alter table temp3 modify id int not null ;
alter table temp3 modify name varchar(30) default 'abc';
alter table temp3 modify sex varchar(10) not null default '男';
条件判断
and:和
or:或
> , >= , < , <= ,<>,= > : 大于 < : 小于 >= : 大于等于 <= : 小于等于 = : 相等 <> : 不等于 注意 : = 和 <> 额外留意,和java中有所不同,java中判断相等用 == , 这里只用 = , java中判断不相等用 != , 这里使用 <>
between a and b:介于a和b之间,包括a和b
模糊查询 like
%匹配任意个数的任意字符 _匹配单个任意字符 如想查询_和%需要使用转义符\
order by 排序
select 列限定 from 表限定 order by 列名 asc/desc; Asc : 升序 Desc : 降序
limit
限制条数,通常和order by一起使用 语法 : select 列限定 from 表限定 limit 条数; select 列限定 from 表限定 limit 开始值(不包含) ,条数;
单表查询(组函数)
常用组函数: count(*) : 总条数
max(字段名) : 最大值
min(字段名) : 最小值
avg(字段名) : 平均值
sum(字段名) : 总和
group by
分组
having
过滤
|