JDBC基础
2016-04-13 13:59
253 查看
JDBC基础:
JDBC的全称是Java Database Connectivity,它是一种可执行SQL语句的Java API,程序可通过对JDBC API连接到关系数据库,并使用SQL来完成对数据库操作。通过JDBC的转换,使用相同JDBC API编写的程序能在不同的数据库系统上运行良好,JDBC可以完成以下三个基本操作:
数据库驱动程序是JDBC程序和数据库之间的转换层,数据库驱动程序负责将JDBC调用成特定的数据库调用,大部分数据库系统都有相应的JDBC驱动程序,当需要连接某个特定的数据库时,必须有相应的数据库驱动程序。
SQL语句基础:
SQL是操作和检索关系数据库的标准语言,标准的SQL语句可用于操作任何关系数据库。一次性执行多条SQL命令的方式称为导入SQL脚本,SQL语句的关键字不区分大小写,SQL语句使用单引号(大部分数据库系统也接受双引号)来环绕文本值,如果是数值,则不要使用。
DISTINCT:
在表中,可能会包含重复值。这并不成问题,不过,有时也许希望仅仅列出不同(distinct)的值。关键词 DISTINCT 用于返回唯一不同的值。SELECT DISTINCT 列名称 FROM 表名称
WHERE:
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
AND 和 OR:
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来,也可以把AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)。
SELECT * FROM Persons WHERE [code](FirstName='Thomas'
ORFirstName='William'
)
ANDLastName='Carter';[/code]
ORDER BY:
ORDER BY 语句用于根据指定的列对结果集进行排序,ORDER BY 语句默认按照升序(ASC)对记录进行排序。如果希望按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT Company, OrderNumber FROM Orders [code]ORDER BY Company DESC, OrderNumber ASC;
INSERT INTO :
INSERT INTO 语句用于向表格中插入新的行。
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
Update:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'
DELETE:
DELETE FROM 表名称 WHERE 列名称 = 值
可以在不删除表的情况下删除所有的行:
DELETE FROM table_name
常用语句:
mysql> SHOW DATABASES; //SHOW语句找出在服务器上当前存在什么数据库 mysql> CREATE DATABASE MYSQLData; mysql> CREATE DATABASE IF NOT EXISTS MYSQLData;//在当前服务器上创建新的数据库 mysql> DROP DATABASE IF EXISTS MYSQLData;//在当前服务器上删除该数据库 mysql> USE MYSQLData;//进入该数据库 mysql> SHOW TABLES;//查看该数据库中存在什么表 mysql> DESC cc_biz_config;//查看指定数据表的表结构 mysql> SELECT DISTINCT 列名称 FROM 表名称;//DISTINCT 用于返回当前列种唯一不同的值 mysql> SELECT * FROM cc_patient_all WHERE p_sex != '男'; mysql> SELECT * FROM cc_patient_all WHERE (p_sex = '男' OR p_sex = '女') AND p_delete_status = 0; mysql> SELECT * FROM cc_patient_all WHERE (p_sex = '男' OR p_sex = '女') AND p_discount = 1 ORDER BY p_name DESC; mysql> CREATE TABLE `cc_service_type_week` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `wp_id` varchar(50) DEFAULT NULL COMMENT '周计划ID', PRIMARY KEY (`id`) ) COMMENT='号类周计划表'; mysql> INSERT INTO cc_service_type_week (id,wp_id)VALUES (6,'aaa'); mysql> UPDATE cc_service_type_week SET wp_id = '100' WHERE id <= 10;
LIMIT:
mysql> SELECT * FROM cc_patient WHERE pid >=200 LIMIT 3;LIKE:
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,"%"可用于定义通配符(模式中缺少的字母)。在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符,SQL 通配符必须与 LIKE
运算符一起使用。
mysql>SELECT * FROM cc_patient WHERE p_name LIKE '%刘%';
mysql>SELECT * FROM cc_patient WHERE p_name NOT LIKE '刘%';
mysql>SELECT
* FROM cc_patient WHERE p_name LIKE '__明';
IN:
IN 操作符允许我们在 WHERE 子句中规定多个值。mysql>SELECT
* FROM cc_patient WHERE pid IN (100,200);
BETWEEN:
BETWEEN操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围,这些值可以是数值、文本或者日期。不同的数据库对
BETWEEN...AND 操作符的处理方式是有差异。如需使用上面显示范围之外的人,请使用 NOT 操作符。
mysql>SELECT * FROM cc_patient WHERE pid BETWEEN 6 AND 9;
mysql>SELECT * FROM cc_patient WHERE p_birth NOT BETWEEN '1993-03-18' AND '2016-02-01';
mysql>SELECT * FROM cc_patient WHERE p_birth BETWEEN '1993-03-18' AND '2016-02-01';
As:
可以为列名称和表名称指定别名,通过使用别名可以使查询程序更易阅读和书写。
SELECT po.OrderID, p.LastName, p.FirstName FROM Persons [code]AS p, Product_Orders
AS poWHERE p.LastName='Adams' AND p.FirstName='John';[/code]
mysql> SELECT * from cc_patient AS p WHERE p.id <=10;
mysql>SELECT p_name AS NAME from cc_patient AS p WHERE p.id <=10;
JOIN:
JOIN: 如果表中有至少一个匹配,则返回行LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
INNER JOIN: 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
注释:INNER
JOIN 与 JOIN 是相同的。
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons [code]INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName[/code]
SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
LEFT JOIN:
LEFT JOIN 关键字会从左表 (table_name1)那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
RIGHT JOIN:
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
FULL JOIN:
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。
UNION:
UNION 操作符用于合并两个或多个 SELECT 语句的结果集,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。注释:默认地,UNION
操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
CREATE DATABASE:
CREATE DATABASE 用于创建数据库。
CREATE DATABASE database_name
CREATE TABLE:
CREATE TABLE 语句用于创建数据库中的表。
CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )
CREATE TABLE Persons ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )
Constraints:
约束用于限制加入表的数据的类型,可以在创建表时规定约束(通过CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
NOT NULL:
NOT NULL 约束强制列不接受 NULL 值,NOT
NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
CREATE TABLE Persons ( Id_P int [code]NOT NULL,
LastName varchar(255)
NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)[/code]
UNIQUE:
UNIQUE 约束唯一标识数据库表中的每条记录,UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个
PRIMARY KEY 约束。
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), [code]UNIQUE (Id_P)
)[/code]
要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,则使用下面的 SQL 语法:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), [code]CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
)[/code]
ALTER TABLE Persons [code]ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
ALTER TABLE Persons [code]DROP INDEX uc_PersonID
PRIMARY KEY:
PRIMARY KEY 约束唯一标识数据库表中的每条记录,主键必须包含唯一的值,主键列不能包含 NULL 值,每个表都应该有一个主键,并且每个表只能有一个主键。CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), [code]PRIMARY KEY (Id_P)
)[/code]
命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束,请使用下面的 SQL 语法:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), [code]CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
)[/code]
DROP:
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。DROP TABLE 表名称
DROP DATABASE 数据库名称
使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):
TRUNCATE TABLE 表名称
TRUNCATE TABLE cc_provider;
ALTER:
ALTER TABLE 语句用于在已有的表中添加、修改或删除列。ALTER TABLE table_name ADD column_name datatype
Auto-increment:
Auto-increment 会在新记录插入表中时生成一个唯一的数字。CREATE TABLE Persons ( [code]P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)[/code]
NULL:
如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。使用 IS NULL 和 IS NOT NULL 操作符,无法比较 NULL 和 0;它们是不等价的。 NULL用作未知的或不适用的值的占位符。
SELECT LastName,FirstName,Address FROM Persons WHERE Address IS NOT NULL
GROUP BY:
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
相关文章推荐
- 深度学习基本概念
- 关于MediaRecorder.setOutputFile(file)的问题!
- Java设计模式(一) Adapter(适配器)模式及I/O实例引申
- visual studio installer制作安装包——Installer 类
- jquery从tr获取td
- 压力测试 webbench
- firstboot auto execute shell
- EventBus (一) 使用详解——初步使用EventBus
- 新学的插件jquery.tablesorter很好用,说说遇到的表格动态添加的数据不能排序的问题
- 多线程(3):线程的状态
- 防止特殊的sql关键字输入的avoidSqlAttack
- Python-Eclipse搭建开发环境PyDev
- Filter(过滤器)与Interceptor(拦截器)的区别
- 人工智能的妙用:谷歌公布图像字幕技术
- URAL 1960 Palindromes and Super Abilities
- 苹果企业账号使用注意事项
- 函数调用时堆栈框架
- android使用webview加载网页
- APNS推送证书生成与验证
- 如何用SSH密钥远程登录腾讯云linux服务器