一 库操作

1、创建数据库

    1.1 语法

      CREATE DATABASE 数据库名 charset utf8;

    1.2 数据库命名规则

      可以由字母、数字、下划线、@、#、$

      区分大小写

      唯一性

      不能使用关键字如 create select

      不能单独使用数字

      最长128位

      # 基本上跟python或者js的命名规则一样

2、数据库相关操作

  1. 1 查看数据库
  2. show databases;
  3. show create database db1;
  4. select database();
  5.  
  6. 2 选择数据库
  7. USE 数据库名
  8.  
  9. 3 删除数据库
  10. DROP DATABASE 数据库名;
  11.  
  12. 4 修改数据库
  13. alter database db1 charset utf8;

二 表操作

1、存储引擎

    存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制,关于存储引擎的介绍看参考博客:https://www.cnblogs.com/clschao/articles/9953550.html

  2、表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,表中的一条记录有对应的标题,称为表的字段

    

    第一行的id、name2、age是字段,,其余的,一行内容称为一条记录。

  3、创建表

    3.1 建表语法  

  1. #语法:
  2. create table 表名(
  3. 字段名1 类型[(宽度) 约束条件],
  4. 字段名2 类型[(宽度) 约束条件],
  5. 字段名3 类型[(宽度) 约束条件]
  6. );
  7.  
  8. #注意:
  9. 1. 在同一张表中,字段名是不能相同
  10. 2. 宽度和约束条件可选、非必须,宽度指的就是字段长度约束,例如:char(10)里面的10
  11. 3. 字段名和类型是必须的

示例:

  1. mysql> create database db1 charset utf8;
  2.  
  3. mysql> use db1;
  4.  
  5. mysql> create table t1(
  6. -> id int,
  7. -> name varchar(50),
  8. -> sex enum('male','female'),
  9. -> age int(3)
  10. -> );
  11.  
  12. mysql> show tables; #查看db1库下所有表名
  13.  
  14. mysql> desc t1;
  15. +-------+-----------------------+------+-----+---------+-------+
  16. | Field | Type | Null | Key | Default | Extra |
  17. +-------+-----------------------+------+-----+---------+-------+
  18. | id | int(11) | YES | | NULL | |
  19. | name | varchar(50) | YES | | NULL | |
  20. | sex | enum('male','female') | YES | | NULL | |
  21. | age | int(3) | YES | | NULL | |
  22. +-------+-----------------------+------+-----+---------+-------+

插入数据:

  1. mysql> insert into t1 values
  2. -> (1,'chao',18,'male'),
  3. -> (2,'sb',81,'female')
  4. -> ;
  5. mysql> select * from t1;
  6. +------+------+------+--------+
  7. | id | name | age | sex |
  8. +------+------+------+--------+
  9. | 1 | chao | 18 | male |
  10. | 2 | sb | 81 | female |
  11. +------+------+------+--------+
  12.  
  13. mysql> insert into t1(id) values
  14. -> (3),
  15. -> (4);
  16. mysql> select * from t1;
  17. +------+------+------+--------+
  18. | id | name | age | sex |
  19. +------+------+------+--------+
  20. | 1 | chao | 18 | male |
  21. | 2 | sb | 81 | female |
  22. | 3 | NULL | NULL | NULL |

4、查看表结构

  1. mysql> describe t1; #查看表结构,可简写为:desc 表名
  2. +-------+-----------------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +-------+-----------------------+------+-----+---------+-------+
  5. | id | int(11) | YES | | NULL | |
  6. | name | varchar(50) | YES | | NULL | |
  7. | sex | enum('male','female') | YES | | NULL | |
  8. | age | int(3) | YES | | NULL | |
  9. +-------+-----------------------+------+-----+---------+-------+
  10.  
  11. mysql> show create table t1\G; #查看表详细结构,可加\G

5、MySQL的基础数据类型

 关于数据类型,看我这篇博客:https://www.cnblogs.com/clschao/articles/9959559.html

