查询SQLServer正在执行的语句

查询SQLServer正在执行的语句
查询SQLServer正在执行的语句

查询,统计股票主要财务数据,查询Oracle正在执行的SQL语句,查询python模块的帮助文档,查询SQLServer正在执行的语句

查找/etc/passwd下bash为/bin/bash用户的数,查找两个有序数组中的中位数,查找数组中最大值最小值的另一种思路

[代码] [C/C++]代码

#include

class A {

public:

A( ):count(1) {}

virtual ~A( ) {}

virtual A* Copy( ) const = 0;

virtual void Out( ) const = 0;

protected:

int count;

};

class B:public A {

public:

~B( ) { --count; Out( ); }

virtual A* Copy( ) const {

B *p = new B(*this);

++p->count;

return p;

}

//C#起名函数(类似页游的用户名生成)

//C#求所有可能的排列组合

virtual void Out( ) const

{ cout << count << endl; }

};

void main( )

{

B b;

A* a1=&b;

a1->Out( );

a1 = a1->Copy( );

a1->Out( );

delete a1;

}

//c#删除指定文件夹下的文件方法封装

//C#设置开机启动程序

[代码] [C/C++]代码

#include

using namespace std;

int main() {

int b = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};

int r,c,i,j;

int d;

while (cin>>r>>c)

{

int **a = new int*[r];

for (i=0; i

a[i] = new int[c];

}

for (i=0; i

for (j=0; j

cin>>a[i][j];

}

int dir =0;

int tempi, tempj;

d[0] = 0;//up

d[1] =c; //right

d = r;//down

d =0;//left

i=0;

j=0;

cout<

while (1) {

tempi = i+b[dir][0];

tempj = j+b[dir][1];

if (tempi>=d[0]&&tempi=d&&tempj

j = tempj;

cout<

}

else{

if (dir%3 == 0){

d[dir]++;

if (d[dir] == d[(dir+2)%4]) break;

}

else{

d[dir]--;

if (d[dir] == d[(dir+2)%4]) break;

}

dir = (dir+1)%4;

}

}

for (i=0; i

delete []a[i];

a[i] = NULL;

}

delete []a;

a = NULL;

}

return 0;

}

[代码] 普通递归算法

#include

using namespace std;

int partition(int *a, int l, int h){

int x = a[l];

int i = l;

int j = h+1;

int temp;

while (i

while (a[++i]

while(a[--j]>x);

if (i

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

a[l] = a[j];

a[j] = x;

return j;

}

void qsort(int *a, int l, int h){

if (l>=h)

return;

int q = partition(a, l, h);

qsort(a, l, q-1);

qsort(a, q+1, h);

}

int main(){

int a = {9,8,7,6,5,4,3,2,1};

qsort(a,0,8);

for (int i=0; i<9; i++)

cout<

return 0;

}

.[代码] 非递归算法

//数据规模很大时,递归的算法很容易导致栈溢出,改为非递归,模拟栈操作,最大长度为n,每次压栈时先压长度较大的,此时栈深度为logn。

#include

using namespace std;

int partition(int *a, int l, int h){

int x = a[l];

int i = l;

int j = h+1;

int temp;

while (i

while (a[++i]

while(a[--j]>x);

if (i

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

a[l] = a[j];

a[j] = x;

return j;

}

void qsort(int *a, int l, int h){ if (l>=h)

return;

int *s = new int[h-l+1];

int p = 0;

s[p++] = l;

s[p++] = h;

int low,high,q;

while (p>0){

high = s[--p];

low = s[--p];

if (low>=high)

break;

q = partition(a, low, high);

if (q-low > high-q){

s[p++] = low;

s[p++] = q-1;

if (high > q){

s[p++] = q+1;

s[p++] = high;

}

}else {

s[p++] = q+1;

s[p++] = high;

if (q > low){

s[p++] = low;

s[p++] = q-1;

}

}

}

delete []s;

}

int main(){

int a = {9,8,7,6,5,4,3,2,1};

//int a = {1,2,3,4,5,6,7,8,9}; qsort(a,0,8);

for (int i=0; i<9; i++)

cout<

}

[代码] [C/C++]代码

#include

#include

#include

int num[100];

char op[100];

int numcou = 0;

int opcou = 0;

void pushnum(int n)

{

num[numcou++] = n;

}

void pushop(char c)

{

op[opcou++] = c;

}

int numpop()

{

return num[--numcou];

}

char oppop()

{

return op[--opcou];

}

char opc = {'+', '-', '*', '/', '(', ')', '#'}; int p = {

{1,1,-1,-1,-1,1,1},

{1,1,-1,-1,-1,1,1},

{1,1,1,1,-1,1,1},

{1,1,1,1,-1,1,1},

{-1,-1,-1,-1,-1,0,-2},

{1,1,1,1,-2,1,1},

{-1,-1,-1,-1,-1,-2,0}

};

int pri(char s, char e)

{

int i, j, k;

for (i=0; i<7; i++)

{

if (s == opc[i])

if (e == opc[i])

{

k = i;

}

}

return p[j][k];

}

int result(int first, int second, char c) {

switch(c)

{

case '+':

return first + second;

break;

case '-':

return first - second;

break;

case '*':

return first * second;

break;

case '/':

return first / second;

break;

}

}

int calc(char *exp)

{

char c;

int first;

int second;

numcou = 0;

opcou = 0;

pushop('#');

while (*exp!='#' || op[opcou-1]!='#') {

if (isdigit(*exp))

{

pushnum(*exp-'0');

exp++;

continue;

}

else if (isalpha(*exp))

{

pushnum(*exp-'a'+10);

exp++;

continue;

}

else if (*exp=='+' || *exp=='-' || *exp=='*' || *exp=='#' || *exp=='(' || *exp==')')

{

switch(pri(op[opcou-1], *exp))

{

case 1:

c = oppop();

second = numpop();

first = numpop();

pushnum(result(first, second, c));

break;

case 0:

oppop();

exp++;

break;

case -1:

pushop(*exp);

exp++;

break;

default:

break;

}

}

else

exp++;

}

return num[numcou-1];

}

int main()

{

int n, len;

char fir[100], sec[100];

while (scanf("%d", &n)!=EOF)

{

getchar();

while (n--)

{

gets(fir);

len = strlen(fir);

fir[len] = '#';

gets(sec);

len = strlen(sec);

sec[len] = '#';

if (calc(fir) == calc(sec))

printf("YES\n");

else

printf("NO\n");

}

}

return 0;

}

[代码] [C/C++]代码

#include

#include

using namespace std;

int main()

{

int k, e, i, j, res = 1;

string strK[21], strE[21],strk[21], stre[21]; int num[21];

int maxlen = 0;

unsigned int loc = 0;

unsigned int loc1 = string::npos;

while (cin>>k>>e)

{

if(k<=0 || e<=0)

break;

for (i=0; i<21; i++)

num[i] = 0;

for (i=0; i

{

cin>>strK[i];

strk[i].assign(strK[i]);

for (j=0; j

if (strK[i][j]>='A' && strK[i][j]<='Z') strK[i][j]+=32;

}

getchar();

for (i=0; i

{

getline(cin, strE[i]);

stre[i].assign(strE[i]);

for (j=0; j

if (strE[i][j]>='A' && strE[i][j]<='Z')

strE[i][j]+=32;

}

maxlen = 0;

for (i=0; i< e; i++)

{

for (j=0; j

{

loc = 0;

while ((loc1=strE[i].find( strK[j],loc))!=string::npos) {

int b = loc1;

int en = loc1 + strK[j].size();

int len = strE[i].size();

if (b==0 || (b>0&& (strE[i][b-1]<'a'||strE[i][en]>'z'))) {

if (en'z'))

num[i]++;

else if(en == len)

num[i]++;

}

loc = loc1 + 1;

}

}

if (num[i] > maxlen)

maxlen = num[i];

}

cout<<"Excuse Set #"<

for (i=0; i

{

if (num[i] == maxlen)

cout<

}

cout<

}

return 0;

}

[代码] [C/C++]代码

#include

#include

using namespace std;

struct Point{

int x,y;

};

int R,C,cnt;

Point pos[5010];

bool map[5010][5010];

int cmp(Point A,Point B)

{

if(A.x==B.x)

return A.y

else

return A.x

}

void Solve()

{

int i,j,CC,ans=0;

bool f = true;

int disx,disy,tmpx,tmpy,testx,testy;

sort(pos+1,pos+cnt+1,cmp);

for(i=cnt;i>ans;i--) //从后向前,减少遍历次数

{

for(j=i-1;j>=ans;j--)

{

disx=pos[i].x-pos[j].x;

disy=pos[i].y-pos[j].y;

tmpx=pos[j].x;

tmpy=pos[j].y;

CC=2;

testx = pos[i].x+disx;

testy = pos[i].y+disy;

if((testx>=1&&testx<=R&&testy>=1&&testy<=C))

continue;

testx=pos[i].x-ans*disx;

testy=pos[i].y-ans*disy;https://www.360docs.net/doc/6214797415.html,

if (testx<1||testx>R||testy<1||testy>C||map[testx][testy]==0)//3.之前已经被遍历过

continue;

f = true;

while(tmpx-disx>=1 && tmpx-disx<=R && tmpy-disy>=1 && tmpy-disy<=C)//2.无法产生比ans更好地解

{

if(map[tmpx-disx][tmpy-disy]) {

tmpx=tmpx-disx;

tmpy=tmpy-disy;

CC++;

}

else

{

f = false;//跳不出田,不是有效解

break;

}

}

if(CC>ans&&f)

ans=CC;

}

}

if(ans<3)

cout<<'0'<

else

cout<

}

int main()

{

int i;

cin>>R>>C;

cin>>cnt;

memset(map,0,sizeof(map));

for(i=1;i<=cnt;i++)

{

cin>>pos[i].x>>pos[i].y;

map[pos[i].x][pos[i].y]=1;

}

Solve();

return 0;

}

[代码] [C/C++]代码

#include

#include

struct pos

{

int len;

int used;

int r;

int u;

}p[20][20];

int num, wallNum, w, h, Dx, Dy, minPath;

void DFS(int x, int y, int len, int flag)

{

if (len >= p[x][y].len[flag] && p[x][y].len[flag]!=0)

return;

if (x+y!=0 && (x!=Dx||y!=Dy))

p[x][y].len[flag] = len;

len++;

if (p[x][y].r==0 && x+1

DFS(x+1, y, len, flag);

if (p[x][y].u==0 && y+1

DFS(x, y+1, len, flag);

if (x-1>=0 && p[x-1][y].r==0)

DFS(x-1, y, len, flag);

if (y-1>=0 && p[x][y-1].u==0)

DFS(x, y-1, len, flag);

}

int judge()

{

int i, j;

for (i=0; i

for (j=0; j

{https://www.360docs.net/doc/6214797415.html, 秦皇岛同城购俷俸俹

if (p[i][j].used==0 && p[i][j].len[0]+p[i][j].len[1]<=minPath)

return 0;

if (p[i][j].r==1 && i+1minPath && p[i][j].len[1]+p[i+1][j].len[0]+1>minPath)

return 0;

if (p[i][j].u==1 && j+1minPath && p[i][j].len[1]+p[i][j+1].len[0]+1>minPath)

return 0;

}

return 1;

}

int main()

{

int x, y, x1, y1, x2, y2;

char c;

scanf("%d", &num);

while (num--)

{

memset(p, 0, sizeof(p));

scanf("%d %d\n", &w, &h);

p[0][0].used = 1;

Dx = Dy = minPath = 0;

while ((c=getchar())!='\n' && c!=EOF)

{

if (c == 'U')

p[Dx][++Dy].used = 1;

else if (c == 'D')

p[Dx][--Dy].used = 1;

else if (c == 'L')

p[--Dx][Dy].used = 1;

else if (c == 'R')

p[++Dx][Dy].used = 1;

minPath++;

}

scanf("%d", &wallNum);

while (wallNum--)

{

scanf("%d %d %d %d", &x1, &y1, &x2, &y2); x = x1 - x2;

y = y1 - y2;

if (x==0 && y==1)

p[x2][y2].u = 1;

else if (x==0 && y==-1)

p[x1][y1].u = 1;

else if (x==1 && y==0)

p[x2][y2].r = 1;

else if (x==-1 && y==0)

p[x1][y1].r = 1;

}

DFS(0, 0, 0, 0);

DFS(Dx, Dy, 0, 1);

if(judge())

printf("CORRECT\n");

else

printf("INCORRECT\n");

}

return 0;

}

[代码] [C/C++]代码

#include

int n, k, m, h, t;

int dest, f[1001];

char res[1001];

struct Node

{

int n,m,pre;

char ch;

}que[10000],tmp;

int bfs()

{

que[0].n = (n + 1000 * k) % k; que[0].m = (n + 1000 * m) % m; que[0].ch = 0;

que[0].pre = 0;

for (h=0,t=1; h

{

if (dest==que[h].n && h)

return 1;

tmp = que[h];

tn = (tn + m +1000 * k) % k; if (!f[tn])

{

f[tn] = 1;

tch = '+';

tpre = h;

que[t++] = tmp;

}

tmp = que[h];

tn = (tn - m + 1000 * k) % k; if (!f[tn])

{

f[tn] = 1;

tch = '-';

tpre = h;

que[t++] = tmp;

}

tmp = que[h];

tn = (tn * m + 1000 * k) % k; if (!f[tn])

{

f[tn] = 1;

tch = '*';

tm = (tm * m) % m;

tpre = h;

que[t++] = tmp;

}

tmp = que[h];

tn = (tm + 1000 * k) % k;

if (!f[tn])

{

f[tn] = 1;

tch = '%';

tpre = h;

que[t++] = tmp;

}

}

return 0;

}

int main()

{

int i, len;

while (scanf("%d %d %d", &n, &k, &m)!=EOF) {

if (n==0 && k==0 && m==0)

return 0;

dest = (n + 1 + 1000 * k) % k;

for (i=0; i<1001; i++)

f[i] = 0;

if (bfs())

{

len = 0;

while (h)

{

res[len++] = que[h].ch;

h = que[h].pre;

}

printf("%d\n", len);

for (i=len-1; i>=0; i--)

{

printf("%c", res[i]);

}

printf("\n");

}

else

printf("0\n");

}

return 0;

}

[代码] [C/C++]代码

#include

int dir = {{-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}}; int N, M;

char str[102][102];

void dfs(int x, int y)

{

int i;

if (x<0||y<0||x>=N||y>=M||str[x][y]=='.')

return;

else

{

str[x][y] = '.';

for (i=0; i<8; i++)

dfs(x+dir[i][0], y+dir[i][1]);

}

}

int main()

{

int i, j, res;

while (scanf("%d %d", &N, &M) != EOF)

{

res = 0;

for (i=0; i

scanf("%s", str[i]);

for (i=0; i

for (j=0; j

if (str[i][j] == 'W')

{

res++;

dfs(i, j);

}

printf("%d\n", res);

}

return 0;

}

[代码] [C/C++]代码

#include

#include

#include

int a, c, m, r0;

int main()

{

int *f, r1, i, max, beg, end, temp;

while (scanf("%d %d %d %d", &a, &c, &m, &r0) != EOF)

{

f = (int *)malloc(m * sizeof(int));

// memset(f, 0, sizeof(m * sizeof(int)));

for (i=0; i

f[i] = 0;

f[r0] = 1;

while (1)

{

r1 = (a * r0 + c) % m;

if (f[r1] == 0)

{

f[r1] = 1;

r0 = r1;

}

else

break;

}

max = 0;

i=0;

beg = end = -1;

while (i < m)//计算max的过程,注意不是相邻两次计算获得的值的差 {

if (f[i] == 0)

{

i++;

continue;

}

else if (beg == -1)

{

beg = i;

i++;

continue;

}

else

{

end = i;

temp = end-beg;

if (temp > max)

max = temp;

beg = end;

i++;

}

}

printf("%d\n", max);

free(f);

}

return 0;

}

[代码] [C/C++]代码

#include

int num, flag[1000000];

int main()

{

int temp, count, i;

while (scanf("%d", &num) != EOF)

{

for (i=0; i<1000000; i++)

flag[i] = -1;

count = 0;

for (i=9999; i>=0; i--)

{

temp = (num / 10)% 10000;

num = (temp*temp) % 1000000;

if (flag[num] == -1)

{

flag[num] = count;

count++;

}

else

{

printf("%d %d %d\n", num, count-flag[num], count+1); break;

}

}

}

return 0;

}

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行, 默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行, 而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

SQLServer(多语句表值函数代码)

SQLServer(多语句表值函数代码) 代码如下: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE FUNCTION [dbo].[ufnGetContactInformation](@ContactID int) RETURNS @retContactInformation TABLE ( -- Columns returned by the function [ContactID] int PRIMARY KEY NOT NULL, [FirstName] [nvarchar](50) NULL, [LastName] [nvarchar](50) NULL, [JobTitle] [nvarchar](50) NULL, [ContactType] [nvarchar](50) NULL ) AS -- Returns the first name, last name, job title and contact type for the specified contact. BEGIN

DECLARE @FirstName [nvarchar](50), @LastName [nvarchar](50), @JobTitle [nvarchar](50), @ContactType [nvarchar](50); -- Get common contact information SELECT @ContactID = ContactID, @FirstName = FirstName, @LastName = LastName FROM [Person].[Contact] WHERE [ContactID] = @ContactID; SET @JobTitle = CASE -- Check for employee WHEN EXISTS(SELECT * FROM [HumanResources].[Employee] e WHERE e.[ContactID] = @ContactID) THEN (SELECT [Title] FROM [HumanResources].[Employee] WHERE [ContactID] = @ContactID) -- Check for vendor

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

SQLSERVER操作命令

SQLSERVER数据库操作 ******操作前,请确定SQL的服务已经开启******** 一:登录进入sql数据库 1、开始---所有程序---Microsoft SQL Server 2005---SQL Server Management Studio Express 2、此时出现“连接到服务器”的对话框, “服务器名称”设置为SQL数据库所在机器的IP地址 “身份验证”设置为SQL Server身份验证或者Windows 身份验证 填写登录名和密码后,点击“连接”按钮,即可进入到SQL数据库操作界面。 二:新建数据库 登录进去后,右击“数据库”,选择—“新建数据库” 设置数据库名称,在下面的选项卡中还可以设置数据库的初始大小,自动增长,路径。 点击确定,一个数据库就建好了。 三:如何备份的数据库文件。 登录进入后,右击相应的需要备份数据库----选择“任务” 目标下的备份到,点击“添加”按钮可以设置备份数据库保存的路径。 四:如何还原备份的数据库文件。(以本地机器为例子) 1、设置服务器名称,点击右边的下拉框的三角,选择“浏览更多…”。 此时出现查找服务器对话框,选择“本地服务器”---点开“数据库引擎”前面 的三角---选中出现的服务器名称—确定。 (注:可以在“网络服务器”选项卡中设置网络服务器) 2、设置身份验证,选择为“windows身份验证” 3、点击连接按钮,进入数据库管理页面 4、右击“数据库”,选择“还原数据库”,出现还原数据库的对话框 还原的目标----目标数据库,这里设置数据库的名字 还原的源----选择“源设备”,在弹出的对话框中点击“添加”按钮,找到所备 份的数据库文件,确定。 5、此时,在还原数据库对话框中会出现所还原的数据库的信息。在前面选中所需还 原的数据库。确定。 6、为刚刚还原的数据库设置相应的用户。 a点开“安全性”---右击“登录名”---新建登录名 b 设置登录名(假如为admin),并设置为SQL Server身份验证,输入密码,去除 “强制实施密码策略”前的勾。 C 找到导入的数据库,右击此数据库----选择“属性”,在选择页中,点击“文件” 设置所有者,点击右边的按钮,选择“浏览”,找到相应的用户(如admin)。确 定。。 7、此时重新以admin的身份进入,就可操作相应的数据库。

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

SqlServer存储过程基本语法

动态语句基本语法 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesqlN'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fnamevarchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。exec('select ' + @fname + ' from tableName') -- 请注意加号前后的单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fnamevarchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @numint, @sqlsnvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @numint, @sqlsnvarchar(4000) set @sqls='select @a=count(*) from tableName ' execsp_executesql @sqls,N'@aint output',@num output select @num 1 :普通SQL语句可以用Exec执行例: Select * from tableName Exec('select * from tableName')

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

SQLSERVER数据库、表的创建及SQL语句命令

SQLSERVER数据库、表的创建及SQL语句命令 SQLSERVER数据库,安装、备份、还原等问题: 一、存在已安装了sql server 2000,或2005等数据库,再次安装2008,会出现的问题 1、卸载原来的sql server 2000、2005,然后再安装sql server 2008,否则经常sql server服务启动不了 2、sql server服务启动失败,解决方法: 进入sql server configure manager,点开Sql server 网络配置(非sql native client 配置),点sqlzhh(我sqlserver 的名字)协议,将VIA协议禁用。再启动Sql Server服务,成功 如图: 二、在第一次安装SQLSERVER2008结束后,查看安装过程明细,描述中有较多项插件或程度,显示安装失败。 解决方法:

1、重新启动安装程度setup.exe,选择进行修复安装,至完成即可。 三、先创建数据库XXX,再进行还原数据库时,选择好备份文件XXX.bak,确定后进行还原,会报如下图的错误。 解决方法: 选择好备份数据库文件后,再进入“选项”中,勾选“覆盖现在数据库”即可。

四、查看数据库版本的命令:select @@version 在数据库中,点击“新建查询”,然后输入命令,执行结果如下 五、数据库定义及操作命令: 按照数据结构来组织、存储和管理数据的仓库。由表、关系以及操作对象组成,把数据存放在数据表中。 1、修改数据库密码的命令: EXEC sp_password NULL, '你的新密码', 'sa' sp_password Null,'sa','sa'

sqlserver常用函数

Sql Server 常用函数 1,统计函数avg, count, max, min, sum 2, 3,多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组4, 5, 2,数学函数 6, 7, SQRT 8, ceiling(n) 返回大于或者等于n的最小整数 9, floor(n), 返回小于或者是等于n的最大整数 10,round(m,n), 四舍五入,n是保留小数的位数 11,abs(n) 12,sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1 13,PI(), 3.1415.... 14,rand(),rand(n), 返回0-1之间的一个随机数 15,3,字符串函数 16, 17,ascii(), 将字符转换为ASCII码, ASCII('abc') = 97 18,char(), ASCII 码转换为字符 19,low(),upper() 20,str(a,b,c)转换数字为字符串。a,是要转换的字符串。b是转换以后的长度,c是小数位数。 str(123.456,8,2) = 123.46 21,ltrim(), rtrim() 去空格 22,left(n), right(n), substring(str, start,length) 截取字符串 23,charindex(子串,母串),查找是否包含。返回第一次出现的位置,没有返回0 24,patindex('%pattern%', expression) 功能同上,可是使用通配符 25,replicate('char', rep_time), 重复字符串 26,reverse(char),颠倒字符串 27,replace(str, strold, strnew) 替换字符串 28,space(n), 产生n个空行 29,stuff(), SELECT STUFF('abcdef', 2, 3, 'ijklmn') ='aijklmnef', 2是开始位置,3是要从原来串中删除的字符长度,ijlmn是要插入的字符串。 30,3,类型转换函数: 31, 32,cast, cast( expression as data_type), Example: 33,SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales FROM titles WHERE CAST(ytd_sales AS char(20)) LIKE '3%' 34,convert(data_type, expression) 35,4,日期函数 36, 37,day(), month(), year() 38,dateadd(datepart, number, date), datapart指定对那一部分加,number知道加多少,date指定在谁的基础上加。datepart的取值包括,

数据库sql查询语句练习2_习题_结果(单世民)

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 2.给出相应的INSERT语句来完成题中给出数据的插入。 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc;

4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from Teacher; 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from Student; 6.输出student中不姓王的同学的姓名。 命令:select name from Student except select name from Student where name like'王%';或

select name from Student where name not like'王%'; 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80; 8.输出班级为95001或性别为‘女’的同学(student表全部属性) 命令:select*from Student where class=95001 or sex='女';

SQLSERVER函数大全

SQL SERVER函数大全 SQL SERVER命令大全 SQLServer和Oracle的常用函数对比 1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:select cast(-1.002 as int) value O:select trunc(-1.002) value from dual 5.四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7.取e为底的对数 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数 S:select log10(10) value 1 O:select log(10,10) value from dual; 1 9.取平方 S:select SQUARE(4) value 16 O:select power(4,2) value from dual 16

SQLServer语句优化

SQLServer语句优化 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。 需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。 下面的表总结了何时使用聚集索引或非聚集索引(很重要): 动作描述使用聚集索引使用非聚集索引 列经常被分组排序应应 返回某范围内的数据应不应 一个或极少不同值不应不应 小数目的不同值应不应 大数目的不同值不应应 频繁更新的列不应应 外键列应应 主键列应应 频繁修改索引列不应应 事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。 结合实际,谈索引使用的误区 理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 1、主键就是聚集索引 这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。 通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。 显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。 从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会

数据库SQL查询语句练习题

设教学数据库Education有三个关系: 学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题: (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno,Sname,Sex FROM S WHERE Sdept ='CS'; (2)检索学习课程号为C2的学生学号与姓名; Sname ,1.SELECT SnoSname ,2.SELECT S.SnoFROM S SC , FROM SWHERE Sno IN WHERE S.Sno=SC.Sno SELECT Sno (;C2'AND https://www.360docs.net/doc/6214797415.html,o=‘ FROM SC )‘C2' WHERE Cno= DS)检索选修课程名为“”的学生学号与姓名(3表建立它们二者的表没有直接联系,必须通过SC表中,但S和C 本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C S SC →联系。 C →基本思路: Cno;表中找出“DS”课程的课程号(1)首先在C ;Cno 集合中的某个元素Cno2)然后在SC表中找出Cno等于第一步给出的(送入结果表列。和SnameSno等于第二步中Sno 集合中某个元素的元组,取出Sno S(3)最后在关系中选出Sname ,SELECT SnoFROM S WHERE Sno IN SELECT Sno ( FROM SC WHERE Cno IN SELECT Cno ( FROM C );DS') WHERE Cname=‘ 的学生学号;C2或C4(4)检索选修课程号为SELECT Sno FROM SC ';'C2 OR Cno=‘C4WHERE Cno=‘

数据字典SQL查询语句

数据字典sql查询语句 1.数据字典视图(动态性能表) V$fixed_table / dictionary / dict / dict_columns 2.查詢数据库的名字,创建日期等内容。 Select name, created, log_mode, open_mode From v$database ; 3.查詢数据库的计算器的主机名,数据库的实例名及系统的版本。 Select host_name, instance_name, version From v$instance ; 4.查詢数据库管理系统的版本 Select * from v$version ; 5.查詢数据库的用户及创建数据库的时间 Select username, created from dba_users ; 6.查詢数据库的控制文件 Select * from v$controlfile ; Select value From v$parameter Where name = …control_files? ; 7.查詢数据库控制文件中全部记录的相关信息 Select type, record_size, records_total, records_used From v$controlfile_record_section ; 8.查詢数据库的重做日志的配置信息 Select group#, members, bytes, status, archived From v$log ; 9.查詢重做日志(成员)文件所存放的具体位置 Select * from v$logfile ; 10.查詢ORACLE数据库归档文件的具体位置 Archive log list

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

数据库SQL查询语句

一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename,sal*13+nvl(comm,0) FROMemp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S__T%'; 7. 在where条件中使用In SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANAL YST'); 8. 查询字段内容为空/非空的语句 SQL>SELECT * FROMemp WHERE mgr IS/IS NOT NULL; 9. 使用逻辑操作符号 SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%'; 10. 将查询结果按字段的值进行排序 SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序) 二、复杂查询 1. 数据分组(max,min,avg,sum,count) SQL>SELECT MAX(sal),MIN(age),A VG(sal),SUM(sal) from emp; SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp)); SQL>SELEC COUNT(*) FROM emp; 2. group by(用于对查询结果的分组统计)和having子句(用于限制分组显示结果)SQL>SELECT deptno,MAX(sal),A VG(sal) FROM emp GROUP BY deptno; SQL>SELECT deptno, job, A VG(sal),MIN(sal) FROM emp group by deptno,job having A VG(sal)<2000; 对于数据分组的总结: a. 分组函数只能出现在选择列表、having、order by子句中(不能出现在where中) b. 如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。 c. 在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在group by子

相关文档
最新文档