表的创建和操作
1、语法
create table <表明>(
<字段1><类型1>,
.....
<字段n><类型n>
key primary(主键列名)
key index_普通索引列名(普通索引列名)
)
2、创建表的实例
create table student( id int(4) not null , name char(20) not null, ege tinyint(2) not null defaut '0', dept varchar(16) defaut null );
3、产看表结构
方法一、
desc test.student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Sno | int(10) | NO | PRI | NULL | |
| Sname | char(16) | NO | MUL | NULL | |
| Ssex | char(2) | NO | | NULL | |
| Sege | tinyint(2) | NO | | 0 | |
| Sdept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
方法二、
show columns from test.student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Sno | int(10) | NO | PRI | NULL | |
| Sname | char(16) | NO | MUL | NULL | |
| Ssex | char(2) | NO | | NULL | |
| Sege | tinyint(2) | NO | | 0 | |
| Sdept | varchar(16) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
在表创建后如需在指定指定的位置在插入列
alter table student add Sgrade int(2) not null COMMENT'年级' after Sage;
如果是想将列插入到第一列则用first
root@leadchina 03:38:16->alter table student add qq int(10) first;
删除对应的列(字段)——Sgrade
root@leadchina 07:22:59->alter table student drop column Sgrade;
4、索引的创建
索引是优化mysql的重要手段之一,查询数据库,按主键查询最快,每个表只能有一个主键列,但是可有多可普通索引列,索引列可以加快查询速度,但是也不是越多越好,索引也是会暂用mysql资源。
1)、再创建表的时候创建索引
create table test.student1( id int(4) not null AUTO_INCREMENT, name char(20) not null, age tinyint(2) not null, dept varchar(16) default null, primary key(id), key index_name(name) );
2)建表后再添加主键
当我们在建表后发现没有主键,可以同过alter 进行添加主键
alter table student change id id int primary key auto_increment;
3)、建表后添加普通的索引
语法: alter table 表名 add index index_列名(列名)
alter table test.student add index index_name(name);
方法二:
create index index_name on test.student(name);
索引的删除
alter table test.studnet drop index index_name;
对列的前N个字符进行创建索引
create index index_dept on test.student(dept(8));
4)、创建联合索引, 方便多列一起查询。
语法:
create index index_列1名_列2名_..._列n on 表名(列1名。列2名···n)
create index index_name_dept on test.student(name.dept);
删除:
drop index index_列1名_列2名_..._列n on 表名
drop index index_name_dept on test.student;
联合索引前N个字符
create index index_name_dept on test.student(name(8),dept(7));
注意 :联合索引index(a,b,c)仅可以a,ab,abc三个查询条件可以走联合索引,前缀生效特性。
非主键的唯一索引的创建
create unique index index_name on test.student(name);
索引创建的规则:
1、要在表的列上创建索引;
2、索引会加快查询速度,但是会影响更新的速度;
3、索引不是越多越好,要在频繁使用查询的where后的条件上创建索引;
4、小表或者唯一值极少的列上不建索引,要在大表以及不同内容多的列上创建索引,
5、写多读少的数据库不建索引;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现