1. INSERT操作 是( A )
A. DML语句 数据操纵语言(select,delete,update,insert)
B. DDL语句 数据定义语言(create,alter,drop,declear)
C. DCL语句 数据控制语言(grant,revoke,commit,rollback)
D. TCL语句 事物控制语言,一个;一条sql语句,就是一个事务
2. 下列属于关系型数据库的是(AB)
A.Oracle
B.Mysql
C.IMS
D.MongoDB
关系型数据库底层以二维表的形式保存数据的库就是关系型数据库
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档、键值对或图形等。
- 关系型数据库: Oracle、MySQL、SQLServer、Access
- 非关系型数据库: MongoDB、Redis、Solr、ElasticSearch、Hive、Hbase
IMS数据库是IBM公司开发的两种数据库类型之一。IMS是最早的大型数据库管理系统,其数据库模式是多个物理数据库记录型(PDBR)的集合。
3. 在Mysql数据库系统中,用来删除表的命令是(A)
A DROP TABLE
B DELETE TABLE
C REMOVE TABLE
D CLEAR TABLE
drop和truncate是DDL语句,delete是DML语句。
drop删除库或者表,数据和结构定义。
delete和truncate只是删除表的数据。
delete可以指定where条件,删除满足条件的记录,truncate删除所有记录。
delete是逐条删除,truncate是一次性删除
对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
4. 如果没有指定长度,VARCHAR2的缺省长度是? D
A 1
B 256
C 38
D VARCHAR2类型的列必须指定长度
如果不指定长度会报错,提示检查)附近错误,即没有指定长度的错误
5. 下列关于SQL语句书写规范的描述正确的是:D
A SQL语句区分大小写,要求关键字必须大写,对象名小写
B SQL语句必须在一行书写完毕,并且用分号结尾
C SQL语句的缩进可以提高语句的可读性,并且可以提高语句的执行性能
D SQL语句为了提高可读性,通常会把一些复杂的语句中每个子句写在单独的行上
SQL语句不区分大小写,随意换行,直到分号结束才识别为一句SQL语句结束。
将复杂整句通过不断换行写成字句,方便审阅,但是并不提高执行性能。
6. 在SQL语言中,关于主键描述正确的是(BC)
A 只能包含一列
B 可以包含两列
C 可以包含一列或者多列
D 以上都不正确
主键可以在定义参数列表时,在指定字段后+primary key,或者在字段写完后加上,primary key(指定字段)
7. 关于数据库中NUll描述正确的是 A
A.null表示字段或者变量还没有确定值
B.null等同于空字符串
Cnull等同于数值0
D.Mysql不支持空值
空字符串是"",0就是0,mysql只有主键或者not null声明的约束才不允许null
编写以下sql语句
1. 创建数据库mydb6 字符集utf8 并使用
2. 创建hero表 字段:id,name,type
3. 插入以下数据:
(1,'李白','刺客') (2,'诸葛亮','法师') (3,'刘备','战士')
(4,'孙尚香','射手') (5,'关羽','战士') (6,'刘禅','辅助');
4. 修改李白为诗人
5. 给表添加money字段
6. 修改id小于5的money为6888
7. 修改诗人为打野
8. 修改刘禅名字为阿斗
9. 删除id为5的数据
10. 修改所有英雄的价格为13888
11. 修改表名为tables
12. 删除money字段
13. 删除所有数据
14. 删除表
15. 删除数据库
1. 创建数据库mydb6 字符集utf8 并使用 create database mydb6 character set utf8; use mydb6; 2. 创建hero表 字段:id,name,type create table hero(id int,name varchar(10),type varchar(10)); 3. 插入以下数据: (1,'李白','刺客') (2,'诸葛亮','法师') (3,'刘备','战士') (4,'孙尚香','射手') (5,'关羽','战士') (6,'刘禅','辅助'); insert into hero values(1,'李白','刺客') , (2,'诸葛亮','法师') , (3,'刘备',' 战士'),(4,'孙尚香','射手') , (5,'关羽','战士') , (6,'刘禅','辅助'); 4. 修改李白为诗人 update hero set type='诗人' where name='李白'; 5. 给表添加money字段 alter table hero add money int; 6. 修改id小于5的money为6888 update hero set money=6888 where id<5; 7. 修改诗人为打野 update hero set type='打野' where type='诗人'; 8. 修改刘禅名字为阿斗 update hero set name='阿斗' where name='刘禅'; 9. 删除id为5的数据 delete from hero where id=5; 10. 修改所有英雄的价格为13888 update hero set money=13888; 11. 修改表名为tables rename table hero to tables; 12. 删除money字段 alter table tables drop money; 13. 删除所有数据 delete from tables; 14. 删除表 drop table tables; 15. 删除数据库 drop database mydb6;简答: 1.数据库约束有哪些?英文名字是什么?有什么作用?怎么添加约束?怎么在已有的表字段中添加或删除约束?
主键约束:primary key
如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且非空。
在定义表的参数列表时声明:
自增属性:auto_increment
如果主键是数值类型,为了方便插入主键(并且保证插入数据时,主键不会因为重复而报错),可以设置一个主键自增。
设置了自增的主键,可以在插入记录时,不给id赋值,只需要设置一个null值,数据库会自动为id分配一个值(AUTO_INCREMENT变量,默认从1开始,后面依次+1),这样既可以保证id是唯一的,也省去了设置id的麻烦。
非空约束 not null
如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
唯一约束 unique
如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。
检查约束 check
设置字段类型需要满足的限制条件,如范围等。
外键约束 foreign key
用于通知数据库两张表数据之间对应关系的这样一个列。这样数据库就会帮我们维护两张表中数据之间的关系。
先添加字段约束:参数 类型 约束,其他参数……
后添加字段约束: alter table 表名 modify 字段 类型(指定字符) 约束;
第一范式(1NF):列不可再分
第二范式(2NF):属性完全依赖于主键
第三范式(3NF):属性不依赖于其它非主属性,属性直接依赖于主键,即保证每列都和主键直接相关。
drop、delete和truncate之间的区别?
drop和truncate是DDL语句,delete是DML语句。
drop删除库或者表,数据和结构定义。
delete和truncate只是删除表的数据。
delete可以指定where条件,删除满足条件的记录,truncate删除所有记录。
delete是逐条删除,truncate是一次性删除
对于自增字段的表,delete不会自增值清零,而truncate是把表记录和定义都删除了,然后重建表的定义,所以自增主键会重头开始计数
char(n) 定长字符串,最长255个字符。n表示字符数
varchar(n) 变长字符串,最长不超过65535个字节,n表示字符数,一般超过255个字符,会使用text类型
1、整型
MySQL中支持多种整型,其实很大程度上是相同的,只是存储值的大小范围不同而已。
tinyint:占用1个字节,相对于java中的byte
smallint:占用2个字节,相对于java中的short
int:占用4个字节,相对于java中的int
bigint:占用8个字节,相对于java中的long
2、 浮点型
浮点类型即:float和double类型
float:4字节单精度浮点类型,相对于java中的float
double:8字节双精度浮点类型,相对于java中的double
float/double(m,d):m是总个数,d是小数位
3、定点型
decimal: 定点数,浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
4、 字符串类型
1、char(n) 定长字符串,最长255个字符。n表示字符数,
2、varchar(n) 变长字符串,最长不超过65535个字节,n表示字符数,一般超过255个字符,会使用text类型
3、大文本(长文本)类型:最长65535个字节,一般超过255个字符列的会使用text。
5、日期类型
date:年月日
time:时分秒
datetime:年月日 时分秒, 默认是null, 最大9999-12-31
timestamp:时间戳,年月日 时分秒,默认当前系统时间, 最大2038-1-19
6.如何批量导入sql
在终端执行命令:source sql文件路径;可以直接把文件拽到终端,快捷现实路径;
在Navicat中,连接成功后,在数据库中批量导入文件,选择路径,运行。
在Navicat中,在代码行中,粘贴sql代码
7.数据库字符串与java中的字符串有何区别?怎么进行截取?
java中的字符串用String类型表示,底层封装的是char类型数组,截取字符串用字符串.substring(起始下标,结束下标),含头不含尾。
数据库的字符串用char或varchar表示,使用substr(被截取字符串,起始下标,结束下标)进行截取,含头也含尾。



