一:SQL简介:
?
SQL语句是对所有的关系型数据库的通用命令语句,而JDBC API只是执行SQL语句的一个工具。当然每种数据库也为了实现特有功能有自己特殊的语句,但是为了实现跨平台我们应该减少特定功能的SQL。
二:常见的SQL语法:(演示使用SQLyogtu)
?
1:创建一个新的数据库:
CREATE DATABASE IF NOT EXISTS databaseName;
?
2:删除一个已有的数据库:
DROP DATABASE databaseName;
?
3:使用一个已有的数据库:
USE databaseName;
?
4:查看数据库中包含多少个数据表:
SHOW TABLES;
?
5:显示表结构(多少列,每一列的数据类型信息等):
DESC databaseName;
?
6:创建一个和当前表一样的表;
6.1:依照当前表创建一个一样的表(包括字段和数据)
CREADTE TABLE tableName
AS
SELECT * FROM tableName;
6.2:创建一个和当前一样的表(仅仅包含字段)
CREATE TABLE tablename
LIKE
oldtable;
?
6.3:创建一个表和当前表一样且不包含数据:
CREATE TABLE tablename
AS
SELECT col1,col2.... FROM oldtabel
DEFINITION ONLY;
?
7:修改表:
ALTER TABLE tableName;
?
7.1:更新表插入行:
ALTER TABLE test
ADD
(
aaa varchar(255)default ‘test’,
bbb varchar(255)
);
?
7.2修改某列的数据类型:
ALTER TABLE test
MODIFY bbb int; //将bbb的数据类型改为Int
?
8:删除某一列:
ALTER TABLE tableName
DROP aaa; //将指定tableName中aaa列删除掉
?
9:重命名表名:
ALTER TABLE tabelName
Rename to newName;
?
10:TURNCATE表;
删除表中的所有数据但是保留表结构,其效率高于delete且一次性删除所有的数据。(注意只删除数据)
TURNCATE TABLE tableName;
11:表中字段约束关键字:
NOT NULL :非空约定
UNIQUE :唯一约束 指定列中不能出现重复值
PRIMARY KER : 主键 唯一标示符
FOREIGN KEY : 外键 构建标间的完整映射
?
约束可以在建表时进行也可以在建表后更新。
?
12;索引:
索引的作用好比目录的作用即都是为了加快查询速度。正如我们阅读书是根据要查的知识点来查询,所以索引也是依托在数据表的某一列或者某几列上来进行的。索引虽然是单独存放但是不能单独存在。索引的好处是加快查询速度但是也会带来额外的系统开销和内存开销。
?
12.1:创建索引:
CREATE INDEX index_name
ON table_name(column….) 可以建立在任意个数据列上
?
DROP INDEX index_name
ON table_name;
?
13:视图:视图不是数据表只是一个或多个数据表中的逻辑显示及查询结果。其本质就是一条被命名的SQL语句。
13.1:创建
CREAT OR REPLACE VIEW view_name
AS
SQL;
13.2:删除:
DROP VIEW view_name;
?
14:插入操作:
1.INSERT INTO 语句
Example:
INERT INTO table_name(column1,column2,…)VALUES(values1,values2…);
?
2.子查询的值进行插入:
INSERT INTO student(student_name)
SELECT teacher_name FROM teacher; (只需保证数据个数和数据类型一致即可)
?
15:UPDATE 更新语句:
UPDATE table_name
SET column1= values,column=values
WHERE condition;
?
16:DELETE FROM: 删除语句:
DELETE FROM table_name
WHERE condition;
17:几个简单的SQL语句:
选择:SELECT * FORM table1 WHERE 范围
插入:INSERT INTO table1(field1,field2) VALUES(value1,value2)
删除:DELETE FROM table1 WHERE 范围
更新:update table1 set field1=value1 where 范围
查找:SELECT * FROM table1 WHERE field1 LIKE ’%value1%’
排序:SELET * FORM table1 ORDER BY field1,field2 [DESC](DESC表示倒序,ASC表示升序)
总数:SELECT COUNT AS totalcount FROM table1
求和:SELECT SUM (field1) AS sumvalue FROM table1
平均:SELECT AVG (field1) AS avgvalue FROM table1
最大:SELECT MAX(field1) AS maxvalue FROM table1
最小:SELECT MIN(field1) AS minvalue FROM table1
18:几个高级运算符:
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
19:外链接:
内连接。(典型的连接运算,使用像 = 或 <> 之类的比较运算符)。包括相等连接和自然连接。
内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。
外连接。外连接可以是左向外连接、右向外连接或完整外部连接。
在FROM子句中指定外连接时,可以由下列几组关键字中的一组指定:
LEFT JOIN 或 LEFT OUTER JOIN。
左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
RIGHT JOIN 或 RIGHT OUTER JOIN。
右向外连接是左向外连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
FULL JOIN