SQL基本操作——表操作

建表的过程就是声明列的过程。

表与字段是密不可分的。

一、新增数据表

  1. create table [if not exists] 表名(
  2. 字段名字 数据类型,
  3. 字段名字 数据类型 -- 最后一行不需要逗号
  4. )[表选项];
  5.  
  6. if not exists:如果表名不存在,那么就创建,否则不执行创建代码,起到检查功能的作用
  7. 表选项:控制表的表现
  8. 字符集:charset/character set 具体字符集; --保证表中数据存储的字符集
  9. 校对集:collate 具体校对集; --表采用数据比较的方式
  10. 存储引擎:engine 具体的存储引擎(innodbmyisam)

举例:

  1. -- 创建表
  2. create table if not exists student(
  3. name varchar(10),
  4. gender varchar(10),
  5. number varchar(10),
  6. age int
  7. )charset utf8;

任何一个表的设计都必须指定数据库

方案1:显示的指定表所述的数据库

  crate table 数据库名.表名;     --将当前数据表创建到指定的数据库下

  1. -- 创建表
  2. create table if not exists mydatabase.student( -- 显示的将student表放到mydatabase数据库下
  3. name varchar(10),
  4. gender varchar(10),
  5. number varchar(10),
  6. age int
  7. )charset utf8;

方案2:隐式的指定表所属的数据库:先进入到某个数据库环境,然后这样创建的表自动归属到某个指定的数据库

  进入数据库环境:use 数据库名字;

  1. -- 先进入数据库,再创建表
  2. use mydatabase;
  3. create table class(
  4. name varchar(10),
  5. room varchar(10)
  6. )charset utf8;

当创建数据表的SQL指令执行之后,到底发生了什么?

  1. 指定数据库下已经存在对应的表
  2. 在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系)

二、查看数据表

数据库能查看的方式,表都可以查看。

  • 查看所有表:show tables;

  

  • 查看部分表:模糊匹配     show tables like 'pattern';  --pattern是匹配模式,  %:表示匹配多个字符, _:表示匹配单个字符

    1. -- 查看以s结尾的表(尽量不要用这种方式查,效率低)
    2. show tables like '%s';

  • 查看表的创建语句:show create table 表名;

    1. -- 查看表的创建语句
    2. show create table student\g -- \g等价于;
    3. show create table student\G -- \G表示将查到的结构旋转90度变成纵向

  • 查看表结构:查看表中的字段信息       desc/describe/show columns from 表名;

    1. -- 查看表结构
    2. desc class;
    3. describe class;
    4. show columns from class;

    注:上图最后一行写错了,将form改成from

三、修改数据表

表本身存在,还包括字段,所以表的修改分为两个部分:修改表本身和修改字段

修改表本身:

表本身可以修改:表名和表选项

  修改表名:rename table 老表名 to 新表名;

  1. -- 重命名:student -> my_student(取数据库名字前两个字母)
  2. rename table student to my_student;

    

  修改表选项:字符集,校对集和存储引擎  alter table 表名 表选项 [=] 值;

  1. show create table my_student;
  2.  
  3. -- 修改表选项:比如字符集
  4. alter table my_student charset =GBK;
  5.  
  6. show create table my_student;

  

  

修改字段:

  字段操作很多:新增,修改,重名,删除

  • 新增字段    alter table 表名 add [column] 字段名 数据类型 [列属性] [位置]

    位置:字段名可以存放表中的任意位置,存放方式分为两类,第一类为first:第一个位置,第二类为after:在哪个字段之后(after 字段名;默认的是在最后一个字段之后)

  1. use mydatabase;
  2. desc my_student;
  3. -- 给学生表增加ID放到第一个位置
  4. alter table my_student
  5. add column id int
  6. first; -- mysql会自动寻找分号作为语句结束符
  7. desc my_student;

  

  • 修改字段(通常修改属性或者数据类型)         alter table 表名 modify 字段名 数据类型 [属性] [位置];

  1. desc my_student;
  2. -- 将学生表中的number学号字段变成固定长度,且放到第二位(id之后)
  3. alter table my_student
  4. modify number char(10)
  5. after id;
  6. desc my_student;

  

  • 重名字段  alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];

    1. desc my_student;
    2. -- 修改学生表中的gender字段为sex
    3. alter table my_student
    4. change gender sex varchar(10);
    5. desc my_student;

  • 删除字段    alter 表名 drop 字段名;

    1. desc my_student;
    2. -- 删除学生表中的年龄字段(age)
    3. alter table my_student
    4. drop age;
    5. desc my_student;

    小心:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)

注:varchar

VARCHAR(M)是一种比CHAR更加灵活的数据类型,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。因此,对于那些难以估计确切长度的数据对象来说,使用VARCHAR数据类型更加明智。

四、删除数据表

