mysql外键

一千行 MySQL 学习笔记

风流意气都作罢 提交于 2020-01-30 13:44:25
原文: 一千行 MySQL 学习笔记 基本操作 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格) /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 数据库操作 /* 数据库操作 */ ------------------ -- 查看当前数据库 SELECT DATABASE(); -- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version(); -- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 SHOW DATABASES[ LIKE 'PATTERN'] -- 查看当前库信息 SHOW CREATE DATABASE 数据库名 -- 修改库的选项信息 ALTER DATABASE 库名 选项信息 -- 删除库 DROP

hibernate学习整理

自闭症网瘾萝莉.ら 提交于 2020-01-29 11:30:44
1.建立第一个程序 model里面是数据库表所对应的字段,先建立strudent数据库,再建立与数据库与之对应的model,再从官方的文档里面copy hibernate.cfg.xml文件并进行修改, -->建立student.hbm.xml文件 2.在student.hbm.xml文件中<hibernate-mapping package =是你要映射到的哪个包中 class name=“为那个包中所对应的类名” table="数据库的表名"(它包含这个类和表之间的映射关系) id name=“为model中的那个主键” column=‘与DB中对应的列’>同时要在hibernate.cfg.xml文件中的<mapping-resource>指定要映射的strudent.hbm.xml文件。 3.写具体的实现,前几步是固定的写法,也可以定义一个工具类进行封装 SessionFactory sf=new Configuration.configure.buildSessionFactory(); Session session=sf.openSession(); Transfaction ts=session.beginTransfaction(), 在hibernate中操作要放在事物里面,session.save(这个s是一个student类对象) ts.commit()

148复习前一天的内容

淺唱寂寞╮ 提交于 2020-01-26 09:51:05
一、含义 事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行,要么都不执行 二、特点(ACID) A 原子性:一个事务是不可再分割的,要么都执行,要么都不执行 C 一致性:我们的数据是准确的,完整的,可靠的。一个事务可以使数据从一个一致状态,切换到另一个一致状态 I 隔离性:一个事务不受其他事务的干扰,多个事务互相隔离(通过设置隔离级别来隔离) D 持久性:一个事务一旦提交了,则永久的持久化到本地 三、事务的使用步骤 了解: 隐式(自动)事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete 显示事务:需要手动提交,具有明显的开始和结束 使用显示事务: ①开启事务 set autocommit=0; 【start transaction;】 --可以省略 ②编写一组逻辑sql语句 注意:sql语句支持的是insert、update、delete 设置回滚点: savepoint 回滚点名; ③结束事务 提交:commit; 回滚:rollback; 回滚到制定的地方:rollback to 回滚点名; 四、并发事务、 1.事务的并发问题是如何发生的? 多个事务 同时 操作 同一个数据库的相同数据时 2.并发问题都有哪些? 脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务”更新“的数据 不可重复度

MySQL与python交互

回眸只為那壹抹淺笑 提交于 2020-01-07 11:55:11
1. 准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 use jing_dong; -- 创建一个商品goods数据表 create table goods( id int unsigned primary key auto_increment not null, name varchar(150) not null, cate_name varchar(40) not null, brand_name varchar(40) not null, price decimal(10,3) not null default 0, is_show bit not null default 1, is_saleoff bit not null default 0 ); 插入数据 -- 向goods表中插入数据 insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default); insert into goods

MySQL灵魂五十问

给你一囗甜甜゛ 提交于 2020-01-06 17:14:36
1、MySQL 中有哪几种锁? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 2、MySQL 中有哪些不同的表格? 共有 5 种类型的表格: MyISAM Heap Merge INNODB ISAM 3、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储表的总行数; 一个 MYISAM 表有三个文件:索引文件、表结构文件、数据文件; 采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引 基本一致,但是辅索引不用保证唯一性。 InnoDb: 支持 ACID 的事务,支持事务的四种隔离级别; 支持行级锁及外键约束:因此可以支持写并发; 不存储总行数: 一个 InnoDb 引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制, 一个表可能分布在多个文件里),也有可能为多个(设置为独立表空,表大小受操作系统文件大小限制,一般为 2G),受操作系统文件大小的限制; 主键索引采用聚集索引(索引的数据域存储数据文件本身)

第四十天笔记

