当前位置:文档之家› SQL实战语句总结(一)

SQL实战语句总结(一)

SQL实战语句总结(一)
SQL实战语句总结(一)

DB(DataBase) SQL语句

关系数据库的知识技能:

C/s架构:服务器,客户端模式;

概念:DBServer ,DB,Table, Rocord ,field;

1)数据库系统,采用C/S架构。

分为Server端软件和Client端软件;数据集中存放在服务器端,安全,且易于管理(增、删、改、查);

2)什么是DB Server?

是某一个厂商写的,运行、管理数据库的大型软件。需安装在一台机器上,供客户端来访问,为客户端提供数据服务。

该软件大致分为两个部分:

管理部分数据存放部分

| |

DBMS DB、Table、record、field

3)什么是库、表、记录、字段?

数据库服务器上,存放数据的组织形式。

什么是DBMS?

DB Server软件中,管理、操作DB的部分;

//要管理用户、建立与Client连接,接受访问请求,操作DB、Table数据存取,

返回访问结果及其查询数据。

什么是SQL?(Structured Query Language),SQL是Client端操作DBMS的专用数据库命令语言。

什么是DDL?操作目标:DB库的结构、Table表的结构、索引的建立删除。

SQL:create database '库名'; Drop database '库名';

create table '表名'; drop table '表名'; alter table '表名' rename to '新表名' ...

create index '索引名'; drop index '索引名';

Index-------索引

为了加快搜索速度,减少查询执行时间,可为一张表的一个特定字段,设置索引。.

索引实质就是一个字段值的排序列表。用于快速定位目标记录。

缺点:i)另外占用disk空间。

ii)影响insert、update、delete执行效率。必须重建索引。

1)建Index:

Create Table时,建索引。

mysql> create table 表名(.....,

INDEX 索引名(某字段名)//给指定字段,建立索引。

INDEX (某字段名), INDEX (某字段名),//索引名缺省=字段名

INDEX (某字段名,某字段名)... //建立多个索引。

向已经存在的表,添加索引。

mysql> CREATE INDEX 索引名ON 表名(某字段名,某字段名,...);

//字段为BLOB TEXT时,可强制性指定字符个数,为它们添加索引:

|

mysql> CREATE INDEX 索引名ON 表名(某字段名(93))

2) 删除Index:

mysql> DROP INDEX 索引名ON 表名;

安装Mysql server:

常用操作:

Mysql 在cmd模式下关闭与打开服务的两种方法

1. 方法一:适用于已经安装Mysql服务的情况:

cmd下输入net start mysql

2. 方法二:适用于未安装Mysql服务的情况:

cmd下到Mysql的bin目录下运行mysqld-nt

关闭

1. 方法一:适用于已经安装Mysql服务的情况:

cmd下输入net stop mysql

2. 方法二:适用于未安装Mysql服务的情况:

cmd下到Mysql的bin目录下运行mysqladmin -u[username] -p[password] shutdown

-----------------------------------------------------------------------------------------------------------------------

SQL管理的部分

登陆本机:

bin目录下:mysql -h localhost -u root -proot

1)显示版本号mysql>select version();

当前日期mysql>...... current_date;

...... curdate();

mysql>...... now();

mysql>select version(),current_date; //一行显示多个命令。

//两条查询结果,会被临时组合在一个结果表里;

2)显示DB当前用户:mysql>select user();

查看当前Server状态:mysql>status;

显示server支持的字符集:SHOW CHARACTER SET;

................中文...:SHOW COLLATION LIKE '%chinese%';

设置当前客户端操作的字符集:mysql>set charset gb2312; //或utf8; latin1;

设置服务器端的字符集:重构;

1)查看已有用户:

前提:需先mysql>use mysql; //打开Mysql Server为你创建的mysql系统库,才可以访问其中含的用户表(包含所有用户);

mysql> select * from user; //查看所有用户及其所有权限(字段);

select host,user from user; //仅查看用户;

//安装MySQL Server时,会自动创建两个数据库,其中一个是MySQL 系统数据库mysql,

含有5个MySQL授权表,其中一个表(《user》)包含MySQL上所有用户信息。

简单DB操作:

mysql> show databases;//显示("秀")当前连接的DB Server一共有几个DB;

