资源描述
SQL学习笔记
Ø SQL命名规则
Ø SQL字符类型
Ø SQL基本数据类型
Ø Unicode编码:用两个字节表示一个字符(可以是汉字和字母)
Ø 非unicode编码:用一个字节表示一个字母,两个字节表示一个汉字
Ø SQL基本的语法:(增删查改)以下所指条件都可以是i多条件的
Ø 创建数据库:create database 数据库名;
Ø 创建表:create table 表名(输入需要的字段及限制约束)
Ø 删除表:drop table 表名
Ø 删除行(列):delect from 表名 where 删除条件(当不带删除条件则表示全部删除)
Ø 修改表:update 表名 set 修改内容 where 修改条件
Ø 查询表:select 需要查找的字段 from 表名 where 查找条件
Ø
1. SQL语句不区分大小写
2. 外键的语法:表名 数据类型 foregin key references 被指向的表名(被指向表名的指向字段)
3. 一个外键只能指向一个主键,并且外键与主键的数据类型要一致
create database hyf
use hyf --表明使用某个数据库
go
-----------------------创建表头---------------------------
create table hhs
(ID int primary key , --定义主键,在添加数据时主键不允许为空,不许修改,
--也不许作为删除时的条件
AGE INT ,
NAME VARCHAR(50))
-----------------------添加数据---------------------------
--语法:insert into 表名values(按顺序添加,并用逗号隔开)
insert into hhs values(110,21,'AAA')
insert into hhs values(111,22,'AAA')
insert into hhs values(112,23,'AAA')
insert into hhs values(113,24,'AAA')
insert into hhs (ID ,age) values (115,30) --需要添加部分数据时需要在表名后面添加相应的字段
--简单查询语句
--语法:selete *from 表名
--带条件:select *from 表名where 条件
select *from hhs
drop table hhs
select *from hhs where age<23
----------------------------修改(update)----------------------
--修改一个一个值
update hhs set age=age*1.5 where age<23
--将编号为的行age和name进行修改(对多个条件进行修改时需要用逗号隔开
--语法:update 表名set 修改,修改,。。where 修改标识条件
update hhs set age=100,name='bbb' where id=112
--将name为null的行中年龄修改(修改条件的值为空时不可以用等于号而是用'is'
update hhs set age=200 where name is null
----------------------------删除(delect)-----------------------
--删除所以数
--语法:delete from 表名;
delete from hhs
--删除指定的数据例如:删除年龄小于并且大于或者年龄为空的人
--delete from 表名where 条件
delete from hhs where (age<100 and age>=22) or name is null
Ø SQL高级查询
Ø SQL在查询的字段里面可以使用算术表达式 如select sal*13 from emp where 条件
1. 使用算术 表达式:select 表达式 from 表名 where 条件(可以不要条件)
2. 使用列的别名:select 字段 as 别名 from 表名。。。。
3. 在执行查询时可以直接使用日期进行比较,如:1999-9-9
4. 区间查询:select *from 表名 where bettween num and num
或者:select *from 表名 where 布尔条件
5. 模糊查询:like %:表示0到多个字符 _:表示单个字符
1) 查询首字母为’s’的列:select *from emp where like ‘s%’
2) 查询第三个字母为’s’的列:select *from emp where like ‘_ _s%’
6. Where 条件中使用in查询
语法:select *from 表名 where 字段 in(写入要查询的内容)
7. 使用 is null来处理null值:is null(字段,0)含义是:如果不为null则返回字段值,若为null则返回0.
8. 使用order by 来进行排序,默认是asc(升序排列)desc则为降序排列
如;select *from 表名 order by 字段1,字段2.。。。
9. 使用别名来进行排序:
如:select 字段1,字段2,字段3 别名 from 表名 order by 别名
Ø SQL函数查询
1. 使用min()函数求出最小值、max()函数求取最大值
select empname,empsal from list$ where empsal=(select min(empsal) from list$)
2. 使用avg()求取平均值、max()求出总数
Select avg(字段) from 表名
Select sum(字段) from 表名
实例: select empname,empsal from list$ where empsal<(select avg(empsal) from list$)其结果为显示大于平均数的所有数据
3. 使用count()统计数据的行数(个数)
Select count(*) from tableName
4. 使用group by 来都查询的结果进行分类统计
Select 统计函数(可写多个),字段(可写多个) from 表名 group by 字段(注意:此字段必须在前面有声明出,并且前面所声明的字段都要在group by 后面实现)
5. 使用having与group by 结合对分组的结果进行筛选
用法:直接加在group by 分组字段 having 筛选条件
小总结:
Ø SQL多表查询
1. 多表查询是基于两个或两个以上表之间的查询(也叫跨表查询)
2. 语法:selsct 需要查询的字段 from 表名(多个) where 匹配条件(即主键于外键的关系)
select l.empname,l.empage,d.[add] from list$ l,dept$ d
where l.deptnum=d.deptnum order by d.dept
Ø SQL子查询
1. SQL子查询是嵌入到其他select语句中的查询(也叫嵌套查询)
SQL子查询分单行子查询和多行子查询,单行自查询使用“where =”而多行子查询使用”where in”
Ø SQL多表查询
Ø MSSQL数据库的备份还原
使用命令行来备份数据库和回复数据库:
backup database 需要备份的数据库名 to disk='备份路径'
注:备份路径使用‘/’或‘\\’
restore database 需要恢复的数据库名 to disk=’备份数据库路径’
Ø 数据库的约束
Ø Java对数据库的操作:
JAVA对数据库的操作:JDBC-ODBC
import java.sql.*;
public class Odbc2{
public static void main (String []args){
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//加载驱动
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//得到数据库链接
ct=DriverManager.getConnection("jdbc:odbc:myjdbc","sa","sa");
//操作数据库
ps=ct.prepareStatement("select *from dept$ where dept=?");
//PreparedStatement查询的时候使用问号查询
ps.setString(1, "ww1") ;
rs=ps.executeQuery();
while(rs.next() ){
String deptnum=rs.getString(1);
String dept =rs.getString(2);
String add=rs.getString(3);
System.out.println(deptnum+" "+dept+" "+add+" ");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if((rs!=null)){//先创建后关闭、后创建先关闭
rs.close();
}
if(ps!=null){
ps.close();
}
if(ct!=null){
ct.close();
}
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
JAVA操作数据库:JDBC(此操作无需配置ODBC数据源,可直接连接数据库并操作数据库)需要引入连接数据库jar包
executeQuery:查询 executeUpdate:增删改
在取出数据时,若使用*号查找,则需要按原来数据库的编号取出,若用自己写入查找字段则按输入字段编号;
package odbc;
import java.sql.*;
public class Jdbc {
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
//加载驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//得到数据库链接
ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=myjdbc","sa","sa");
//操作数据库
ps=ct.prepareStatement("select *from dept$");
rs=ps.executeQuery();
while(rs.next()){
String deptnum=rs.getString(1);
String dept=rs.getString(2);
String add=rs.getString(3);
System.out.println(deptnum+" "+dept+" "+add+" ");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if(rs!=null) rs.close();
if(ps!=null) ps.close();
if(ct!=null) ct.close();
} catch (Exception e2) {
// TODO: handle exception
}
}
}
}
使用java创建数据库、数据表、备份、还原。(execute)
import java.sql.*;
public class Test {
static String url="com.microsoft.jdbc.sqlserver.SQLServerDriver";
static String url2="jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=mytest";
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
Class.forName(url);
ct=DriverManager.getConnection(url2,"sa","sa");
//创建数据库
//若执行的是ddl语句,则使用的是execute();并且其为一个布尔值;
ps=ct.prepareStatement("create database names");
ps.execute();
//创建表
ps=ct.prepareStatement("create table ppse");
ps.execute();
//删除数据库
ps=ct.prepareStatement("delete from names");
ps.execute();
//备份数据库
ps=ct.prepareStatement("backup database names to disk='f:/'");
ps.execute();
//恢复数据库
ps=ct.prepareStatement("restore database names to disk='f:/'");
ps.execute();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
try {
if(ps!=null) ps.close();
if(ct!=null) ct.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
}
展开阅读全文