写这个mysql主要是最近写sql语句发现很生疏经常忘单词。这里统计一下以备日后查看。
表字段属性:
not null 非空设置字段是否可以为空。
primary key 主键每一个表都要有至少一个主键
foreign key 外键 设置字段时 FOREIGN KEY REFERENCES Persons(P_Id)
REFERENCES(参考文献)Persons(P_Id)外键参考的Persons表的P_Id字段。
设置外键后这个字段只能添加Persons(P_Id)值中存在的值。
composite key 组合键 一个表里设置两个主键共同来管理这个表,这里设置的是ip 和 primary;
create table t18( id int not null, server_name char(12) unique key comment '姓名', ip char(15) default '', port char(5) default '', primary key(ip,port) );
unique key 唯一值 不可以重复
auto_increment 自增
default 默认值
comment '这里写注释' 给表和字段设置注释
表字段增删改:
create 创建的关键字
alter 创建的关键字
add 添加一个新字段
alter table student add name varchar(65);
alter table 表名 add 字段名 字段属性;
drop 删除 alter table student drop ass ;
modify 修改表字段数据类型
alter table student modify name varchar(60);
change 修改表字段名字
alter table student change name title varchar(60);
插入表字段时设置插入位置:
first 把字段插入表的最前面
LAST 把字段插入表的最后面(默认就是最后面所以没***用)
after 把字段安置于指定列的后面。
ALTER TABLE 表明 ADD COLUMN 字段名 VARCHAR(10) after 表中的原有字段名 ;
select查询是用到的条件函数:
substring(your_string,start_position,length); 截取
截取一部分your_string字符串,从start_position开始,截取length长度
select substring('SAn Antonio ,TX',5,3)
substring_index(your_string,str,len)找出指定字符或者字符串前的所有内容。
select substring_index(字段名,',',1) from 表明;
right(your_string,len)获取字符串中最后的len个字符''
select right(字段名,1) from 表明;
uppre(your_string) 把整组字符串改为大写
lower(your_string) 把整组字符串改为小写
reverse(your_string) 反转字符串里的字符排序
lteim(your_string)和rteim(your_string) 清楚左侧和右侧多余的空格
length(your_string)返回字符串中的字符数量
distinct()去重查询,查出的数据是去重后的数据。
Select distinct(depart) from teacher
order by 字段 desc 排序默认升序desc倒叙
group by 字段名 分组
join 两表联查,内连接
select * from student join banji on student.id = banji.stu_id;
left join 左连接 以左边表为主表
right join 右连接 以右边表为主表
in() 在什么之中
select * from student id in(1,2,3,4)
not in() 不在什么之中
having 设置查询条件 和where意思相同;使用场景不同。
having子句可以让我们对通过聚合函数和分组函数处理后根据 聚合函数来进行排序。因为聚合函数不是表中真实存在的字段,所以无法用where来写。
显示每个地区的总人口数和总面积: select region,sum(population),sum(area) from bbc group by region 显示每个地区的总人口数和总面积,仅显示那些人口数量超过1000000的地区: select region,sum(population),sum(area) from bbc group by region having sum(population) > 1000000