.....> use mysql; //打开其中某个DB;

.....> show tables; //显示该DB中有几张表;

.....> select host,user from user;//查看表中内容;

2) 新建一个user:

例子:mysql>create user duca identified by "111"; ---建成一个%远程用户。

create user duca@localhost identified by "111";---建成一个localhost用户。

//注意:用户必需唯一。|---用户密码。

//如此创建的用户,尚没有任何权限;

3) 新建的user,需赋予权限:

|

|

mysql> grant 权限名,权限名,权限名,权限名on 库名.表名to 用户名@主机名identified by "密码"; | | | | 例:select,insert,delete,update *.* duca@localhost; 赋给该用户的

或test.aaaa 密码

mysql>grant select,insert,delete,updaton *.* to duca identified by "duca";

...to duca@localhost identified by "duca";

4)删除用户:

例子:mysql>drop user dudu@localhost; ----仅删除本地该用户;

drop user duca2; --------------仅。。远程该用户;

附:MySQL 权限等级: .

SELECT:

INSERT:DML权限

UPDA TE:

DELETE:

CREATE:DDL权限

ALTER:

DROP:

RELOAD:重载|刷新MySQL服务器。

SHUTDOWN:关闭正在运行的MySQL服务器。

PROCESS:在MySQL服务器上跟踪一项活动。

FILE:在服务期上读、写文件。

GRANT:授予其他用户权限。这些权限只能是本用户现在拥有的权限中的一部分。

INDEX:创建、编辑、删除表索引。

REFERENCES:创建、编辑、删除外键引用。

SHOW DA TABASES:浏览可用的DB。

SUPER:执行管理命令。

CREATE TEMPORARY TABLES:创建临时表。

LOCK TABLES:创建、删除表锁。

EXECUTE:执行被保存的程序。

REPLICATION SLA VE:在复制内容中读主二进制日志。

REPLICATION CLIENT:在.........申请主、副信息。

◆DB---------库

1)显示当前已有DB:mysql> show databases;

2) 新建一个DB:mysql> create database 新库名;//一般同项目名;bookstore;

删除一个DB:drop ........ ......; //同时删除里面所有的表(及表中数据)、索引

3)打开一个DB:mysql>use 库名;

4)显示当前选择的DB:mysql>SELECT DA TABASE();

5)备份DB: ...\bin> mysqldump -u 用户名-p密码库名>盘符:\库名.sql //将DB整个===>导入一个.sql文件

例子:D:\masql6.0\bin>mysqldump -u root -proo t mysql>d:\mysqldb.sql

//图形界面,叫---Tool---Extract DB //EMS可SQL Script执行导出的sql文件,恢复数据库。

萃取

◆Table-------表

4) 显示当前DB下的所有Table:mysql> show tables; 显示某个DB下的所有Table:mysql> show tables from 库名; //show .. from mysql;

) 描述一张Table的结构:mysql> desc 表名; //显示所有字段信息;(字段名|字段类型)

//更改字符集:mysql> set charset gbk;

例子:show databases;

use qq;

show tables;

desc table2;

select * from table2;

6) 新建一张Table:mysql> create table 表名(字段名type(长度) NOT NULL default '值', -------某个字段的定义SQL类型非空缺省缺省值---为字段指定一个默认

或不写或NULL 值,自动填上。

为可空空缺省值

.........................,

字段名type(长度),.......,

PRIMARY KEY ('主键字段名')-----------------主键字段指定

) TYPE=InnoDB ----------------------------表类型定义

DEFAULT CHARSET=utf8; ---------------------表的缺省字符集

例子://一个正确的单表创建语句:

CREATE TABLE `user` ( //单引号,可以全部不要。单引号用~键上的那个的`。default '' 此单引号,可用"键上的

`userid` int(11) NOT NULL auto_increment,

`username` varchar(8) default NULL,

`gender` varchar(6) default NULL,

`age` int(4) default NULL,

PRIMARY KEY (`userid`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8

//InnoDB,支持事务处理。字符集设置。

例2:CREATE TABLE `aaaa` (

`businesskey` varchar(6) default NULL,

`field2` int(11) NOT NULL default '0',

`field3` varchar(4) default NULL,

`caroid` int(12) default NULL,

PRIMARY KEY (`field2`),

KEY `caroid` (`caroid`),

) ENGINE=InnoDB DEFAULT CHARSET=utf8

7)删除一张表:mysql> drop table 表名; //会删除数据;

8) 改变表结构:

