数据库基本语法(SqlServer,MySql)

数据库简单语句:注释(开头--)

  1》创建库

create database LiangshanHeros

   表和列的命名规则(SqlServer 2000):

  • 必须以字母,下划线,或者汉字开头(最好是以字母开头);
  • 长度不能超过128个字符;
  • 不能使用系统保留字;
  • 只能使用如下字符A-Z,a-z,0-9,$,#,_等;

  2》使用数据库

use LiangshanHeros


  3》创建表

create table hero
      (heroId int primary key, --排名
       heroName varchar(50),--名字
       heroNickName varchar(50),--外号
       sex char(2)
       )

 注:如果有外键,则需要再类型后面加上 foreign key reference 另一个表名(另一个表的主键)

 复合主键的例子:

create table test2
(testId int ,
 testName varchar(30),
 testAge int,
 primary key(testId, testName) --指明复合主键
)


维护数据的完整性--约束:

  约束有五种:not null;unique;primary key;foreign key;check;    
  • 1,unique:约束该列值是不能重复的,但是可以是NULL(不能又多个NULL值,否则违反不可重复)
           主键:不可重复,且不能为NULL。
           一个表最多只能有一个主键,但是可以有多个unique约束。
  • 2,check的举例:
   create table test3
  (testId int ,
 testAge int check(testAge>0 and testAge<150)
)

 
   4》插入数据

insert into hero values(1, '宋江', '及时雨', '男')

      插入数据的语法:insert into 表名(字段列表) values(值列表)
   5》查询

select * from hero where heroId>2

   6》修改

update hero set sex='女' where heroId=1

     更新数据的语法;update 表名 set 字段名1=?,字段名2=? where 条件
   7》删除记录

delete from hero where sex='女'
 数据库复杂查询语句

   1》查询指定列:select 字段1,字段2 from 表名 where 条件;
   2》取消重复行

select distinct 字段列表 from 表名 where 条件;
    3》算术表达式:
       处理null值函数:isnull(字段,0),如果该字段为NULL,则返回0,如果不为NULL,则返回字段值;
       between 1 and 100:范围在[1,100]区间
   4》like(模糊查询):%代表0到多个字符; _代表单个字符;
    5》in(批量查询):where 字段 in (x,y,z ……)
    6》order by
select 字段 from 表 order by 待排序的字段1 asc(升序)/desc(降序),待排序字段2 asc/desc
     7》分页查询:select top XX 字段 from ……
         注:XX指显示从1~XX 行的结果
         例:如果想取出从x到y条数据,则应使用嵌套查询。
select top y-x+1 * from 表A where 字段2 not in
(select top x-1 字段 from 表A order  by 字段2)
order by 字段2
        分析:排除前x-1条数据,从x条开始挑出y-x+1条数据,即可。
        注意,最后的order by 不能省略,否则会出错。
    8》聚合函数:max,min,avg,sum,count;  
         注:聚合不能出现在where子句中,除非聚合位于Having子句,或者子查询中……
    9》SQL语句优化的原则:尽可能把最好的条件写在最右面。最好的条件指能使结果最好的的条件;
   10》统计函数:count,如果统计行数,一般写select count(*) from 表名;
   11》group by:用于对查询的结果分组统计
   12》having:用于限制分组显示结果。往往和group by 结合使用,可以对分组结果进行再次筛选。
         总结:按这样的顺序写SQL语句:group by,having,order by; 
   13》多表查询:
select 字段1,字段2,a.字段3
              from 表A a,表B b
              where a.字段X=b.字段Y
      其中,a和b分别是表A和B的别名, 一旦用别名,最好都用别名
   14》 单行子查询(即查询结果是单行数据)用=,多行子查询用in;    15》匹配字段为空的条件时,不能用=null,而是用 is null,否则条件不满足。 SqlServer 2000支持的数据类型 12,支持的数据类型:
    1》字符型:
    char和varchar都是非unicode编码;
    nchar和nvarchar都是unicode编码;
    注:一般带有汉字的字段类型用nvarchar,全英文或符号的用varchar
    2》数字型:
     bit:0或1
     int:
     bigint:
     float:存放小数时,需要指定尾数的位数,不推荐使用
     numeric:存放小数,需要指定小数的总位数,和尾数的位数,比较灵活;
     3》日期类型:
     datatime:表示日期,毫秒级;
     timestamp:时间戳;
     4》图片
      image:保存图片,但是很少用。一般的做法是保存图片的路径,根据路径到图片服务器(或图床)。因此一般图片都不放在数据库中;在图片有安全要求时,可以考虑放入数据库,且图片不能太大,否则数据库负载较重。
      5》视频
      binary:跟图片的道理雷同,很少用。
SqlServer 2000 数据库的备份和恢复
1,使用企业管理器完成备份和恢复:分离和附加数据库;备份和还原。 2,使用查询分析器完成备份和恢复(即命令行):
  --备份
  backup database 数据库名字 to disk='F:\\backup.bak'
  --删除数据库
  drop database 数据库名字
  --还原
  restore database 你的数据库名字 from disk='备份文件路径'
注:有时可能不需要备份整个数据库,只需要备份表,自己在网上搜索。
MySql:
1,命令行连接MySql数据库:mysql -u 用户名 -p密码
      注意:-p与密码之间没有空格。
2,MySql的基本语法
1》show databases;
2》use 数据库名;
3》show tables;
4》create database [if not exists] 数据库名 [character set utf8];
     注:查看之前创建数据库的指令:
show create database 数据库名;
5》drop database 数据库名;
6》备份数据库:mysqldump -u 用户名 -p密码 数据库名 > 文件名.sql
     注:该指令是在DOS下执行的,不能在Mysql命令行控制台使用
7》恢复数据库:source 文件名.sql
     注:要先创建一个数据库,名字可以自拟,并进入该数据库。该指令是在Mysql命令行控制台使用的。
 
Java操作SqlServer
1,JDBC驱动的分类:jdbc-odbc桥连;本地协议纯Java驱动;网络协议纯java驱动;本地API。(前两个用的比较多)
2,jdbc的不足:不能更好的实现跨数据库操作,于是诞生了Hibernate项目。Hibernate是对jdbc的再封装,实现了对数据库操作更宽泛的统一和更好的移植性。
3,Statement和PreparedStatement的区别:
都可以执行Sql语句,但后者有预编译功能,更适合多次重复操作,或者批量操作,能够提高执行效率;
其次,后者可以在程序中使用?赋     值,能有效的防止SQL注入漏洞;
--SQL注入漏洞例子:
 。。。。
4,如果使用jdbc-odbc,不需要引入任何包,如果使用jdbc方式,需要引入jar包。

猜你喜欢

转载自ghost-face.iteye.com/blog/1814982