数据库_7_SQL基本操作——表操作
SQL基本操作——表操作
建表的过程就是声明列的过程。
表与字段是密不可分的。
一、新增数据表
create table [if not exists] 表名(
字段名字 数据类型,
字段名字 数据类型 -- 最后一行不需要逗号
)[表选项]; if not exists:如果表名不存在,那么就创建,否则不执行创建代码,起到检查功能的作用
表选项:控制表的表现
字符集:charset/character set 具体字符集; --保证表中数据存储的字符集
校对集:collate 具体校对集; --表采用数据比较的方式
存储引擎:engine 具体的存储引擎(innodb和myisam)
举例:
-- 创建表
create table if not exists student(
name varchar(10),
gender varchar(10),
number varchar(10),
age int
)charset utf8;

任何一个表的设计都必须指定数据库
方案1:显示的指定表所述的数据库
crate table 数据库名.表名; --将当前数据表创建到指定的数据库下
-- 创建表
create table if not exists mydatabase.student( -- 显示的将student表放到mydatabase数据库下
name varchar(10),
gender varchar(10),
number varchar(10),
age int
)charset utf8;

方案2:隐式的指定表所属的数据库:先进入到某个数据库环境,然后这样创建的表自动归属到某个指定的数据库
进入数据库环境:use 数据库名字;
-- 先进入数据库,再创建表
use mydatabase;
create table class(
name varchar(10),
room varchar(10)
)charset utf8;

当创建数据表的SQL指令执行之后,到底发生了什么?
- 指定数据库下已经存在对应的表
- 在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系)

二、查看数据表
数据库能查看的方式,表都可以查看。
查看所有表:show tables;

查看部分表:模糊匹配 show tables like 'pattern'; --pattern是匹配模式, %:表示匹配多个字符, _:表示匹配单个字符
-- 查看以s结尾的表(尽量不要用这种方式查,效率低)
show tables like '%s';
查看表的创建语句:show create table 表名;
-- 查看表的创建语句
show create table student\g -- \g等价于;
show create table student\G -- \G表示将查到的结构旋转90度变成纵向
查看表结构:查看表中的字段信息 desc/describe/show columns from 表名;
-- 查看表结构
desc class;
describe class;
show columns from class;
注:上图最后一行写错了,将form改成from

三、修改数据表
表本身存在,还包括字段,所以表的修改分为两个部分:修改表本身和修改字段
修改表本身:
表本身可以修改:表名和表选项
修改表名:rename table 老表名 to 新表名;
-- 重命名:student表 -> my_student(取数据库名字前两个字母)
rename table student to my_student;

修改表选项:字符集,校对集和存储引擎 alter table 表名 表选项 [=] 值;
show create table my_student; -- 修改表选项:比如字符集
alter table my_student charset =GBK; show create table my_student;


修改字段:
字段操作很多:新增,修改,重名,删除
新增字段 alter table 表名 add [column] 字段名 数据类型 [列属性] [位置]
位置:字段名可以存放表中的任意位置,存放方式分为两类,第一类为first:第一个位置,第二类为after:在哪个字段之后(after 字段名;默认的是在最后一个字段之后)
use mydatabase;
desc my_student;
-- 给学生表增加ID放到第一个位置
alter table my_student
add column id int
first; -- mysql会自动寻找分号作为语句结束符
desc my_student;

修改字段(通常修改属性或者数据类型) alter table 表名 modify 字段名 数据类型 [属性] [位置];
desc my_student;
-- 将学生表中的number学号字段变成固定长度,且放到第二位(id之后)
alter table my_student
modify number char(10)
after id;
desc my_student;