字段==

添加新字段:mysql> alter table 表名add 新字段名type(长度);

━━━━━━━━━━━━

修改原字段:mysql> alter table 表名change 原字段名新字段名新type(新长度);

━━━━━━━━━━━━━━━━━━━━

删除某字段:mysql> alter table 表名drop 字段名;

━━━━━━

表==

修改表名:mysql> alter table 表名rename to 新表名;

8)复制一张表:mysql> CREATE TABLE 复制表名SELECT * FROM 源表; //将所有字段,复制入新表。copy表的结构,指定的字段值也会copy;

8)备份一张Table:...bin> mysqldump -u 用户名-p密码库名表名>盘符:\*.sql //将表结构+记录===>导入一个.sql文件

//EMS 图形界面:Export Data。选表---Data Manipulation---Export Data as SQL Script

9)恢复数据:恢复库、表:.

sql文件导入某DB中:bin> mysql -u root -p密码库名

由普通数据文本文件导回数据。

Import Data。选表---Data Manipulation---Import Data---

特别:txt导入工具。

----------------------------------------------------------------------------------------------------------------------

-------------

★MySQL 的SQL Type:(SQL字段类型)

━━━━━━━━

TINYINT -------- 1byte。-128~127(有符号数);0~255(无符号数)常用于表达Boolean值。true:1 false:0

SMALLINT -------- 2byte。-32768~32767(有符号数);0~65535(无符号数)

MEDIUMINT -------- 3byte。-8388608~8388607(....);0~16777215(.....)

INT -------- 数值类型,整数,值范围:-2,147,483,648 ~2,147,483,647(有符号数)位数,是2的次方。

(INTEGER)

0~4294967295(无符号数)

BIGINT -------- 8byte。

FLOAT -------- 4byte。-3.402823466E+38~1.175494351E-38;0;1.175494351E-38~3.402823466E+38(有符号数)

0;

1.175494351E-38~3.402823466E+38(无符号数)

DECIMAL -------- 数值类型,可浮点小数,

DOUBLE -------- 数值类型,双精度浮点数。

DA TE -------- 3byte。YYYYMMDD格式日期字段。1000-01-01~9999-12-31

TIME -------- 3byte。HH:MM:SS格式时间字段。

DA TETIME -------- 8byte。YYYYMMDD HH:MM:SS格式日期/时间类型。1000-01-01 00:00:00~9999-12-31 23:59:59

YEAR -------- 1byte。YYYY 或YY格式,范围在:1901 ~2155之间的指定年的字段。

TIMESTAMP -------- 8byte。YYYYMMDDHHMMSS格式的时间戳类型。1970-01-01 00:00:00~2037年的某个时候。

CHAR -------- 字符类型,长度固定。最大长度255个字符。

V ARCHAR -------- ........,变长。.................。位数是字符个数。

TEXT -------- 字符串类型。........65535个

BLOB -------- 二进制类型。可变数据

ENUM -------- 可以从定义数值的列表上接受值的数据类型。

SET -------- ................集合

上................。

===TIMESTAMP的使用方法:可以设置一张表当输入记录时,MySQL自动帮你记录,该记录的插入日期时间(戳)字段值的功能。

字段type定为:TIMESTAMP。去掉use dimension小勾、Not Null、default current_timestamp。

5)什么是关系数据?

什么是表的结构?

创建表的字段;(字段名|字段类型)//字段是表的基本属性结构;

什么是填充数据?

(记录---表的字段值的一次具体化)

主键primary key,是一个字段,其值用于唯一标识记录,

主键值必需唯一;

主键的作用:表内区别记录用的;

主键建立的技巧:i)代理主键。

纯整型、自动增长的字段autoincrement;//mysql、sql server

ii)业务主键。

利用业务数据中的某个字段//有些业务字段可以保证唯一性;

学号;身份证号;工号;警号;书号;航班号;

注册名;//邮箱

优点:安全性高;

------------------------------------------------------------------------------------------------------------- SQL分为两部分:.

SQL

┌───────────┴─────────────┐

[DB Server的管理部分] [SQL数据操作部分]

┌───────────┴───────────┐

(DBA) 用户、内存优化DML DDL

(Data Manipulation Language) (Data Definition Language)

●DML操作------- Data Manipulation Language.

◆记录--------- insert 、delete 、update 、select

字段

------------------------------------------------数据库操作------------------------------------------------------

[单表]

====增====

(插入记录)

语法I):<指定字段名>

▲insert into 表名(某列名, 某列名, 某列名, .....) //在指定列名,插

入值,形成一条记录,放入表中。

values(列值, 列值, 列值, ......);

例:insert into student (name,age) values('zhang',25);

<不指定字段名>

▲insert into 表名//缺省,自动从第一列1,列2,....插入值。

values(列值, 列值, 列值, ......); //字段值必需从第一个字段开始,全部列出;不能缺少字段;

例:insert into student values('wang', 29,'female'); //

//<字段值自动填充问题>:

遇到字段值是自动增长、TIMESTAMP等有DB自动插入的字段,

可用null暂时替代该字段值,

<一句多记录>

▲一条Insert SQL,多条记录数据,可插入多条记录:

INSERT INTO `customer2` (`ID`, `name`, `sex`, `age`, `product_ID`) V ALUES .

(1,'张三','男',30,2),

(2,'李四','女',50,4),

(3,'王五','男',60,4),

(4,'刘六','女',40,NULL),

(8,'刘六','女',40,NULL);

例子:

show databases;

use qq;

select * from product1;

<指定字段名>

insert into `product1` (`ID`,`NAME`,`price`) values (4,'毛巾',5.0);/*标准*/

insert into `product1`(`ID`,`NAME`, `price`,`date`) values (5,'裤子',12.2,'2009-06-16');

insert into product1 (`ID`,`NAME`,`price`) values (6,'夹克',233.0);

insert into product1 (ID,`NAME`,`price`) values (7,'毛巾',41.0);

/*不指定字段插入记录*/

insert into product1 V ALUES (9,'皮鞋',423.3,'2011-02-16');

insert into product1 V ALUES (12,'鞋',113.3,'2012-03-17');

<一句多记录>

insert into `product1` values

(13,'衬衫1',56.2,'2010-12-19'),

(14,'衬衫2',56.3,'2010-11-18'),

(15,'衬衫3',56.4,'2010-10-13');

----------------------------------------------------------------------------------------------------------------------

▲高级语句:值的部分,也可以插入计算或函数调用的结果:

例:insert into student (name,age,salary) values('zhang','25',age+2000); //直接运算。

━━━━

insert into users (id,name,password,age) values(LAST_INSERT_ID()+1, 'zhang','abc','25'); //调用函数。

━━━|━━━━━━

函数名

技巧:自动增长,步长为2,怎么办?LAST_INSERT_ID()+2

注意:上述语句,LAST_INSERT_ID()有Bug,还需修整为:

insert INTO `customer2` (`id`,`name`,`age`) V ALUES( LAST_INSERT_ID()=LAST_INSERT_ID() + 2 ,'du',20);

━━━━━━━━━━━━|━━━━━

需要存回该函数---第一次该函数取值后该函数取值总是停在最后一条记录的前一个值;

永远固定所以需要补偿+2,(有时+1也行);

insert into sales (id,cost,quantity,amount) values(8587,100,4500,cost*quantity); //数值不用加''引号。

━━━━|━━━

字段名

insert into log (process,message,timestamp) values('crond','Unable to send mail in /urs/local/bin/backup.sh',NOW());

|

━|━

DateTime类型函数名

字段值由子查询完成:3307

insert into `accountorders` V ALUES (1005,12345679,3216,30,30*(select goods.`price` from `goods` where goods.`goodsNum`=3216))

====删除====

[单表]:

▲delete from 表名where 条件;

例:delete from student where name='li'; //一条delete,可能删除多条记录。

//whre 条件:是用一个条件表达式,阐明哪些记录应该被该条件选中,然后将这些记录,全部删除。

====改=== .

//修改符合条件的一批记录。

//一条update,可能修改多条记录。

<单表> .

update 表名set 某字段名=新字段值,..=.,..=. where 条件;

例:update student set age=33,salary=3500 where name='zhang';

例子:

/*删除*/

DELETE from product1 where NAME='衬衫1';

/*改*/

update product1 set DA TE='2010-10-10' where name='鞋';

====单表查询的语法:.

select 列名

from 表名(视图)

where 条件表达式-----//过滤结果集,符合条件的留下。

|

group by 列名 1 having 条件表达式

order by 列名2 asc|desc

//where 条件:是用一个条件表达式,阐明哪些记录应该被该条件选中,形成一个结果集临时表,再把这些记录中的目标字段值查出来。

所以,where语句,是select语句的关键。━━━━━━━━━━

例子:

/*查询*/

select * from product1 WHERE `price`>10;

/* 查出货物价格在100元以上的所有货物的名称;查出生产日期为2010-10-12的货物的情况;*/

select NAME, price from product1 WHERE `price`>100;

select * from product1 WHERE `pdate`=2010-10-10;

作业:--------------------------------------------------------------------------------------------------

+---------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+---------+-------------+------+-----+---------+-------+

| name | varchar(20) | YES | | NULL | |

| owner | varchar(20) | YES | | NULL | |

| species | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| birth | date | YES | | NULL | |

| death | date | YES | | NULL | |

+---------+-------------+------+-----+---------+-------+

use qq;

select * from pet;

insert into pets values

('Fluffy','Harold','cat','f','1993-02-04' ,NULL), //注意日期值要加''

('Claws','Gwen','cat','m','1994-03-17',NULL),

('Buffy','Harold','dog','f','1989-05-13',NULL),

('Fang','Benny','dog','m','1990-08-27',NULL),

('Bowser','Diane','dog','m','1979-08-31','1995-07-29'),

('Chirpy','Gwen','bird','f','1998-09-11',NULL),

('Whistler','Gwen','bird',NULL,'1997-12-09',NULL),

('Slim','Benny','snake','m','1996-04-29',NULL),

('Puffball','Diane','hamster','f','1999-03-30',NULL);

SELECT * FROM pet;

+----------+--------+---------+------+------------+------------+

| name | owner | species | sex | birth | death |

+----------+--------+---------+------+------------+------------+

| Fluffy | Harold | cat | f | 1993-02-04 | NULL |

| Claws | Gwen | cat | m | 1994-03-17 | NULL |

| Buffy | Harold | dog | f | 1989-05-13 | NULL |

| Fang | Benny | dog | m | 1990-08-27 | NULL |

| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |

| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

| Slim | Benny | snake | m | 1996-04-29 | NULL |

| Puffball | Diane | hamster | f | 1999-03-30 | NULL |

+----------+--------+---------+------+------------+------------+

-------------------------------------------------------------------------------------------------------------------- SQL查询语句实例:

select * from pets where NAME = 'Bowser';//业务意义:列出名字为Bowser的宠物的所有信息;

select `name`,`owner`,`birth` from pets where name ='Bowser';//业务意义:列出名字为Bowser的宠物的主人是谁

select * from pets where NAME = 'Buffy';//列出名字叫'Buffy'的宠物的情况;

select * from pets where birth < '1990-08-27';//列出出生日期小于'1990-08-27'的所有宠物;

select * from pets where sex='f' and species='dog';//所有雌性宠物狗的详细信息

select * from pets where sex='m' and NAME='Bowser'and species='dog';//所有名字叫'Bowser'的公狗;

select * from pets where species='bird'or species='snake'; //查询pets 所有种类为蛇或鸟的宠物记录;

select * from pets WHERE species='snake' OR (species='bird' AND sex='f');//查询pets 所有种类为蛇或公鸟的宠物记录;

SELECT * FROM pets WHERE (species = 'cat' AND sex = 'm') OR (species = 'dog' AND sex = 'f'); ---列出雄性猫或雌性狗;

//AND---“既是...又是...”的概念;

//OR----“和”、“或”的概念;

select * from pets where owner='benny';//Benny主人养了哪些宠物?//缺省情况不区别大小写;

alter table pets change owner owner varchar(20) BINARY;//执行该句将有别大小写;

alter table pets change owner owner varchar(20);//去掉BINARY,回去不区别大小写状态;

====排序:

select name ,birth from pets order by birth desc;//业务意义:按照出生日期降序排序;(按年龄从小到大排序,)