6、表的完整性约束

 关于表的完整性约束,看我这篇博客:https://www.cnblogs.com/clschao/articles/9968396.html

    

7、修改表 alter table

  1. 语法:
  2. 1. 修改表名
  3. ALTER TABLE 表名
  4. RENAME 新表名;
  5.  
  6. 2. 增加字段
  7. ALTER TABLE 表名
  8. ADD 字段名 数据类型 [完整性约束条件…], #注意这里可以通过逗号来分割,一下添加多个约束条件
  9. ADD 字段名 数据类型 [完整性约束条件…];
  10. ALTER TABLE 表名
  11. ADD 字段名 数据类型 [完整性约束条件…] FIRST; #添加这个字段的时候,把它放到第一个字段位置去。
  12. ALTER TABLE 表名
  13. ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;#after是放到后的这个字段的后面去了,我们通过一个first和一个after就可以将新添加的字段放到表的任意字段位置了。
  14.  
  15. 3. 删除字段
  16. ALTER TABLE 表名
  17. DROP 字段名;
  18.  
  19. 4. 修改字段
  20. ALTER TABLE 表名
  21. MODIFY 字段名 数据类型 [完整性约束条件…];
  22. ALTER TABLE 表名
  23. CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…]; #change比modify还多了个改名字的功能,这一句是只改了一个字段名
  24. ALTER TABLE 表名
  25. CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];#这一句除了改了字段名,还改了数据类型、完整性约束等等的内容
  26. 复制代码

注意一点:在mysql里面表名是不区分大小写的,如果你将一个名为t1的(小写的t1)改名为一个T1(大写的T1),是完全没用的,因为在数据库里面表名都是小写的。

详细示例:

  1. 示例:
  2. 1. 修改存储引擎
  3. mysql> alter table service
  4. -> engine=innodb;
  5.  
  6. 2. 添加字段
  7. mysql> alter table student10
  8. -> add name varchar(20) not null,
  9. -> add age int(3) not null default 22;
  10.  
  11. mysql> alter table student10
  12. -> add stu_num varchar(10) not null after name; //添加name字段之后
  13.  
  14. mysql> alter table student10
  15. -> add sex enum('male','female') default 'male' first; //添加到最前面
  16.  
  17. 3. 删除字段
  18. mysql> alter table student10
  19. -> drop sex;
  20.  
  21. mysql> alter table service
  22. -> drop mac;
  23.  
  24. 4. 修改字段类型modify
  25. mysql> alter table student10
  26. -> modify age int(3);
  27. mysql> alter table student10
  28. -> modify id int(11) not null primary key auto_increment; //修改为主键
  29.  
  30. 5. 增加约束(针对已有的主键增加auto_increment
  31. mysql> alter table student10 modify id int(11) not null primary key auto_increment;
  32. ERROR 1068 (42000): Multiple primary key defined
  33.  
  34. mysql> alter table student10 modify id int(11) not null auto_increment;
  35. Query OK, 0 rows affected (0.01 sec)
  36. Records: 0 Duplicates: 0 Warnings: 0
  37.  
  38. 6. 对已经存在的表增加复合主键
  39. mysql> alter table service2
  40. -> add primary key(host_ip,port);
  41.  
  42. 7. 增加主键
  43. mysql> alter table student1
  44. -> modify name varchar(10) not null primary key;
  45.  
  46. 8. 增加主键和自动增长
  47. mysql> alter table student1
  48. -> modify id int not null primary key auto_increment;
  49.  
  50. 9. 删除主键
  51. a. 删除自增约束
  52. mysql> alter table student10 modify id int(11) not null;
  53.  
  54. b. 删除主键
  55. mysql> alter table student10
  56. -> drop primary key;

  8、复制表

    我们通过select查询出来的结果既有表结构又有表记录(数据),我们在重新创建一个和它一样的表的时候,之前用create还需要自己将表结构写好,然后把那些数据插入到新建的表中,很麻烦,那么我们就可以直接使用mysql提供的复制表的功能:(复制表用的很少昂,了解一下就行了)

    语法:复制表结构+记录 (key不会复制: 主键、外键和索引)
    mysql> create table new_service select * from service;#这句话的意思是你从service表里面查询出来的数据不要在屏幕上打印了,你直接给我的新表new_service

只复制表结构,不要数据
    mysql> select * from service where 1=2; //条件为假,查不到任何记录,所以我们可以通过它来只复制表结构,看下面一句
    Empty set (0.00 sec)
    mysql> create table new1_service select * from service where 1=2;  #筛选数据的条件为假,那么只拿到了结构,并没有查询出任何的数据,所以做到了只复制表结构
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> create table t4 like employees; #获取用like可以达到这个效果

更多关于数据库的操作:请参考

https://www.cnblogs.com/clschao/articles/10065275.html?tdsourcetag=s_pcqq_aiomsg

MySQL之库表详细操作的更多相关文章

  1. MySQL的库表详细操作

    MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...

  2. MySQL库表详细操作

    昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 ...

  3. mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)

    字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...

  4. MySQL行(记录)的详细操作一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理

    MySQL行(记录)的详细操作 阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: ...

  5. day 37 MySQL行(记录)的详细操作

    MySQL行(记录)的详细操作   阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操 ...

  6. MySQL的库、表详细操作

    本节目录 一.库操作 二.表操作 三.行操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 可以由字母.数字. ...

  7. mysql 之库, 表的简易操作

    一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8;   charset uft8  可选项 1.2 数据库命名规范: 可以由字母.数字.下划 ...

  8. Mysql数据库 的库表简易操作

    一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8;   charset uft8  可选项 1.2 数据库命名规范: 可以由字母.数字.下划 ...

  9. mysql对库,表,数据类型的操作以及完整性约束

    一丶对库的操作 求救语法: help create database; 1.创建数据库 CREATE DATABASE 数据库名 charset utf8; 2.数据库的命名规则: 可以由字母.数字. ...

随机推荐

  1. 比较好的MySQL索引原理

    MySQL索引原理及慢查询优化 - 美团技术团队 https://tech.meituan.com/2014/06/30/mysql-index.html

  2. (zhuan) LSTM Neural Network for Time Series Prediction

    LSTM Neural Network for Time Series Prediction Wed 21st Dec 2016 Neural Networks these days are the ...

  3. Latex: 减少图与文字之间的空白间隙

    参考: Remove space after figure and before text Latex: 减少图与文字之间的空白间隙 论文中图与文字之间的空白间隙过大,导致排版不大美观.解决方法是在\ ...

  4. 五、IO编程

    input/output:输入.输出 Stream(流):Input Stream就是数据从外面(磁盘.网络)流进内存,Output Stream就是数据从内存流到外面去.(流:相当于管道) 由于CP ...

  5. Gym 100247A The Power of the Dark Side

    https://vjudge.net/problem/Gym-100247A 题意: 每个绝地武士有三个能力值a,b,c,两个武士决斗时谁有两个值大于对方谁就是胜者(a和a比,b和b比,c和c比,所有 ...

  6. HDU 5844 LCM Walk(数学逆推)

    http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...

  7. javascript知识体系

    JAVASCRIPT 篇 0.基础语法 javascript基础语法包括:变量定义.数据类型.循环.选择.内置对象等. 数据类型有string,number,boolean,null,undefine ...

  8. springmvc后台接前端的参数,数组,集合,复杂对象等

    springmvc后台接前端的参数,数组,集合,复杂对象等 参考地址:https://blog.csdn.net/feicongcong/article/details/54705933  常用的几种 ...

  9. P3853 [TJOI2007]路标设置

    传送门 思路: 类似于数列分段的二分查找答案.设目前的 mid 是一个最小的“空旷指数”,那么在 sum 数组(路标数组)里每两个相邻间的路标距离一定要小于等于目前的 mid , 如果大于,那就必须使 ...

  10. Django2.2安装

    Django2.2安装 https://media.djangoproject.com/releases/2.2/Django-2.2.tar.gz 解压 tar -zvxf Django-2.2.t ...