什么是约束
约束类型
| 约束 | 说明 |
|---|---|
| PRIMARY KEY | 主键约束 |
| UNIQUE | 唯一约束 |
| NOT NULL | 非空约束 |
| DEFAULT | 默认值约束 |
| FOREIGN KEY | 外键约束 |
| CHECK | 检查约束(MySQL并不支持) |
注意事项
主键的作用
主键的特点
建表的时候添加主键约束
CREATE TABLE 表名 (
字段名 字段类型 PRIMARY KEY,
字段名 字段类型
);
CREATE TABLE 表名(
列名 数据类型,
[CONSTRAINT] [约束名称] PRIMARY KEY(列名)
);
删除主键约束
ALTER TABLE 表名 DROP PAIMARY KEY; -- 非空主键不会随着主键约束的删除而消失,在MySQL中会保存下来
注意事项
建表后单独添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
注意事项
主键自增
面试题:修改自动增长的开始值
ALTER TABLE st2 AUTO_INCREMENT = 1000;
INSERT INTO st2 (NAME, age) VALUES ('校长', 22);
ALTER TABLE st2 AUTO_INCREMENT = 500;
INSERT INTO st2 (NAME, age) VALUES ('coolman', 23);
注意事项
非空约束的作用
非空约束的格式
CREATE TABLE 表名 (
字段名 字段类型 NOT NULL,
字段名 字段类型
);
唯一约束的作用
唯一约束的格式
CREATE TABLE 表名 (
字段名 字段类型 UNIQUE,
字段名 字段类型
);
默认约束的作用
默认约束的格式
CREATE TABLE 表名(
字段名 数据类型 DEFAULT 值,
字段名 字段类型
);


新建表的时候增加外键约束
CREATE TABLE 表名 (
字段名 字段类型,
字段名 字段类型,
-- 添加外键约束
[CONSTRAINT 外键约束名] FOREIGN KEY (外键字段名) REFERENCES 主表(主表字段名)
);
关键字解释
删除外键约束
ALTER TABLE 表名 DROP FOREGIN KEY 外键约束名;
注意事项
已有表增加外键约束
ALTER TABLE 从表 ADD [CONSTRAINT 外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);







隐式内连接
SELECT 字段列表 FROM 表1, 表2,... WHERE 条件;
看不到 JOIN关键字,条件使用WHERE指定
显式内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
使用INNER JOIN ... ON 条件,可以省略INNER
内连接效果

SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
使用LEFT OUTER JOIN ... ON,OUTER可以省略
左外连接效果

SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
使用RIGHT OUTER JOIN ... ON,OUTER可以省略
右外连接效果

什么是子查询
Demo
SELECT 查询字段 FROM 表 WHERE 条件;
SELECT * FROM employee WHERE salary=(SELECT MAX(salary) FROM employee);
子查询要放在()中
先执行子查询,将子查询的结果作为父查询的一部分
子查询结果的三种情况
子查询结果是单行单列
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
子查询结果是单行单列,在WHERE后面作为条件,WHERE后面使用的是比较运算符:=,>, <=, <>

子查询结果是多行单列
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
子查询结果是多行单列,结果集类似于一个数组,在WHERE后面作为条件,父类使用IN/ANY/ALL运算符

子查询结果是多行多列
SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;
子查询结果是多行多列,在FROM后面作为虚拟表

数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令
事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败;
事务是一个不可分割的工作逻辑单元
事务的使用
-- 开启事务
START TRANSACTION; -- 或者 BEGIN; 效果一样
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;
事务Demo

commit:提交事务rollback回滚事务commit提交任务文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析: 在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1: print(k)k=k/2A.1000 B.10C.11D.9解析: 按照题意每次循环K/2,直到K值小于等
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi
我目前还在上学,正在上一门关于用C++实现数据结构的类(class)。在业余时间,我喜欢使用“高级”语言(主要是Ruby和一些c#)进行编程。既然这些高级语言为你管理内存,你会用数据结构做什么?我可以理解对队列和堆栈的需求,但是您需要在Ruby中使用二叉树吗?还是2-3-4树?为什么?谢谢。 最佳答案 Sosincethesehigherlevellanguagesmanagethememoryforyou,whatwouldyouusedatastructuresfor?使用数据结构的主要原因与垃圾收集无关。但它是以某种方式有效的
我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。
目录1、yum安装mysql修改密码(1)在mysql里面修改(2)第二种方式,利用mysqladmin修改密码2、没有密码,登录mysql修改密码3、mysql的安全设置1、yum安装mysql在CentOS中默认安装有MariaDB(MySQL的一个分支),安装完成之后可以直接覆盖MariaDB。rpm-qa|grepmariadb查询是否安装了mariadbrpm-e--nodepsmariadb-libs-5.5.60-1.el7_5.x86_64卸载mariadwgethttp://dev.mysql.com/get/mysql57-community-release-el7-11.
我是Ruby的新手。我安装了DataMapper并且正在尝试安装dm-mysql-adapter-1.0.2gem。但是当我尝试安装时,出现以下错误。我正在使用ubuntu操作系统。vinoth@vinoth-laptop:~/Downloads$geminstalldm-mysql-adapter-1.0.2----with-mysql-lib=/usr/lib/mysql----with-mysql-conf=/usr/bin/mysqlWARNING:Installingto~/.gemsince/home/vinoth/gemsand/home/vinoth/gems/bina
我目前正在构建一个需要mysql2gem的RoR项目。我成功安装了gem。因为它出现在我的gem列表中。[root@vc2cmmka035538nsimple_cms]#gemlist***LOCALGEMS***actionmailer(3.2.3)actionpack(3.2.3)activemodel(3.2.3)activerecord(3.2.3)activeresource(3.2.3)activesupport(3.2.14,3.2.3)arel(3.0.2)bigdecimal(1.1.0)builder(3.2.2,3.0.0)bundler(1.1.5)c2c_li