1. 操作数据库

  C(Create 创建) R(Retrieve 查询) U(Update 更新) D(Delete 删除)

  (1) 查询数据库

    1) 查询所有数据库名称

    SHOW DATABASES;

    

    这里有一个注意的东西,一个Database对应数据目录中的一个实体文件夹,但是 information_schema 这个数据库却没有实体对应。它的用途是作为视图使用,描述数据库的表的信息、库的名称等等。

    2) 查询创建数据库的创建语句和字符集

    SHOW CREATE DATABASE 数据库名;

    

    虽然已经修改了数据库的默认编码方式为utf8mb4,但是已创建的数据库还是utf8。而这个mysql数据库则是Latin1,虽然也支持中文,但是最好还是改为utf8mb4。

  (2) 创建数据库

    1) 创建一个数据库

    CREATE DATABASE 数据库名;

    

    2) 带判断语句的创建数据库

    CREATE DATABASE IF NOT EXISTS 数据库名;
    -- 如果不存在数据库则创建,如果存在则不创建,不过是否创建了数据库都会返回Query OK

    

    3) 创建指定字符集的数据库

    CREATE DATABASE 数据库名 CHARACTER SET 字符集;

    

  (3) 修改数据库

    1) 修改数据库字符集

    ALTER DATABASE 数据库名 CHARACTER SET 字符集 COLLATE 排序规则;

    

    这里注意一下,修改字符集的时候最好要修改一下排序规则。而utf8mb4中有两种排序规则,一个是 utf8mb4_general_ci 一个是 utf8mb4_unicode_ci。因为utf8mb4_unicode_ci 的排序更精确一些,所以推荐使用 utf8mb4_unicode_ci 排序方式。

  (4) 删除数据库

    1) 直接删除(非常危险,尽量不要使用)

    DROP DATABASE 数据库名;

    

    2) 带判断的删除(以防引起错误)

    DROP DATABASE IF EXISTS 数据库名;

    

  (5) 使用数据库

    1) 查询当前使用中的数据库

    SELECT DATABASE();

    

    2) 进入数据库

    USE 数据库名();

    

    进入数据库以后如果想切换其他数据库,直接使用 USE 命令就可以。

2. 操作表

  (1)查询表

    1)查询数据库中有哪些表

    SHOW TABLES;

    

    2) 查询表结构

    DESC 表名;

    

    3) 查询表的字符集

    SHOW CREATE TABLE 表名;

  (2) 创建表

    1) 创建基础表

    CREATE TABLE 表名(
  列名 数据类型,
  列名 数据类型,
  列名 数据类型
    );

    

    2) 创建一个已有表结构相同的表

    CREATE TABLE 新表名 LIKE 旧表名;

    

  (3) 删除表

    1) 直接删除

    DROP TABLE 表名;

    

    2) 带判断的删除

    DROP TABLE IF EXISTS 表名;

    

  (4) 修改表

    1) 修改表名

    ALTER TABLE 表名 RENAME TO 新表名;

    

    2) 修改表字符集

    ALTER TABLE 表名 CONVERT TO CHARACTER SET 字符集 COLLATE 排序规则; 

    

    3) 添加列

    ALTER TABLE 表名 ADD 列名 数据类型;

    

    4) 修改列名和数据类型

    ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

    

    5) 修改列的数据类型

    ALTER TABLE 表名 MODIFY 列名 新数据类型;

    

    6) 删除列

    ALTER TABLE 表名 DROP 列名;

    

3. 约束

  约束是对表进行限定,保证数据的正确性、完整性和有效性。

  (1) 非空约束(NOT NULL)

    保证列数据增、删、改时不能为NULL空值。

  CREATE TABLE 表名(列名 数据类型 NOT NULL,列名 数据类型 NOT NULL);-- 建表时限定
  ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL; -- 现有表修改列为非空
  ALTER TABLE 表名 MODIFY 列名 数据类型; -- 删除非空限定

  (2) 唯一约束(UNIQUE)

    保证一列中的每个数据都是唯一的,不可重复。

    注意:唯一约束不能保证NULL值唯一;现有表设置唯一约束列时,列中不可有重复数据。

  CREATE TABLE 表名(列名 数据类型 NOT NULL,列名 数据类型 UNIQUE);-- 建表时添加唯一约束
  ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL; -- 现有表修改列为唯一约束
  ALTER TABLE 表名 DROP INDEX 列名; -- 删除列的索引,就删除了唯一约束

  (3) 主键约束(PRIMARY KEY)

    限定了列的数据非空且唯一;一张表中只能有一个列是主键,是表中的唯一标识。

    注意:现有表设置主键约束列时,列中不可有重复数据。

  CREATE TABLE 表名(列名 数据类型 NOT NULL,列名 数据类型 PRIMARY KEY); /*
    建表时添加主键约束 */
  ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY; -- 现有表修改列为主键约束
  ALTER TABLE 表名 DROP PRIMARY KEY; -- 删除表的主键,就删除了列的主键约束

  (4) 自动增长(AUTO_INCREMENT)

    在某一数值类型列使用,可以完成值的自动增长,也可手动设值。一般配合主键使用。

    注意:自动增长是跟随上一条数据的数值进行自动增长。如果一条数据都没有,则会从 1 开始。

  CREATE TABLE 表名(列名 数据类型 PRIMARY KEY AUTO_INCREMENT); /*
    建表时添加主键约束和自动增长 */
  ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT; -- 现有表修改为增加自动增长
  ALTER TABLE 表名 MODIFY 列名 数据类型; -- 删除列的自动增长,但不删除主键约束

  (5) 外键约束(FOREIGN KEY)

    将两个表的产生关联关系,防止误操作,便于查询,保证数据有效、正确、完整。

    外键对应主表的主键,故外键应设置到从表上,而且需要先建立主表再建立从表。

    主键和外键的关系是一对多,比如主键是部门表编号,外键就是员工表中的部门编号。

    注意:根据现有表创建外键约束,需要满足约束要求,把从表的一列作为外键,和主键匹配。

      除NULL空值以外,如果外键有主键没有的数据,就无法创建或者修改。

  CREATE TABLE 从表名(外键 数据类型,CONSTRAINT 外键名 FOREIGN KEY (外键) 
    REFERENCES 主表名(主表列名)); /* 创建表时创建关联 */
  ALTER TABLE 从表名 DROP FOREIGN KEY 外键名; -- 删除外键
  ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键) REFERENCES 主表名(主表列名); /*
    现有从表创建关联 */

  (6) 级联

    将两个通过外键约束的表,一次性修改两个表的主键和外键数据。

    级联更新是主键数据修改时,外键跟着修改;级联删除是主键数据删除,外键数据跟着删除。

    注意:级联虽然很方便,但是效率低、风险大,在大系统中使用这两种级联要慎重。

    ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键) REFERENCES 主表名(主表列名)
        ON UPDATE CASCADE; /* 现有从表创建关联并且设置级联更新 */
    ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键) REFERENCES 主表名(主表列名)
        ON UPDATE CASCADE ON DELETE CASCADE; /* 现有从表创建关联并且设置级联更新和级联删除 */

