Mysql - 数据库操作
之前介绍了数据库的增删改查, 发现忘记了数据库的一些基本操作, 比如建库, 建表, 改表等等. 那这里就来小结一下数据库sql形式的基本操作.
一、库操作
1. 建库
在建库之前, 可能需要看一下, 数据库里面, 已经存在哪些库, 这样可以去处理重复的问题.
show databases;

这里之所以会出现newdb, 是因为我已经执行过下面的创建库的脚本了.
然后, 就可以创建库了.
create DATABASE newdb;
执行这句话, 就会按照默认编码的方式去创建数据库newdb. 那默认编码是什么呢, 来看一下:
show create database newdb;

如果想要在创建库的时候, 就指定好编码格式的话, 那么只需要按照上面这种模式去加就好了
create database newdb2 default character set utf8
其实编码不用管, 使用默认的方式就好.
2. 删库 -- 慎用
drop database newdb;
3. 引用库
如果你在1号库中, 想查询2号库的表, 那么就需要使用到这个
use test;

二、表操作
1. 建表
同样的, 建表之前, 要查询表中是否已存在我们想见的表.
show tables;
如果没有, 则可以开始新建表了, 如果库里面已经有了表模板, 并且你想在新建的时候, 导入部分数据, 那么应该使用下面这种方法:
create table tch_contact2 select * from tch_contact;
这样的话, tch_contact2能获取tch_contact的结构和数据, 但是并不能获取别的, 例如:索引, 外键, 触发器.
另外一种建表, 则稍微有点复杂
CREATE TABLE `contact` (
`Id` int(11) NOT NULL AUTO_INCREMENT, -- 不为空, 自动增长
`TId` int(11) DEFAULT NULL,
`QQ` varchar(15) DEFAULT NULL,
`Weixin` varchar(50) DEFAULT NULL,
`Phone` varchar(15) DEFAULT NULL,
PRIMARY KEY (`Id`), -- 设置主键
KEY `Index_TId` (`TId`) USING BTREE, -- 索引
CONSTRAINT `key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION -- 设置外键
) COMMENT='就是这个表' -- 表注释
有时候需要用到临时表, 方法也很简单, 只需要在create table 中间加上一句 TEMPORARY 就可以了, 其他的, 都是和一般建表一样:
create temporary table '表名'()
1.1 设置主键
设置主键的语句, 可以分开写, 也可以合在一起写.
`Id` int(11) NOT NULL PRIMARY key AUTO_INCREMENT,
-- 或者
`Id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`Id`),
1.2 设置索引 -- 索引这里有单个索引和复合索引, 但是设置方法都是一样的
mysql里面, 索引有三种类型, Normal, Unique, FullText. 索引方法由两种: Btree, Hash
-- 单个索引
KEY `Index_Weixin` (`Weixin`) USING BTREE,
UNIQUE KEY `Index_TId` (`TId`) USING HASH,
FULLTEXT KEY `Index_QQ` (`QQ`),
-- 复合索引
KEY `Index_fuhe` ('QQ', `Weixin`) USING BTREE,
我一般都只用Normal, Btree两个, 单个的和符合的都用.
1.3 外键
CONSTRAINT `key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION
着句话, 看着可能有点费解, 但是看一下软件中的界面, 就非常清楚了

别的不需要解释了, 但是这里有个删除时, 更新时, 还是需要唠叨两句.
mysql这里, 有四个值可供选择.
RESTRICT -- 限制, 此限制是在更新之前.
在删除tch_teacher数据时, 如果tch_contact还有与之对应的值, 则删除失败
NO ACTION -- 限制, 此限制是在更新之后. 与Restrict触发的时间不同, 但是功能是一样的.
CASCADE -- 级联, 不限制删除, 但是会同步修改或删除.
如果tch_teacher删除一条数据, 那么tch_contact会同步删除, 与他关联的数据.
修改也是一样, 会同步修改.
SET NULL -- 设置为空, 如果tch_teacher删除一条数据, 那么tch_contact会将与之关联的那个字段设置为null, 不是把整条数据, 只是那个字段.
这里, 我觉得比较实用的就是 cascade了, 同步删除功能, 省下我不少工作呢.
2. 表操作
表操作又分为表结构修改和表名称修改. 先看表结构.
建好表之后, 发现其中的列, 并不完全是我想要的, 那咋搞呢?
2.1 查询列
show COLUMNS from tch_contact;

2.2 加列
alter table tch_contact add createby int comment '创建人';
2.3 修改列
alter table tch_contact MODIFY createby varchar(1); alter table tch_contact change createby createby1 varchar(2);
2.4 减列
alter table tch_contact drop createby;
2.5 索引
-- 新增一个索引
create index index_tid on tch_contact2(tid) using BTREE; alter table tch_contact2 add index index_weixin(weixin); -- 如果要修改一个索引, mysql里面, 只有先删除然后重建 -- 删除一个索引
drop index index_tid on tch_contact2;
2.6 外键
-- 新增一个外键
alter table tch_contact2 add CONSTRAINT
`key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION; -- 删除一个外键
alter table tch_contact2 DROP FOREIGN KEY key_tid ;
2.7 表名称修改
rename table tch_contact to tch_contact1; ALTER TABLE tch_contact1 RENAME tch_contact;
这两句都是表名称修改的语句.
3. 表删除 -- 慎用
drop table tch_contactt;
项目中最常用的, 其实也就是上面这些了.
Mysql - 数据库操作的更多相关文章
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- (转载)常用的Mysql数据库操作语句大全
打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...
随机推荐
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- “不给力啊,老湿!”:RSA加密与破解
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 加密和解密是自古就有技术了.经常看到侦探电影的桥段,勇敢又机智的主角,拿着一长串毫 ...
- TODO:搭建Laravel VueJS SemanticUI
TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...
- JavaScript Date对象
本篇主要介绍 Date 日期和时间对象的操作. 目录 1. 介绍:阐述 Date 对象. 2. 构造函数:介绍 Date 对象的构造函数new Date()几种方式. 3. 实例方法:介绍 Date ...
- 前端学HTTP之安全HTTP
前面的话 HTTP的主要不足包括通信使用明文(不加密),内容可能会被窃听:不验证通信方的身份,有可能遭遇伪装:无法证明报文的完整性,有可能被篡改 基本认证和摘要认证能够使得用户识别后较安全的访问服务器 ...
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过 ...
- 灵魂宝石 bzoj 2663
灵魂宝石(1s 128MB)soulgem [问题描述] "作为你们本体的灵魂,为了能够更好的运用魔法,被赋予了既小巧又安全的外形" 我们知道,魔法少女的生命被存放于一个称为灵魂宝 ...
- java 线程 Lock 锁使用Condition实现线程的等待(await)与通知(signal)
一.Condition 类 在前面我们学习与synchronized锁配合的线程等待(Object.wait)与线程通知(Object.notify),那么对于JDK1.5 的 java.util.c ...
- Highcharts中国地图热力图
最近有个项目需要将MC销量按大陆各省统计,并以中国地图人力图效果显示.由于项目一直使用Highcharts进行图表的统计,故采用Highmaps来实现. 效果如下: 1)中国各个省.直辖市.自治区: ...
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
.net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...