目前最流行的两种后台数据库即为Mysql 和 SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统,你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL(数据库管理标准)。还有,这两种数据库系统都支持二进制关键字和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式、也都能够在.NET或J2EE下运行正常,同样,都能够利用RAID(独立冗余磁盘阵列)
纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。
当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。
如果说这两种数据库那种更好,只能说要根据实际需求来选择数据库。
Mysql定义数据库和主键:
create database name; 创建数据库
use databasename; 选择数据库
drop database name 直接删除数据库
CREATE TABLE --创建一个数据库表
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P) //声明主健写在最后
)
SqlServer定义数据库和主键:
CREATE TABLE Persons
(
Id_P int NOT NULL PRIMARY KEY, //声明主健 紧跟列后
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Mysql 、SqlServer添加:
ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
MySQL删除:
ALTER TABLE Persons DROP PRIMARY KEY
SQL Server删除:
ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,每个表可以有多个unique,但只能有一个primary key。
MySQL添加:
CREATE TABLE Persons
(
Id_P int NOT NULL,
UNIQUE (Id_P) //写在最后
)
MySQL删除:
ALTER TABLE Persons DROP INDEX uc_PersonID
SQL Server添加:
CREATE TABLE Persons
(
Id_P int NOT NULL UNIQUE, //紧跟列后
)
SQL Server删除:
ALTER TABLE Persons DROP CONSTRAINT uc_PersonID
CHECK 约束用于限制列中的值的范围,如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
My SQL添加:
CREATE TABLE Persons
(
Id_P int NOT NULL,
CHECK (Id_P>0) //写在最后
)
SQL Server 添加:
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0), //紧跟列后
)
MySQL / SQL Server添加多个:
CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes') //多个条件
)
MySQL / SQL Server对已有字段进行添加:
ALTER TABLE Persons ADD CHECK (Id_P>0)
MySQL / SQL Server删除:
ALTER TABLE Persons DROP CONSTRAINT chk_Person
DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
My SQL / SQL Server添加:
CREATE TABLE Persons
(
Id_P int NOT NULL,
City varchar(255) DEFAULT 'Sandnes' //紧跟列后,默认值字符串Sandnes
)
通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderDate date DEFAULT GETDATE() //紧跟列后,函数
)
MySQL对已有表进行添加:
ALTER TABLE Persons ALTER City SET DEFAULT 'SANDNES'
SQL Server对已有表进行添加:
ALTER TABLE Persons ALTER COLUMN City SET DEFAULT 'SANDNES'
MySQL删除:
ALTER TABLE Persons ALTER City DROP DEFAULT
SQL Server删除:
ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
Mysql和SqlServer在表上创建一个简单的索引(允许使用重复的值):
CREATE INDEX index_name ON table_name (column_name) //"column_name" 规定需要索引的列。
Mysql和SqlServer在表上创建一个唯一的索引(两个行不能拥有相同的索引值):
CREATE UNIQUE INDEX index_name ON table_name (column_name)
Mysql删除:
ALTER TABLE table_name DROP INDEX index_name
SqlServer删除:
DROP INDEX table_name.index_name
我们通常希望在每次插入新纪录时,自动地创建主键字段的值。
mySql的主键自动增加是用auto_increment字段,默认地,AUTO_INCREMENT 的开始值是 1,每条新纪录递增 1
sqlServer的自动增加则是identity字段.
Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
我们可以在表中创建一个 auto-increment 字段。
用于 MySQL 的语法
MySQL增加:
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (P_Id)
)
设置自增的起始值:
ALTER TABLE Persons AUTO_INCREMENT=100
SqlServer增加:
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,或则是写成P_id int primary key identity (1,1),
)
要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)
ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值,枚举最多可以有65,535个元素。
create table meijut (f1 enum('1','2','3','4','5','6'))
desc meijut
+-------+-------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------------------------+------+-----+---------+-------+
| f1 | enum('1','2','3','4','5','6') | YES | | NULL | |
+-------+-------------------------------+------+-----+---------+-------+
insert into meijut values('5');
create table jihe(f1 set('f','m'));
insert into jihe values('f');
Mysql判断一个数据库表是否存在并删除的语句是:
drop table if exists jihe
SqlServer判断一个数据库表是否存在并删除的语句是:
if exists (select * from sysobjects where name='Sheet1$' and xtype='U') drop table Sheet1$
jihe数据库名 Sheet1$表名
MySQL:
Show tables; 显示一个库中的所有表
Desc table; 显示一个表的表结构
Show create table tablename; 显示一个表的详细创建信息
alter table t1 rename t2; 给表重命名
alter table meijut add column f2 int default 0; 新增一列
alter table meijut modify f2 text; 修改一列
SQL Server:
select top 8 * from table1
MySQL:
select * from table1 limit 5
select * from table1 limit 0,5
SqlServer:
select * from test where isnull(no,0)=0;
MySQL 可以使用 ISNULL() 函数
MySQL:
select * from test where ifnull(no,0)=0;
SqlServer:–和 /* */
MySql:–和/**/和#
SqlServer识别符是[],[type]表示他区别于关键字
MySQL识别符是 `