数据库字段设为NULL,NOT NULL
1.NULL 比 NOT NULL 多使用一个字节来判断是否为NULL的标志位
2.注意区别 NULL 和空字符串
if(result!=null&&result!="")
3.NULL 会导致程序设计有很多条件判断
4.NOT NULL 避免 NullPointerException
5.count(*)会计算值为NULL的行,count(列名)不会
6.使用not in的结果集中不能有NULL
7.MySQL默认数据库字段为NULL,建议建表时改为NOT NULL
SQL中有关DQL、DML、DDL、DCL的概念与区别
SQL结构化查询语言包含6个部分
1.数据查询语言(DQL: Data Query Language
数据检索语句,用于从表中获取数据。通常最常用的为保留字SELECT,并且常与FROM子句、WHERE子句组成查询SQL查询语句。
语法:
SELECT <字段名> FROM <表或视图名> WHERE <查询条件>;
2.数据操纵语言(DML:Data Manipulation Language)
主要用来对数据库的数据进行一些操作,常用的就是INSERT、UPDATE、DELETE。
语法:
INSERT INTO <表名>(列1,列2,...) VALUES (值1,值2,...);
UPDATE <表名> SET <列名>=新值 WHERE <列名>=某值;
DELETE FROM <表名> WHERE <列名>=某值;
3.事务处理语言(DPL)
事务处理语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION、COMMIT和ROLLBACK。
4.数据控制语言(DCL)
通过GRANT和REVOKE,确定单个用户或用户组对数据库对象的访问权限。
5.数据定义语言(DDL)
常用的有CREATE和DROP,用于在数据库中创建新表或删除表,以及为表加入索引等。
6.指针控制语言(CCL)
它的语句,想DECLARE CURSOR、FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
JDBC
Statement:用于对数据库进行通用访问,在运行时使用静态SQL语句时很有用。 Statement接口不能接受参数
PreparedStatement:当计划要多次使用SQL语句时使用。PreparedStatement接口在运行时接受输入参数。可以使用输入和输出流来提供参数数据。能够将整个文件放入可以容纳大值的数据库列,例如CLOB和BLOB数据类型。
CallableStatement:当想要访问数据库存储过程时使用。CallableStatement接口也可以接受运行时输入参数。
DriverManager:驱动管理器
ResultSet:结果集
SQL连接方式
内连接 inner join
外连接 left join,right join
交叉连接 CROSS JOIN
全连接 full join
区别和解析
MySQL避免重复插入数据
insert ignore into actor
values(3,'ED','CHASE','2006-02-15 12:34:33');
从已经存在的表导入数据
create table if not exists actor_name(
first_name varchar(45) not null,
last_name varchar(45) not null
); -- 创建表
insert into actor_name
select
first_name,last_name
from actor; -- 插入查询结果