重名字段 alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];
desc my_student;
-- 修改学生表中的gender字段为sex
alter table my_student
change gender sex varchar(10);
desc my_student;
删除字段 alter 表名 drop 字段名;
desc my_student;
-- 删除学生表中的年龄字段(age)
alter table my_student
drop age;
desc my_student;
小心:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)
注:varchar
VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。
四、删除数据表
drop table 表名1,表名2,...; -- 可以一次性删除多张表(删除数据库没有这种方式;尽量别用这种一次性删表的方式太危险)
show tables;
-- 删除数据表
drop table class;
show tables;

当删除数据表指令执行之后发生了什么?
- 在表空间中,没有了指定的表(数据也没有了)
- 在数据对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除

删除数据表指令执行之后:

注意:删除有危险,操作需谨慎(不可逆)
数据库_7_SQL基本操作——表操作的更多相关文章
- 第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
- 数据库 MySQL 之 表操作、存储引擎
数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名( 字段名1 ...
- 数据库_6_SQL基本操作——库操作
SQL基本操作——库操作:对数据库的增删改查 一.新增数据库(创建) 基本语法:create database 数据库名字 [库选项]: 库选项用来约束数据库,分为两个选项:1.字符集设定:chars ...
- MyBatis实现Mysql数据库分库分表操作和总结
前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这 ...
- django连接mysql数据库以及建表操作
django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...
- django系列5.2--ORM数据库的单表操作
单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import models def add_book(request): ''' 添加表记录 : ...
- 数据库_8_SQL基本操作——数据操作
SQL基本操作——数据操作 一.新增数据(两种方案) 方案1: 给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据,都需要使用引号(建议是 ...
- 模型层之ORM、数据库和单表操作
一.ORM简介 ORM是“对象-关系-映射”的简称,一般指持久化数据和实体对象的映射 1.1 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中( ...
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
黑马程序员 我们知道,在设计一个Javabean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对 ...
随机推荐
- war,jar包是啥
http://www.blogjava.net/athrunwang/archive/2011/11/18/364191.html 经常听开发说war,jar,car,这些是个什么东东呢? .jar ...
- HDU - 1019 - Least Common Multiple - 质因数分解
http://acm.hdu.edu.cn/showproblem.php?pid=1019 LCM即各数各质因数的最大值,搞个map乱弄一下就可以了. #include<bits/stdc++ ...
- 笔记-JavaWeb学习之旅11
请求转发:一种在服务器内部的资源跳转方式 使用步骤 1.通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) ...
- 48个国际音标-/iː/
/iː/ 是单元音前元音,是个长元音. ***ee,ea,ie,ei*** 1)张开你的嘴巴,好像你在微笑,露出你的牙齿,嘴唇向两边伸开,成扁平形. 2)将舌前部向硬腭尽量抬起.舌头轻微接触下齿背部. ...
- 初入Three.js 第一章
一.什么是WebGL? 1.WebGL是在浏览器中实现三维效果的一套规范. 二.什么是threejs? 1.你将它理解成three + js就可以了.three表示3D的意思,js表示javascri ...
- luoguP2408不同子串个数
传送门 可以知道每一个子串都是后缀的前缀,那么对于第\(i\)小的后缀的贡献就可以表示为n-sa[i]+1 然而会存在重复的子串,注意height数组的定义,对于sa[i-1]和sa[i],只有hei ...
- python 基础(十三) time模块
日期和时间 一.time模块 import time 时间戳: 时间戳是指格林威治时间1970年1月1日0时0分0秒至现在的秒数 s(秒).ms(毫秒).μs(微秒).ns(纳秒), 其中:1 ...
- Linux (一)
Linux目录结构 / :根目录.位于分层文件系统的最顶层,可以说它包含了所有的目录和文件 /bin :系统可执行目录 /sbin :系统管理员的可执行文件 /boot :存放用于启动linux系统的 ...
- mysql 巧用存储过程
根据距离排序 CREATE DEFINER=`ln` PROCEDURE `Proc_4`(IN `lon1` double,IN `lat1` double,IN `PageStart` int,I ...
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) C
Misha and Vanya have played several table tennis sets. Each set consists of several serves, each ser ...