出生牛犊不怕 SQLServer Part2
3、技术实例:(数据库)
1、 加载数据库脚本
source C:\Users\Administrator\Desktop\script-1.sql ;——mySQL
source (\.) Execute an SQL script file. Takes a file name as an argument.
2、 保存为数据库脚本
Tee C:\Users\Administrator\Desktop\script-1.sql ;
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
notee 输入的时候就会把tee与notee进行保存为sql脚本。
3、 查询当前实例的数据库集合
Show databases ; ——mySQL
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| drinks |
| mysql |
| performance_schema |
| test |
+--------------------+
4、使用某个数据库
mysql> use drinks;
Database changed
5、查询当前数据库的表集
mysql> show tables;
+------------------+
| Tables_in_drinks |
+------------------+
| easy_drinks |
| my_contacts |
+------------------+
6、查询表的结构
mysql> desc my_contacts;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
7、判断存在
方法1:精确方法
Sysobjects是Master系统视图
object_id是抓取对象在视图中的ID
OBJECTPROPERTY是根据对象判断类型函数,返回的是bool
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tb];
方法2:模糊方法
declare @a varchar(2000) ——MSSQL 删除约束
set @a=(select name from sysobjects where name like 'Name')
set @a= 'ALTER TABLE [dbo].[TableName] DROP CONSTRAINT '+@a
exec (@a)
8、数据库的新建、删、改
<1>新建数据库
mysql> create database myDB; ——mySQL
Query OK, 1 row affected (0.00 sec)
create database mmc; ——MSSQL
<2>数据库修改
exec sp_rename 'a1.name ', 'Name ', 'database' ——MSSQL
<3>删除数据库
mysql> drop database drinks;——mySQL
Query OK, 2 rows affected (0.34 sec)
drop database mySQL;——MSSQL
9、数据表的新建、删、改
<1>新建数据表
mysql> show create table servers;——mySQL显示表的创建方式
| servers | CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL DEFAULT '',
`Host` char(64) NOT NULL DEFAULT '',
`Db` char(64) NOT NULL DEFAULT '',
`Username` char(64) NOT NULL DEFAULT '',
`Password` char(64) NOT NULL DEFAULT '',
`Port` int(4) NOT NULL DEFAULT '0',
`Socket` char(64) NOT NULL DEFAULT '',
`Wrapper` char(64) NOT NULL DEFAULT '',
`Owner` char(64) NOT NULL DEFAULT '',
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table' |
mysql> create table my_contacts( ——mySQL
-> ID int not null Auto_increment,
-> last_name varchar(20) not null,
-> first_name varchar(20) not null,
-> email varchar(50) not null,
-> birthday date,
-> profession varchar(50),
-> location varchar(50),
-> status varchar(20),
-> interests varchar(20),
-> seeking varchar(100) ,
Parmary key (名 ) );
Create Table Article ——MSSQL
(
Id Int Identity(1,1) Not Null,——自增
Title Varchar(50) Not Null Constraint uq_ArticleTitle Unique,——1、唯一约束
Keywords Varchar(50) Not Null Constraint ck_KeywordsLength Check (len(Keywords)<10),——2、检查约束
Abstract Varchar(500) Not Null, ——3、非空约束
Author Varchar(50) Not Null,
[Type] TinyInt Not Null Default 0 Constraint ck_ArticleType Check([Type] in (0,1,2)),
IsOnIndex Bit Not Null Default 1, ——默认值
Content Text Not Null,
SourceCode Varchar(100) Null,
[Source] Varchar(50) Not Null Default 'TraceFact',
SrcUrl Varchar(150) Null,
PostDate DateTime Not Null Default GetDate(),
ViewCount Int Not Null Default 0,
ClassId Int Not Null ,
Constraint pk_Article Primary Key(Id), —— 4、主键约束
Constraint fk_Article foreign key(scoreId) references student(id)——5、外键约束,为主表student建立外键关系
)
<2>修改数据表
mysql> alter table 旧表名 rename to 新表名; ——mySQL
use databasename;
EXEC sp_rename '旧表名', '新表名';——MSSQL
<3>删除数据表
mysql> drop table mytables;——mySQL
drop table a1;——MSSQL
10、字段、约束(数据表成员)的增加、删、改
<1>增加字段
mysql> alter table mytable——mySQL 添加字段
-> add column mycolumn2 int first , 其中还有 after column 排在指定的列之后
-> add primary key (mycolumn2); ——mySQL 添加主键
alter table test1 add nob int identity(1,1) not null ——MSSQL 添加字段
alter table test1 add primary key (nob); ——MSSQL 添加主键
alter table [dbo].[Article2] add default ((1)) for [IsOnIndex] ——MSSQL添加默认约束
alter table [dbo].[Article2] with check add constraint [ck_KeywordsLength2] check ((len([Keywords])<(10))) ——新建check
alter table [dbo].[Article2] check constraint [ck_KeywordsLength2] ——MSSQL把ck_KeywordsLength2添加check约束集合
alter table [dbo].[Article2] with check add constraint [ck_ArticleType2] check (([Type]=(2) OR [Type]=(1) OR [Type]=(0)))
<2>修改字段
mysql> alter table mytables
-> change column firstname firstName varchar(30) ,——mySQL 改变名字、类型
-> add primary key ( lastname );
mysql> alter table mytable——mySQL 不改变名字,改类型
-> modify mycolumn2 varchar(20);
exec sp_rename 'a1.name ', 'Name ', 'column ' ——MSSQL 只改变名字
alter table test1 alter column ID varchar(200) null ——MSSQL 不改变名字,改类型
alter table test1 drop Constraint constraintname; ——MSSQL 删除约束
alter table test1 add primary key (nob); ——MSSQL 添加主键约束
alter table Articles2 add constraint fk_job_id foreign key (Id) references Article3(Id); ——MSSQL添加外键约束
alter table dbo.Article2 add constraint uk_Id unique nonclustered (Id); ——MSSQL添加唯一约束
alter table [dbo].[Article2] add constraint uk_Id default ((1)) for [IsOnIndex] ——MSSQL添加默认约束
alter table [dbo].[Article2] with check add constraint [ck_KeywordsLength2] CHECK ((len([Keywords])<(10))) ——新建check
alter table [dbo].[Article2] chenk constraint [ck_KeywordsLength2] ——MSSQL把ck_KeywordsLength2添加check约束集合
alter table [dbo].[Article2] with check add constraint [ck_ArticleType2] check (([Type]=(2) OR [Type]=(1) OR [Type]=(0)))
alter table [dbo].[Article2] with check add constraint [ck_KeywordsLength2] check ((len([Keywords])<(10))) ——新建check
alter table [dbo].[Article2] check constraint [ck_KeywordsLength2] ——MSSQL把ck_KeywordsLength2添加check约束集合
备注:最后一栏column/database/index/object等等,还有约束的修改只能是先删除再新建。
还能够建立联合主键,就使用利用两个字段来确定一条数据,一般这样的数据不会进行修改。
<3>删除字段
mysql> alter table mytable ——mySQL
-> drop column mycolumn2;
alter table test1 drop column nob; ——MSSQL 删除字段
alter table test1 drop Constraint constraintname; ——MSSQL 删除约束
11、连接词 and、or 、not
<1>and:A and B,即是A与B 要同时成立。
<2>or:A或者B,只要其中一个成立就成立
<3>not:not A and B,当A不成立而且B成立;A and not B,当A成立而且B不成立; not (A and B),当A与B都不成立
12、符号 <、>、=、<=、=>、<>、null
1、<:小于
2、>:大于
3、<=:小于或者等于
4、>=:大于或者等于
5、<>:不等于;=等于
6、is null 或者是 not null
7、<’D’: field的第一个字母早于D;>’A’:field的第一个字母要晚于A
13、匹配关键字LIKE、通配符“%”与占位符 “_”与区间关键字“between”与集合关键字“in“
①:where field Like ‘%CA%’,filed字段里面包含CA字符的所有结果;
②:where field Like ‘CA%’,field字段前面是CA字符的结果;
③:where field Like ‘%CA’,field字段后面是CA字符的结果;
③:where field Like ‘_CA%’,field字段前面第二第三个是CA的结果;
④:where field between 20 and 30 在20与30之间 或者 between ‘A’ and ‘Z’ 在A与Z之间。
⑤:where field in (1,2,3) filed(类型相同)是1,2,3中的其中一个 或者 where field in (‘1’,‘2’,‘3’)field在‘1’、‘2’、‘3’中的其中之一,即是filed的类型要与in里面的类型相同。
14、SQL语句select、insert、delete、update
①:select field from table
②:insert into table (fields) values (values)
③:delete from table where field 条件
④:update table set field = value where field 条件,例子:update table set table.column2= Right(table,2)
⑤:SQL语句是可以结合运算的。Update set const=const=1;
15、SQL字符串处理函数
①:Right (column,2) 从右边开始截取2位的字符
②:Substring _index( column,“,”,2) 截取第二个逗号(字符)前的字符串
③:Substring (column,numberA,numberB) 截取列中,从A位开始读取后面B位的字符串
④:Upper(column) 转换大写、
⑤:Lower (column) 转换小写
⑥:Reverse(column) 反转字符串的顺序
⑦:Ltim( colum ) 左去除空
⑧:Rtrim( column) 右去除空
⑨:Length (column) 获取字符长度,返回一个int,但是在MSSQL len(Keywords)<10