DLL:操作数据库和表
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:操作数据库和表的更多相关文章
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)
一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...
- MySQL操作数据库和表的常用命令新手教程
1.查看数据库 获取服务器上的数据库列表通常很有用.执行show databases;命令就可以搞定. mysql> show databases; 2.创建数据库 mysql> crea ...
- c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--跨表操作)
上篇文章我们介绍了如何利用DataSet 和 DataAdaper对象来对单张表进行操作. 本文我们将介绍如何进行跨表操作. 我们通过具体例子方式进行演示,例子涉及到三张表. 1)student表(学 ...
- mysql基础_操作数据库以及表
1.数据库的操作 create database 数据库名:#一般创建方式 create database 数据库名 show databases;#查看所有数据 drop database 数据库名 ...
- python操作数据库-数据表
数据表: 数据类型: 帮助的三种形式: 在cmd中输入: help 要帮助的主题词,或 ? 要帮助的主题词 或 \h 要帮助的主题词 . 数据表的创建: CREATE database IF NOT ...
- MySQL操作数据库和表的基本语句(DDL)
1.创建数据库: CREATE DATABASE 数据库名; eg.CREATE DATABASE test_ddl;2.创建表 CREATE TABLE 表名(列名 数据类型 约束,...); eg ...
- MySQL操作数据库和表的基本语句(DDL
1.创建数据库: CREATE DATABASE 数据库名; eg.CREATE DATABASE test_ddl;122.创建表 CREATE TABLE 表名(列名 数据类型 约束,...); ...
- 第二百八十九节,MySQL数据库-ORM之sqlalchemy模块操作数据库
MySQL数据库-ORM之sqlalchemy模块操作数据库 sqlalchemy第三方模块 sqlalchemysqlalchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API ...
- 【MySQL】对数据库和表的增删改查
数据库的基本概念 数据库的英文单词: DataBase 简称 : DB 什么是数据库? 用于存储和管理数据的仓库. 数据库的特点: 持久化存储数据的.其实数据库就是一个文件系统 方便存储和管理数据 使 ...
随机推荐
- css 关于"浮动边距加倍"及其解决方法-------解决方案是在这个div里面加上display:inline;
写div代码的时候,经常发现明明宽度算得很准确,但是莫明其妙的会和计划的布局不太一样- -|||开始以为自己代码写的有问题,拼命找bug也一无所获,最后可能会稍微修改样式来达到想要的效果,但终究也是外 ...
- SQL alchemy
SQL alchemy介绍 SQL alchemy是orm思想的一个具体实现的产品 orm:对象关系映射思想 Object Relational Mapping 就是将数据库里的资源与面向对象中的类和 ...
- Linux的关机和重启命令
Linux有如下的关机和重启命令:shutdown, reboot, halt, poweroff,那么它们有什么区别呢? shutdown - 建议使用的命令 shutdown是最常用也是最安全的关 ...
- iOS中的分类(category)和类扩展(extension)
今天在研究swift的时候看到了分类和扩展.这是两个十分重要有用的功能,但是之前用的不多,没有深入了解过,在今天就从头理一遍. 一.分类(Category): 概念: 分类(Category)是OC中 ...
- CentOS7.X 搭建LAMP
第一部分搭建LAMP基础环境 1.检查CentOS是否为7.x版本 2.安装LAMP中的apache,采用yum源方法安装 yum install httpd httpd-devel A ...
- H5之postMessage
对于跨域我们有很多的解决方案,今天我来分享一下postMessage的那点事,postMessage是html5新增的一个解决跨域的一个方法,不过很可惜万恶的ie6,7不支持 postMessage( ...
- jade-for-each-while
if else还是for循环,在jade里面都是可执行的代码 for循环 - var lession = {course:'jade', level:'high'} - for (var k in l ...
- 成功解决 AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
在导入keras包时出现这个问题,是因为安装的tensorflow版本和keras版本不匹配,只需卸载keras,重新安装自己tensorflow对应的版本就OK了.可以在这个网址查看tensorfl ...
- Codeforces 729D Sea Battle(简单思维题)
http://codeforces.com/contest/738/problem/D https://www.cnblogs.com/flipped/p/6086615.html 原 题意:海战 ...
- ICPC2019上海站游记
银牌第4,差4名拿金 金牌就保研国奖,银牌就什么都没有 最痛苦的是功败垂成 也许签到罚时太多罢,也许构造做得太晚罢,也许J题没有做出来罢 翻来覆去,似乎也想不到得金的理由 福兮祸所倚 年轻人多遇到点挫 ...