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

1、创建一个老师表 CREATE TABLE teachers ( id INT (10) NOT NULL auto_increment, NAME nvarchar (10) NOT NULL, sex nvarchar (8) NOT NULL, PRIMARY KEY (id) ); 2、对teachers表进行查询 SELECT * FROM teachers; 3、查询当前数据库中的所有表 SHOW TABL

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

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 另一个表名(另一个表的主键)

复合主键的例子:我写大致步骤,每个步骤的具体做法,可以自行百度 1、        安装好SQLServer数据库、eclipse 2、        配置SQLServer的IP和端口号,这个可以上网搜,配置SQLServer为sa登录 3、        在SQLServer数据中创建yq数据库,在yq数据库中创建yq_user数据表,当

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包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值