drop table 表名1,表名2,...;   -- 可以一次性删除多张表(删除数据库没有这种方式;尽量别用这种一次性删表的方式太危险)

  1. show tables;
  2. -- 删除数据表
  3. drop table class;
  4. show tables;

当删除数据表指令执行之后发生了什么?

  1. 在表空间中,没有了指定的表(数据也没有了)
  2. 在数据对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除

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

注意:删除有危险,操作需谨慎(不可逆)

数据库_7_SQL基本操作——表操作的更多相关文章

  1. 第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  2. 数据库 MySQL 之 表操作、存储引擎

    数据库 MySQL 之 表操作.存储引擎 浏览目录 创建(复制) 删除 修改 查询 存储引擎介绍 一.创建(复制) 1.语法: 1 2 3 4 5 CREATE TABLE 表名(     字段名1 ...

  3. 数据库_6_SQL基本操作——库操作

    SQL基本操作——库操作:对数据库的增删改查 一.新增数据库(创建) 基本语法:create database 数据库名字 [库选项]: 库选项用来约束数据库,分为两个选项:1.字符集设定:chars ...

  4. MyBatis实现Mysql数据库分库分表操作和总结

    前言 作为一个数据库,作为数据库中的一张表,随着用户的增多随着时间的推移,总有一天,数据量会大到一个难以处理的地步.这时仅仅一张表的数据就已经超过了千万,无论是查询还是修改,对于它的操作都会很耗时,这 ...

  5. django连接mysql数据库以及建表操作

    django连接mysql数据库需要在project同名的目录下面的__init__.py里面加入下面的东西 import pymysql pymysql.install_as_MySQLdb() 找 ...

  6. django系列5.2--ORM数据库的单表操作

    单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import models def add_book(request): ''' 添加表记录 : ...

  7. 数据库_8_SQL基本操作——数据操作

    SQL基本操作——数据操作 一.新增数据(两种方案) 方案1: 给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据,都需要使用引号(建议是 ...

  8. 模型层之ORM、数据库和单表操作

    一.ORM简介 ORM是“对象-关系-映射”的简称,一般指持久化数据和实体对象的映射 1.1 什么是“持久化” 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中( ...

  9. JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法

    黑马程序员 我们知道,在设计一个Javabean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对 ...

随机推荐

  1. 7 二分搜索树的原理与Java源码实现

    1 折半查找法 了解二叉查找树之前,先来看看折半查找法,也叫二分查找法 在一个有序的整数数组中(假如是从小到大排序的),如果查找某个元素,返回元素的索引. 如下: int[] arr = new in ...

  2. 怎样让自定义Cell的图片和文本自适应高度

    Let's do it! 首先创建一个Model类 包括一个图片名称属性 还有文字内容属性 #import <Foundation/Foundation.h> @interface Mod ...

  3. HDU1501【简单DP】

    题意: 从a串和b串中顺序地取出是否能组成c串: 思路: dp[i][j] 代表从a串中取了i个,b串中取了j个的情况: #include <bits/stdc++.h> using na ...

  4. Lightoj1002 【搜索】

    题意: 两两之间的点的花费就是:从A点到B的一条路上某段的最大权值:给一个起点,求到各起点的最小花费. 思路: 一开始的思路: n不是才500,我先建个图,然后DFS一下,不对,是2500: 如果直接 ...

  5. HDU 3729【二分匹配】

    题意: 给出n个同学的排名,代表每个排名在哪个区间,要求保证最多人说的是实话,并在此前提下求一个说真话人最大字典序. 思路: 最后感觉就是点去填区间,点和区间建个边,然后跑个二分图,然后sort一发. ...

  6. 我叫mt3.0更新公告

    1.增加卡牌: (1)炮姐,种族:牛头人,职业:元素萨满,可在任务中使用万能碎片兑换,最多兑换5张: (2)娘子,种族:德莱尼人,职业:治疗萨满,进化材料为死亡视察者: 详情点击查看>>& ...

  7. PostgreSQL - N''和::bpchar

    N''的效果和::bpchar效果类似,都表示定长字符串.比如下边的sql: select n'233' as num; select '233'::bpchar as num; select '23 ...

  8. [题解](单调队列)luogu_P2216_BZOJ_1047 理想的正方形

    调了半天,发现这个写法确实极易错...... 对于每列都维护一个单调队列记录最大最小值,这样一次操作后就把最大最小值压到了一维, 然后再对这一行维护一个单调队列,每次更新ans值,然而对于数组和队列下 ...

  9. 管理现有数据库-web系统

    1 需求 现有的业务数据需要经常被展示,所以选择django作为展示工具.只需要使用django自带的admin app,然后对现有数据库进行建模就可以搞定. 2 代码 settings: DATAB ...

  10. Django (二) url 和 模板

    1. URL URL地址说明: 使用url给视图函数传参数 在url配置中将正则部分小括号括起来.比如: url(r'^time/plus/(\d{1,2})/$', views.hours_ahea ...