select name ,birth from pets order by birth ;//不指定排序方式,缺省升序排序;

select name ,species,birth from pets order by species ,birth desc;//业务意义:按宠物种类升序排序,种类相同的按生日降序排序;

//用<多个字段排序>:先按第一个字段排序,该字段值相同的记录,再按后续字段值依次排序; .

//注意:未写明的字段,默认为升序;写明的字段,按写明的顺序排序;

==[随机记录]问题://从一张表中随机选择一条记录。

业务用途:抽奖(真正公平的,所有记录均匀几率的)

select fld1,fld2 FROM 表名ORDER BY RAND() LIMIT 0,1; //======从0号记录开始,取1条;

总结:表中记录的排序方式:三种:

关键字实现关键字实现SQL函数实现

默认实现

==分页查询

意义:符合某条件的查询结果,可能很大、很多;常常需要分成很多"组",每次一组的提取,将来显示等用;此一组---即为一页;

实现:MySQL使用limit关键字,限制结果集中的记录数;

select * from product limit 5,6; -----从第6条(序号为5)记录开始,一共显示6条记

录;(6~11);

| | //序号从0开始;//如果遇到尾部,自动结束;

开始行位置显示行个数;

select * from book limit 5;//等效于limit 0,5; //从0开始显示5条;

如果想显示从第n条开始的其后所有记录,怎么办?

select * from book limit n-1,18446744073709551615; ----尾数用个超出结尾范围的大数即可;//大数不要太大,以免溢出;

==Oracle的分页查询:

没有limit,只有改用类似子查询;

2021年SQL语句大全实例

SQL语句实例 欧阳光明(2021.03. 07) 表操作 例1对于表的教学管理数据库中的表STUDENTS ,可以定义如下: CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例2对于表的教学管理数据库中的表ENROLLS ,可以定义如下:CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO)

*欧阳光明*创编2021.03.07 CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例3根据表的STUDENTS表,建立一个只包含学号.姓名.年龄的女学生表。 CREATE TABLE GIRL AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=女?; 例4删除教师表TEACHER。 DROP TABLE TEACHER 例5在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例6把STUDENTS表中的BPLACE列删除,并且把引用 BPLACE列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7补充定义ENROLLS表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO);

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学习 2.1 SQL 简介 当面对一个陌生的数据库是,通常需要一种方式与它进行交换,以完成用户所需要的各种工作,这个时候,就要用到SQL语言了,由于SQL 语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成多种平台进行交互操作的底层会话语言。 2.2 SQL 使用入门 2.2.1 SQL分类 SQL 语句主要可以划分为以下3个类别 1)、DDL (Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括create、drop、alter等。 2)、DML(Data Manipulation Languagr)语句:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括insert、delete、update和select等。 3)、DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别、主要的语句关键字包括grant、revoke等。 2.2.2 DDL 语句 DDL是数据定义语言的缩写,是对数据库内部的对象进行创建(create)、删除(drop)、修改(alter)的操作语言,它和DML语句的最大区别是DML只是对表内部数据的操作,而不涉及表定义,结构的修改,更不会涉及其它的对象,DDL语句更多地被数据库管理员(DBA)所使用,一般开发人员很少使用。 下面通过一些例子来介绍MySQL中常用的DDL语句的使用方法。 1、创建数据库 因为所有的数据都存储在数据库中,因此需要学习的第一个命令是创建数据库,语法如下:

数据库_经典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 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

数据库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的语法很精妙,查资料!

数据库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语句--Group By总结

1 SQL语句--Group By总结 1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 P.S. 这里真是体会到了一个好的命名的力量,Group By从字面是直接去理解是非常好理解的。恩,以后在命名的环节一定要加把劲:)。话题扯远了。 2. Group By 的使用: 上面已经给出了对Group By语句的理解。基于这个理解和SQL Server 2000的联机帮助,下面对Group By语句的各种典型使用进行依次列举说明。 2.1 Group By [Expressions]: 这个恐怕是Group By语句最常见的用法了,Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。比如有如下数据集,其中水果名称(FruitName)和出产国家(ProductPlace)为联合主键: FruitName ProductPlace Price Apple China $1.1 Apple Japan $2.1 Apple USA $2.5 Orange China $0.8 Banana China

$3.1 Peach USA $3.0 如果我们想知道每个国家有多少种水果,那么我们可以通过如下SQL语句来完成: SELECTCOUNT(*)AS水果种类,ProductPlaceAS出产国 FROMT_TEST_FRUITINFO GROUPBYProductPlace 这个SQL语句就是使用了Group By + 分组字段的方式,那么这句SQL语句就可以解释成“我按照出产国家(ProductPlace)将数据集进行分组,然后分别按照各个组来统计各自的记录数量。”很好理解对吧。这里值得注意的是结果集中有两个返回字段,一个是ProductPlace(出产国), 一个是水果种类。如果我们这里水果种类不是用Count(*),而是类似如下写法的话: SELECTFruitName,ProductPlaceFROMT_TEST_FRUITINFOGROUPBYProductPlace 那么SQL在执行此语句的时候会报如下的类似错误: 选择列表中的列'T_TEST_FRUITINFO.FruitName'无效,因为该列没有包含在聚合函数或GROUPBY子句中。 这就是我们需要注意的一点,如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。我们可以将Group By操作想象成如下的一个过程,首先系统根据SELECT 语句得到一个结果集,如最开始的那个水果、出产国家、单价的一个详细表。然后根据分组字段,将具有相同分组字段的记录归并成了一条记录。这个时候剩下的那些不存在于Group By语句后面作为分组依据的字段就有可能出现多个值,但是目前一种分组情况只有一条记录,一个数据格是无法放入多个数值的,所以这里就需要通过一定的处理将这些多值的列转化成单值,然后将其放在对应的数据格中,那么完成这个步骤的就是聚合函数。这就是为什么这些函数叫聚合函数(aggregate functions)了。 2.2 Group By All [expressions] : Group By All + 分组字段, 这个和前面提到的Group By [Expressions]的形式多了一个 关键字ALL。这个关键字只有在使用了where语句的,且where条件筛选掉了一些组的情况才可以看出效果。在SQL Server 2000的联机帮助中,对于Group By All是这样进行描述的:

最新常用经典SQL语句大全完整版

常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 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 tabname(col….) 删除索引:drop index idxname

SQL搜索语句

SQL查询语句大全集锦 一、简单查询 简单的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时应

SQL语句从大到小排序

根据下面三个关系模式完成下面习题:答案已设为白色需要就全选设为黑色学生表student 第一章课件:编写基本的sql语句。 1.查询所有学生情况。 3.查询所有学生的姓名,性别以及年龄。 5.查询所有学生10年后的年龄。 7.查询所有课程(列名用中文显示)。 9.查看竟有那些学生选课(重复学号显示一次)。 11.显示课程表的边结构。第二章课件:约束和排序数据。 01.查询计算机系的所有学生的姓名和年龄。 02.查询体育课的学分。 03.查询年龄小于18的学生。 04.查询年龄大于20的学生。 05.查询年龄介于18和20之间的学生(包括18和20)。 06.查询年龄不在18和20之间的学生。 07.查询年龄为18,20,22的学生。 08.查询年龄不是18,20,22的学生。 09.查询所有姓张的学生。 10.查询所有没有先行课的课程。 11.查询有先行课的课程。 12.在计算机系中找,姓张的男生。 13.在计算机系中找,姓张的或者姓李的男生并且按照年龄从大到小排序。 14.查询所有学生信息,显示结果先按系从大到小排序,再按年龄排序。 第三章课件:多表查询 1.查询每个学生(学号)选了哪门课(课程)得了多少分 2.查询每个学生(姓名)选了哪门课(课程号)得了多少分 3.查询每个学生(姓名)选了哪门课(课程名)得了多少分 4.查询一下王林选可哪门课得了多少分。 5.查询每个学生的成绩类别(优、良还是及格)。 6.查询哪个学生没有选课(用外查询)。 7.查询哪门课没有人选(用外查询)。 第四章课件:组函数

1.查询一下所有课程的平均分,最高分,最低分和总分数。 2.查询一下有多少个学生参加选课。 3.查询一下计算机系有多少人过20岁。 4.统计一下计算机系的男生多少人。 5.查询一下每个学生考试的最高分和最低分。 6.查询每门课(课程号)的最高分和最底分。 7.查询每门课(课程名)的最高分和最底分。 8.查询计算机系中男生多少人,女生多少人。 9,查询人数在三百人以上的系。 10.查询选修人数在三人(包括三人)的课程(课程名)。 11.查询各科考试成绩最低的同学。 12.查询考试成绩小于所选课程平均分的人。(有能力的同学选做) 第五章课件:子查询 1.查询所有比王林大的同学信息。 2.查询和王林同在一个系的所有学生信息。 3.查询一下谁的成绩(所有成绩)最低。 4.查询一下每门课成绩最底的同学(要姓名,和成绩)。 5.查询一下哪个学生没有选课(用子查询)。 6.查询一下哪门课没有人选(用子查询)。 7.查询一下和王林一个系,但是比他年龄大的同学。 第六章课件:ddl语句 1.创建以上四个表,要求每个表必须有主键,表和表之间必须有外间关联。 3.写出insert语句,给表添加以上数据。 5.提交所有操作。 7.将王林的年龄设置为空。 9.将张大民调到计算机系。 11.将体育课的学分设置成和管理学学分一样(update 中带有子查询)。 13.回滚所有操作。 9.某公司印了一批充值卡,卡的密码是随机生成的,现在出现这个问题:卡里面的“o和0”(哦和零)“i和1”(哎和一),用户反映说看不清楚,公司决定,把存储在数据

常用经典SQL语句大全完整版教学文案

常用经典S Q L语句大 全完整版

常用经典SQL语句大全完整版--详解+实例下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 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 tabname(col….)

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_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、说明: 删除新表: 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 注:索引是不可更改的,想更改必须删除重新建。

sql查询语句大全

SQL查询语句大全 《SQL语句的基本语法》 一.Select语句的完整语法为: Select[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [Where…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 说明: 用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。 1 FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或 由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的复合结果。如果表或查询存储在外部数据库,在IN 子句之后指明其完整路径。 例:下列SQL语句返回所有有定单的客户: Select orderID,Customer.customerID FROM orders Customers Where orders.CustomerID=Customers.CustomeersID 2 ALL、DISTINCT、DISTINCTROW、TOP谓词 (1) ALL 返回满足SQL语句条件的所有记录。如果没有指明这个谓词,默认为ALL。 例:Select ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多个记录的选择字段的数据相同,只返回一个。 (3) DISTINCTROW 如果有重复的记录,只返回一个 (4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定货额最大的定单 Select TOP 5 PERCENT* FROM [ order Details] orDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句为字段取别名 如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。 例:返回FirstName字段取别名为NickName Select FirstName AS NickName ,LastName ,City

50个经典sql语句总结

一个项目涉及到的50个Sql语句(整理版) --1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表 Course(C,Cname,T) --C --课程编号,Cname 课程名称,T 教师编号 --3.教师表 Teacher(T,Tname) --T 教师编号,Tname 教师姓名 --4.成绩表 SC(S,C,score) --S 学生编号,C 课程编号,score 分数 */ --创建测试数据 create table Student(S varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10)) insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(C varchar(10),Cname nvarchar(10),T varchar(10)) insert into Course values('01' , N'语文' , '02') insert into Course values('02' , N'数学' , '01') insert into Course values('03' , N'英语' , '03') create table Teacher(T varchar(10),Tname nvarchar(10)) insert into Teacher values('01' , N'张三') insert into Teacher values('02' , N'李四') insert into Teacher values('03' , N'王五') create table SC(S varchar(10),C varchar(10),score decimal(18,1)) insert into SC values('01' , '01' , 80) insert into SC values('01' , '02' , 90) insert into SC values('01' , '03' , 99) insert into SC values('02' , '01' , 70) insert into SC values('02' , '02' , 60) insert into SC values('02' , '03' , 80) insert into SC values('03' , '01' , 80) insert into SC values('03' , '02' , 80) insert into SC values('03' , '03' , 80) insert into SC values('04' , '01' , 50) insert into SC values('04' , '02' , 30) insert into SC values('04' , '03' , 20) insert into SC values('05' , '01' , 76) insert into SC values('05' , '02' , 87)

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.doczj.com/doc/af3818459.html,O=https://www.doczj.com/doc/af3818459.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

相关主题
文本预览
相关文档 最新文档