DLL:操作数据库和表的更多相关文章

  1. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)

    一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...

  2. MySQL操作数据库和表的常用命令新手教程

    1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库 mysql> crea ...

  3. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)

    上篇文章我们介绍了如何利用DataSet 和 DataAdaper对象来对单张表进行操作. 本文我们将介绍如何进行跨表操作. 我们通过具体例子方式进行演示,例子涉及到三张表. 1)student表(学 ...

  4. mysql基础_操作数据库以及表

    1.数据库的操作 create database 数据库名:#一般创建方式 create database 数据库名 show databases;#查看所有数据 drop database 数据库名 ...

  5. python操作数据库-数据表

    数据表: 数据类型: 帮助的三种形式: 在cmd中输入: help 要帮助的主题词,或 ? 要帮助的主题词 或  \h 要帮助的主题词 . 数据表的创建: CREATE database IF NOT ...

  6. MySQL操作数据库和表的基本语句(DDL)

    1.创建数据库: CREATE DATABASE 数据库名; eg.CREATE DATABASE test_ddl;2.创建表 CREATE TABLE 表名(列名 数据类型 约束,...); eg ...

  7. MySQL操作数据库和表的基本语句(DDL

    1.创建数据库: CREATE DATABASE 数据库名; eg.CREATE DATABASE test_ddl;122.创建表 CREATE TABLE 表名(列名 数据类型 约束,...); ...

  8. 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库

    MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...

  9. 【MySQL】对数据库和表的增删改查

    数据库的基本概念 数据库的英文单词: DataBase 简称 : DB 什么是数据库? 用于存储和管理数据的仓库. 数据库的特点: 持久化存储数据的.其实数据库就是一个文件系统 方便存储和管理数据 使 ...

随机推荐

  1. Laravel with 查询指定的字段(非复制的哦)

    问题: 在with里面指定查询字段,结果是null. 在模型里面指定查询字段,结果是null. 解决办法: 在查询指定字段的时候要顺带着查询关联的外键,例: // user 表 id name // ...

  2. FlowPortal BPM多汇报线的设置及使用

    1.在组织结构中设置多汇报线 2.流程中使用汇报线 3.流程节点上使用汇报线 流程节点默认启用流程中指定的汇报线,若流程中的某个节点需要启用特殊的汇报线,可通过设置节点业务属性实现.

  3. 配置Hadoop,hive,spark,hbase ————待整理

    五一一天在家搭建好了集群,要上班了来不及整理,待下周周末有时间好好整理整理一个完整的搭建hadoop生态圈的集群的系列 若出现license information(license not accep ...

  4. vim调试Shell脚本: unexpected EOF while looking for matching

    往往在编写脚本完后测试,出现错误需要调试,vim 是一种强大的文本编辑器,对调试也很有帮助.如果指定用不同的颜色显示某些错误,通过配置 .vimrc 文件就会替您完成大部分调试工作. 小柏在测试脚本时 ...

  5. Computer Vision_33_SIFT:Evaluation of Interest Point Detectors——2000

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  6. IDEA光标跟随原因是jdk载入的问题BUG 修正 需要I安装最新版本1.8JDK 1.9之后的不清楚 谨慎

    解决方法是 选择jdk本地版本 重启就好了 https://blog.csdn.net/Utopia_Zq/article/details/81190300?utm_source=blogxgwz2 ...

  7. Python实现神经网络算法识别手写数字集

    最近忙里偷闲学习了一点机器学习的知识,看到神经网络算法时我和阿Kun便想到要将它用Python代码实现.我们用了两种不同的方法来编写它.这里只放出我的代码. MNIST数据集基于美国国家标准与技术研究 ...

  8. 记录一下set的用法

    set译为集合,是一个内部自动有序且不含重复元素的容器 有时出现需要去掉重复元素的情况 而且有可能因这些元素比较大或者类型不是int型而不能直接开散列表 在这种情况下就可以用set来保留元素本身而不考 ...

  9. elk架构

    (1)Kafka:接收用户日志的消息队列.(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch.(3)Elasticsearch:实时日志分析服务的核心技术,一个sche ...

  10. 剑指Offer的学习笔记(C#篇)-- 左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...