只谈情不闲聊 提交于 2019-12-17 05:21:11
约束 什么是约束 除了数据类型以外额外添加的约束 为什么要使用约束 为了保证数据的合法性 完整性 分类: not null 非空约束 数据不能为空 学生表的姓名字段 create table student (id int,name char(10) not null); default 默认值约束 可以指定字段的默认值 create table user (id ind,name char(10) not null,sex char(1) default "woman"); 美柚的性别字段 默认为女 游戏 注册成功 送一万金币 unique 唯一性约束 该字段的值不能重复 身份证 手机号 学号 unique其实是一种索引 索引是一种数据结构 用于提高查询效率 可以为空 一张表中可以有多个唯一约束 单列唯一约束 create table t5(idcard char(18) unique); 多列联合唯一约束 create table t6(idcard char(18),phonenumber char(11),unique(idcard,phonenumber)); 意思: 身份证相同 并且 手机号相同 那就叫相同 primary key ****** 称之为主键约束 用于唯一标识表中一条记录 如何能做到唯一标识 该字段 只要是惟一的 并且不为空 即可 也就是说

mysql--外键(froeign key)

柔情痞子 提交于 2019-12-10 15:56:56
如果一个实体的某个字段指向另一个实体的主键,就称为外键 被指向的实体,称之为主实体(主表),也叫父实体(父表)。 负责指向的实体,称之为从实体(从表),也叫子实体(子表) 作用: 用于约束处于关系内的实体 增加子表记录时,是否有与之对应的父表记录 如果主表没有相关的记录,从表不能插入 先插入主表数据后再插入从表数据: 在删除或者更新主表记录时,从表应该如何处理相关的记录 设置级联操作: 在主表数据发生改变时,与之关联的从表数据应该如何处理 使用关键字: on update on delete 来标识 允许的级联动作: cascade关联操作,如果主表被更新或删除,从表也会执行相应的操作 set null,表示从表数据不指向主表任何记录 restrict:拒绝主表的相关操作 alter table t_student add foreign key (class_id) references t_class (class_id) on delete set null; # 在删除外键时,将从表的外键值设置为null 修改外键: 先删除这个表的外键,然后再增加 alter table tb_name drop froeign key 外键名称 外键名称在建立外键时可以自定义名称,如果不自定义,会按照mysql自动生成一个名称 show create table tb_name;

字段约束,索引,主外键

£可爱£侵袭症+ 提交于 2019-12-10 10:27:23
第 二 节 字段约束,索引,主外键 字段约束条件 1.1 作用:限制如何给字段赋值的 1.2 包括内容有: NULL Key Default Extra NULL 是否允许给字段赋 null 值 null 默认允许赋 null 值 not null 不允许赋 null 值 key 键值类型:普通索引唯一索引全文索引主键外键 Default 默认值作用:当不被字段赋值时,使用默认值给字段赋值 不设置默认值是系统定义的是 null default 值 Extra 额外设置,字段是否设置为自动增加 , 默认没有自动增长功能 案例: 1)建库 Mysql>create database db2; 2)进库 use db2; 3)建表 Mysql>create table t2( >name char(3), >level int(3)zerofill ); Mysql>create table t5( >classroom char(7)default"nsd1801", >name char(5)not null, >age tinyint(2)unsigned zerofill default 18, >sex enum("boy","girl")not null default"boy" ); 4) 表里建值 insert into db2.t1 values("bob",1);

MySQL 外键约束和触发器,级联删除

こ雲淡風輕ζ 提交于 2019-12-10 03:14:07
-- 创建测试主表. ID 是主键. CREATE TABLE test_main ( id INT NOT NULL, value VARCHAR(10), PRIMARY KEY(id) ); -- 创建测试子表. CREATE TABLE test_sub ( id INT NOT NULL, main_id INT , value VARCHAR(10), PRIMARY KEY(id) ); -- 插入测试主表数据. INSERT INTO test_main(id, value) VALUES (1, 'ONE'); INSERT INTO test_main(id, value) VALUES (2, 'TWO'); -- 插入测试子表数据. INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE'); INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO'); 通过 DELETE CASCADE 外键约束的处理机制来处理 mysql> ALTER TABLE test_sub -> ADD CONSTRAINT main_id_cons -> FOREIGN KEY (main_id) -> REFERENCES test

MYSQL面试必读

孤人 提交于 2019-12-07 16:03:36
Mysql 的存储引擎,myisam和innodb的区别。 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用。表锁,不会出现死锁,适合小数据,小并发。 2.innodb是支持事务的存储引擎,合于插入和更新操作比较多的应用,设计合理的话是行锁(最大区别就在锁的级别上),适合大数据,大并发。 数据表类型有哪些 答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。 MyISAM:成熟、稳定、易于管理,快速读取。一些功能不支持(事务等),表级锁。 InnoDB:支持事务、外键等特性、数据行锁定。空间占用大,不支持全文索引等。 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。 b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。 c. mysql库主从读写分离。 d. 找规律分表,减少单表中的数据量提高查询速度。 e。添加缓存机制,比如memcached,apc等。 f. 不经常改动的页面,生成静态页面。 g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE. 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?