name varchar(20) not null, -> salary float default 500 -> );Query OK, 0 rows affected (0.00 sec)◆设置表自增长...,字段值自动增加1,一个表只能有一个字段使用AUTO_INCREMENT约束,且字段必须为主键的一部分.设置表的自增长语法规则如下:字段名 数据类型 auto_increment实例: 定义一个数据表tab...SQL语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确.在MySQL中,查看表结构可以使用describe和show create table语句....key指定了外键) ENGINE=InnoDB DEFAULT CHARSET=latin11 row in set (0.00 sec)2.使用drop foreign key命令删除外键MariaDB...[lyshark]> alter table tb_emp drop foreign key fk_empdept; #删除tb_emp表中的外键fk_empdeptQuery OK, 0 rows
第一种方法是使用Hibernate提供的工具来创建表结构,该机制会自动搜索@Entity实体对象并创建对应的表,然后使用import.sql文件导入测试数据;第二种方法是利用旧的Spring JDBC,...) REFERENCES `reviewer` (`id`) ); 我们手动创建了数据库表结构,因此需要关掉Hibernate的自动创建开关,即在application.properties中设置spring.jpa.hibernate.ddl-auto...在上文中我们使用了两种不同的方法来初始化数据库和填充测试数据 使用Spring JPA with Hibernate初始化数据库 这种方法中,由Hibernate库完成大部分工作,我们只需要配置合适的配置项...使用Spring JDBC初始化数据库 如果项目中没有用JPA或者你不想依赖Hibernate库,Spring提供另外一种方法来设置数据库,当然,首先需要提供spring-boot-starter-jdbc...spring.jpa.hibernate.ddl-auto=none表示Hibernate不会自动创建数据库表结构。在生产环境中最好用这个设置,能够避免你不小心将数据库全部删除(那一定是一个噩梦)。
` (`lkm_cust_id`), CONSTRAINT `FK_cst_linkman_lkm_cust_id` FOREIGN KEY (`lkm_cust_id`) REFERENCES...-- lazy: 关联数据查询时(多表查询) 是否使用延迟加载 :true:使用 默认值 false:不使用--> <set name="linkmans" inverse="true...` (`user_id`), CONSTRAINT `FK_user_role_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (...常用的值 : true : 使用延迟加载,默认值. false : 不使用延迟加载. 查询客户的同时,立马发送sql查询联系人....总之(按需求) : 根据一的一方查多的一方的时候,使用延迟加载(默认值); 根据多的一方查一的一方一般使用立即加载,所以需要在多的一方的many-to-one标签配置 lazy=false
设置表自增长: 创建表tab_6指定id员工编号为自动增长模式,并插入数据,省略ID编号这一栏即可....MariaDB [lyshark]> create table tab_6 -> ( -> id int(10) primary key auto_increment, -> name...删除表的外键约束: 使用drop foreign key命令删除外键,删除tb_emp的外键约束 MariaDB [lyshark]> desc tb_emp; +--------+----------...[lyshark]> alter table tb_emp drop foreign key fk_empdept; #删除tb_emp表中的外键fk_empdept MariaDB [lyshark...]> ◆日期与时间类型◆ MySQL中有多种表示日期的数据类型,主要有LDATETIME、DATE、TIME和YEAR.例如,当只记录年信息的时候,可以只使用 YEAR类型而没有必要使用DATE,每一个类型都有合法的取值范围
Hibernate默认使用的是Set集合。...`(`user_id`), CONSTRAINT`FK_user_role_role_id` FOREIGN KEY (`role_id`) REFERENCES `sys_role`(`role_id...`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT`FK_user_role_user_id` FOREIGN KEY (`user_id`...*table :多对多的关系需要使用中间表,放的是中间表的名称。...*table :多对多的关系需要使用中间表,放的是中间表的名称。
` (`publisher_id`), CONSTRAINT `fk_bookpublisher_book` FOREIGN KEY (`book_id`) REFERENCES `book` (`id...`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fk_bookpublisher_publisher` FOREIGN KEY (`publisher_id...该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。 @Id 声明此属性为主键。...该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...TABLE:使用表保存id值 IDENTITY:identitycolumn SEQUENCR :sequence AUTO:根据数据库的不同使用上面三个 @Column 声明该属性与数据库字段的映射关系
,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充 说明: 1....表示空,非字符串 not null - 不可空 null - 可空 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置...insert into service values -> ('172.16.45.10','3306','mysqld'), -> ('172.16.45.11','3306','mariadb...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外...default 'male' )auto_increment=3; #设置步长 sqlserver:自增步长 基于表级别 create table t1( id
Hibernate会自动根据所注解的对象生成合适的SQL语句,如果Lob注解到了字符串上,Hibernate会生成CLOB类型对象;如果注解到了byte[]数组之类的上面,就会生成BLOB类型的对象。...如果我们查看一下MySQL的表生成语句,会发现Article表是这个样子的: CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT...=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 上面的文章实体类还应用了另一个注解JoinColumn,这个注解用来控制数据库外键的行为。...其他的使用方法需要查看官方文档。 @JoinColumn(foreignKey = @ForeignKey(name = "FK_AUTHOR_ID")) 这样,一个基本的外键映射就建立好了。...两个实体类一边需要使用ManyToOne注解,另外一边的集合类使用OneToMany注解。
,而且为主键) DEFAULT 为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充 说明: 1....是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值 2....字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' age int...null表示空,非字符串 not null - 不可空 null - 可空 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置...insert into service values -> ('172.16.45.10','3306','mysqld'), -> ('172.16.45.11','3306','mariadb
,而且为主键) default 为该字段设置默认值 unsigned 无符号 zerofill 使用0填充 说明: 1....字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值 sex enum('male','female') not null default 'male' #设置了不能为空...二 not null与default 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外...default 'male' )auto_increment=3; #设置步长 sqlserver:自增步长 基于表级别 create table t1( id
为该字段设置默认值 UNSIGNED 无符号 ZEROFILL 使用0填充 说明: 1....表示空,非字符串 not null - 不可空 null - 可空 默认值,创建列时可以指定默认值,当插入数据时如果未主动设置...insert into service values -> ('172.16.45.10','3306','mysqld'), -> ('172.16.45.11','3306','mariadb...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外...default 'male' )auto_increment=3; #设置步长 sqlserver:自增步长 基于表级别 create table t1( id
varchar(255) DEFAULT NULL, `book_category_id` int(11) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_book_bookcategoryid_idx...` (`book_category_id`), CONSTRAINT `fk_book_bookcategoryid` FOREIGN KEY (`book_category_id`) REFERENCES...该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。 @Id 声明此属性为主键。...该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...TABLE:使用表保存id值 IDENTITY:identitycolumn SEQUENCR :sequence AUTO:根据数据库的不同使用上面三个 @Column 声明该属性与数据库字段的映射关系
没有设置正确的数据库,比如说在连接参数中没有设置,比如说没有在 HBM 文件中没有设置分类等。...其实这个没有选择数据库的错误是因为你主键生成策略没有设置正确。...你可能设置了 @GeneratedValue 这个注解说明的主键生成策略是 Auto,会自动尝试使用序列等方式,这个时候会 因为表找不到,而提示错误。...如果你使用的是 MySQL 或者 MariaDB, 你可以在表中设置自增序列,让数据库来帮你处理主键。...但是在 Hibernate 的 @GeneratedValue 注解中,你需要设置为: @GeneratedValue(strategy = GenerationType.IDENTITY),这样你就不会遇到上面提示的数据库没有找到的错误了
varchar(255) DEFAULT NULL, `book_detail_id` int(11) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_book_bookdetail...` (`book_detail_id`), CONSTRAINT `fk_book_bookdetail` FOREIGN KEY (`book_detail_id`) REFERENCES `book_detail...该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。 @Id 声明此属性为主键。...该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...TABLE:使用表保存id值 IDENTITY:identitycolumn SEQUENCR :sequence AUTO:根据数据库的不同使用上面三个 @Column 声明该属性与数据库字段的映射关系
也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 4、外键中列的数目必须和父表的主键中列的数目相同。 5、外键中列的数据类型必须和父表主键中对应列的数据类型相同。...mysql:yeyztest ::>>create table fk_test_1( -> id int not null primary key auto_increment, -..._2( -> id int not null primary key auto_increment, -> uid int, -> foreign key fk_uid(uid..._2,其中fk_test_2的uid列上设置外键,关联fk_test_1的表的id列,这里很明显,fk_test_1是父表,而fk_test_2是子表,接下来我们进行数据插入实验。...在上面的测试中,我们反复提到一个词,就是默认情况,我们没有设置外键的删除和更新规则,这里mysql帮我们使用了最严格的的规则,那就是restrict,其实还有其他一些规则,这里全部列出来: delete
in set (0.00 sec) 创建一个新表 mysql> CREATE TABLE IF NOT EXISTS `my_tbl`( -> `my_id` INT UNSIGNED AUTO_INCREMENT...通用语法 UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 可以同时更新多个字段,一般是配合 where 使用...gender | +--------+-----+--------+ | kevin | 18 | m | | chan | 17 | f | | ddddhm | 20 | fk...--+-----+--------+ | gender | age | name | +--------+-----+--------+ | f | 17 | chan | | fk...gender; +--------+----------+ | gender | count(*) | +--------+----------+ | f | 3 | | fk
注册和注销 修改个人资料,查看/查找商品 写留言和回复,查自己的留言,删除自己的留言和回复 管理员对商品的增删改查以及批量删除 防盗链,分页,时间显示等 商品方面目前要求只是增删改查,扩展的订单购买退货等未开发...关于级联删除使用references…cascade语句实现,级联更新采用触发器,例在新增回复后更新留言表的回复数字段。...===========================================*/ create table message ( mid int not null AUTO_INCREMENT...-- JSR303数据校验支持 --> org.hibernate hibernate-validator...-- 开启基于注解的事务,使用xml配置形式的事务 --> <!
在数据库中对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。...1.2、约束作用 对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。...主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。...字段名n 字段类型, )auto_increment=超始值; 创建一个新用户表,表里面有用户名和密码,并设置起始值为100 create table new_user( uid int primary...,内置函数和运算符 2.不允许在使用了auto_increment的列上使用 3.不允许存储函数和用户定义的函数 4.不允许子查询等 如果省略或指定为enforced,则创建并强制执行约束。
key auto_increment, name varchar(20)); # 创建属性内容表 包含标题表的ID 作者消息 内容等 # MariaDB [test]> create table attribute...16.2.2.3、批量插入 # 新建一个用于批量增加数据的表 # MariaDB [test]> create table batchInsert (id int primary key auto_increment...MariaDB [s1]> create table salary(id int primary key auto_increment,name varchar(30),sala double) MariaDB...[s1]> update salary set sala=sala-1000 where name='xiong'; -- 回退到上一次事务提前的时候,提交未存储的事务 MariaDB [s1]>...read mysql中设置数据库的隔离级别语句: set [global/session] transaction isolation level xxxx; -- 查看隔离级别 MariaDB [
领取专属 10元无门槛券
手把手带您无忧上云