SQL语句及查询关键字


MySQL

约束条件

1.unsigned  设置无符号
# create table t2(id int unsigned);

2.zerofill  零填充
# create table t4(id int(10) zerofill);

3.not null  非空
	不等于''
#  create table t6(id int not null);

4.default  默认值

5.unique  唯一
# 单列唯一
create table t7(id int,name varchar(16) unique);

# 多列唯一
create table t8(id int,host varchar(16),port int,unique(host,port));

6.primary key 主键
  auto_increment  为主键使用,自增,每次加1
  
 # 主键相当于非空且唯一,InnoDB规定一张表必须有一个主键
 #	主键查询速度快,本质也是一种索引
 create table t9(id int primary key auto_increment,name varchar(16));
 
 # 结论(默认创建格式)
 	id int primary key auto_increment
 	cid int primary key auto_increment
 	uid int primary key auto_increment

清空表数据

delete from t9; #  清空表数据,新建id继续增加
truncate table t9; # 清空表数据,id会被重置为1,推荐使用

binlog   恢复数据

SQL语句实现表关系

# 一对多
# 外键建在多的一方
# 先创建没有外键的表
create table dep(
	id int primary key auto_increment,
    name varchar(32),
    descript varchar(32)
)

create table userinfo(
	id int primary key auto_increment,
    username varchar(32),
    dep_id int,
    salary decimal(8,2),
    foreign key(dep_id) references dep(id)
)


# 多对多,需要创建第三张表,
create table book(
	id int primary key auto_increment,
    title varchar(16),
    price int
)
insert into book(title,price) values('丰乳肥臀',100);

create table author(
	id int primary key auto_increment,
    name varchar(16),
    phone int
)
insert into author(name,phone) values('莫言',123456);

create table book2author(
	id int primary key auto_increment,
    book_id int,
    author_id int,
    foreign key(book_id) references author(id)
    on update cascade   	# 级联更新
    on delete cascade,		# 级联删除
    
    foreign key(author_id) references book(id)
    on update cascade   
    on delete cascade
)
# 一对一
create table author_detail(
	id int primary key auto_increment,
    title varchar(16),
    price int
)
insert into author_detail(title,price) values('暖阳',100);

create table author_2(
	id int primary key auto_increment,
    name varchar(16),
    phone int,
    author_detail_id int unique,
    foreign key(author_detail_id) references author_detail(id)
    on update cascade
    on delete cascade
)
insert into author_2(name,phone,author_detail_id) values('wuc',123,1);

聚合函数

分组之后频繁需要使用的
	max		最大值
    min		最小值
    sum		求和
    count	计数
    avg		平均值

查询关键字where

# 1.查询id大于等于3小于等于6的数据
select *  from emp where id between 3 and 6;  

# 2.查询薪资是20000或者18000或者17000的数据
select * from emp where salary in (20000,18000,17000);

# 3.查询姓名中带有字母o的员工姓名和薪资
select name,salary from emp where name like '%o%';

# 4.查询姓名由四个字符组成的员工姓名和薪资
select name,salary from emp where name like '____';
select name,salary from emp where char_length(name) =4;

# 5.查询id小于3或者大于6的数据
select *  from emp where id not between 3 and 6;

# 6.查询薪资不在20000,18000,17000范围的数据
select * from emp where salary not in (20000,18000,17000);

# 7.查询岗位描述为空的员工名与岗位名  针对null不能用等号,只能用is
select name,post from emp where post_comment is NULL;

查询关键字group by分组

分组
	将单个单个的个体按照指定的条件分成一个个整体
	
# 1.每个部门的最高薪资
select post,max(salary) from emp group by post;
# 2.每个部门的最低薪资
select post,min(salary) from emp group by post;
# 3.每个部门的平均薪资
select post,avg(salary) from emp group by post;
# 4.每个部门的人数
select post,count(id) from emp group by post;
# 5.每个部门的月工资总和
select post,sum(salary) from emp group by post;

# 别名
select post as '部门',sum(salary) as '总和' from emp group by post;

# 查询分组之后的部门名称和每个部门下所有的员工姓名
group_concat()  获取分组以外的字段数据 并且支持拼接操作
select post,group_concat(name) from emp group by post;
select post,group_concat(name,':',salary) from emp group by post;

concat()  未分组之前使用的拼接功能
select concat(name,':',sex) from emp;

concat_ws()
select concat_ws(':',name,sex,salary,age) from emp;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM