10.19 数据库 DDL增强

本文详细介绍了SQL的各种操作,包括修改表名、更改字段、添加和删除列、调整数据类型以及约束管理。讲解了唯一约束、非空约束、主键自增、外键的概念及实现方式。同时,展示了如何通过WHERE子句进行条件筛选,以及使用GROUP BY和聚合函数进行数据统计。此外,还提到了HAVING过滤、UNION操作以及HAVING子句在查询中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#-修改表名1--alter table表名rename新表名;

ALTER table test01 RENAME student;

#- 更改字段-alter table表名change列名 新列名数据类型;

alter table student CHANGE  age  bbub  int;s


# change 修改数据类型

alter table student change bbub bbub int(16);


#-添加列-alter table表名add列名类型;

alter table student add a VARCHAR(10);


#a-删除列-lter table表名drop列名;

alter table student drop a;


# -modify 更改新的列数据类型-alter table表名modify列名新数据类型;

ALTER TABLE student modify bbub varchar(12);

约束

创建时新加,

唯一约束unique 

1.创建表格时

 #unique  
 create table student01(
 `name` varchar(5),
 id int UNIQUE  // 创建表格时添加唯一
 
 )

2.创建完表之后,添加约束

 #unique  
 create table student01(
 `name` varchar(5),
 id int 
 
 )
 alter TABLE student01 add unique(id)  //表创建完成使用alter 添加约束唯一

非空约束,默认约束

1.在创建时,添加约束

create table temp2(
    id int not null,
    `name` varchar(30) default  'abc',
    sex varchar(10) not null default '男');

2.创建完表之后,添加约束

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 '男';

主键自增 

1.在创建时添加约束

CREATE TABLE  t_order(
id int AUTO_INCREMENT PRIMARY KEY,
nun int,
addr VARCHAR(50),
name  VARCHAR(10),
phone CHAR(11)
)

2.创建完表之后,添加约束

alter table person5 modify id int auto_increment;
//设置自增起始值
alter table person6 auto_increment=10000; 

外键 /物理外键

创建表时添加外键约束


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)
);

2.创建完表之后,添加外键约束

alter table student1 add foreign key (teacher_id) references teacher1 (id);

定义: 一个表中的外键是另一个表中的主键

目中不允许加物理外键, 只加逻辑外键。

逻辑外键  : 就是不使用外键, 写上就行。

条件判断

#select 列限定 from 表限定 where A表达式 and B表达式;  and且,和,的意思,
select *from student WHERE name='张三' AND score>91;
#select 列限定 from 表限定 where A表达式 or B表达式; or 或的意思,
select *from student WHERE name='张三' or score>91;
#select 列限定 from 表限定 where 列名 between 值1 and 值2;  between and 在...之间
select *from student WHERE score BETWEEN 95 AND 1000;
#select 列限定 from 表限定 where 列名 in(值1,值2....);  in  写谁找谁
select *from student WHERE score in(98,97);   
#select 列限定 from 表限定 where 列名 like  '值'  % 匹配任意个数的任意字符
 _ 匹配单个任意字符
 ;
select *from student WHERE score like '_9%';
#order by  排序
#select 列限定 from 表限定 order by 列名 asc/desc; 
# desc 倒叙 asc 正序
SELECT * FROM student ORDER BY score DESC
#限制条数,通常和order by一起使用,因为我们使用排序之后,再去获取前几条数据,比较有价值,比如成绩前三名
#select 列限定 from 表限定 limit 条数;
select *FROM student LIMIT 1;
#select 列限定 from 表限定 limit 开始值(不包含) ,条数;
select *from student LIMIT 1,3;

group by 组函数

count(*) : 总条数

#count(*) : 总条数
select COUNT(*)as '总条数' FROM student WHERE id;

max(字段名) : 最大值

#max(字段名) : 最大值
select max(score) as'最大值' FROM student WHERE score;

min(字段名) : 最小值

#min(字段名) : 最小值
select min(score) as'最小值' FROM student WHERE score;

avg(字段名) : 平均值

#avg(字段名) : 平均值
select avg(score) as'平均值' FROM student WHERE score;

sum(字段名) : 总和

#sum(字段名) : 总和
select sum(score) as'总和' FROM student WHERE score;

常用函数:


#select  char_length('中国');返回字符个数。
select CHAR_LENGTH('武正旭');
#select  length('中国');返回字符所占字节数,MySQL中,一个UTF8编码的汉字占3个字节
SELECT length('中国')
#select  concat(  '=',  'a',  'b',  'c');拼接符
select CoNCAT_WS ('|','a','v','g');  第一个字符是分割符
#select   upper('abcd');转成大写
select upper('acas')
#select  lower('ABCD');转小写
select lower('ABCD')
#select  substring(  '系统信息类',  1,  3  );返回  系统信。第2个参数
select SUBSTRING('欢乐麻将',1,2);

Having    过滤

having:表限定>行限定>列限定

having  可以使行限定 最后执行

union 去重

union all 不去重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值