sql常用语句

1 表的建立

语法:CREATE TABLE 表名 [表约束]  

 

(列名1 数据类型 [缺省值1,列约束1]

(列名2 数据类型 [缺省值2,列约束2]

列名n 数据类型 [缺省值n,列约束n]

[TABLESPACE 表空间名称]

[STORAGE (存贮的子句)]

[ENABLE 约束名]

[DISABLE 约束名

2 插入数据

INSERT INTO 表名[(列名1,)]    VALUES(1,值2,…,值n)

INSERT INTO STUDENT VALUSE(1003, 'E',12);

对表中已有数据进行修改,语句句法:

UPDATE 表名SET 列名1=表达式1,列名2=表达式2,…

WHERE 条件;

将B的年纪改为18;应该执行以下语句:

UPDATE STUDENT SET AGE=18 WHERE NAME='B';

删除表中已有数据,不能删除不存在的数据。

语句句法:

  • DELETE FROM 表名 WHERE 条件;

  • 表结构的修改

     

    ALTER TABLE 表名 ADD(新列名 数据类型(长度))

        例如:

        ALTER  TABLE  STUDENT  ADD (DEPARTMENT CHAR(8));

    b.增加已有列的数据类型。

        例如:

        ALTER  TABLE  STUDENT  MODIFY(NAME VARCHAR2(25));

    将已经存在的表删除,语句句法:

        DROP TABLE表名;

        例如:

        DROP TABLE EMP

    SELECT命令的语法为:

    SELECT [DISTINCT|ALL] {*|模式名.] {表名|视图名|

    快照名] .*…| {表达式[列别名]…} } [, [模式名. ] {表名|

    视图名|} .*…| 表达式[列别名] ]…

    FROM [模式名.] {表名|视图名|快照名} [@数据库链名] [表别名]

    [, [模式名.] {表名|视图名|快照名} [@数据库链名]

    [表别名] ]

    [WHERE条件]

    [START WITH条件 CONNECT BY 条件]

    [GROUP BY表达式[,表达式] [HAVING条件]

    [UNION|UNION ALL |INTERSECT|MINUS]SELECT命令

    [ORDER BY{表达式|位置} [ASC|DESC] [, {表达式|位置[ASC|DESC]}]]

     

    NONAMEAGE
    1001AE12
    1002BT14

    (1) 查询年纪为12的学生姓名;

    SELECT STUDENT.NAME FROM STUDENT WHERE AGE=12;

    (2) 查询年纪在12至16岁之间的学生姓名;

    SELECT STUDENT.NAME FROM STUDENT WHERE AGE BETWEEN 12 AND 16;

    (3) 查询年纪在12至16岁之间的学生姓名;

    SELECT STUDENT.NAME FROM STUDENT WHERE AGE NOT BETWEEN 12 AND 16;

    (4) 查询所有姓名以A开头的学生的姓名;

    SELECT STUDENT.NAME FROM STUDENT WHERE NAME LIKE 'A%';

    (5) 列出所有学生年纪的和,年纪的平均值,最大值,最小值,最大值与最小值之间的差值;

    SELECT AVG(AGE), SUM(AGE), MAX(AGE), MIN(AGE), MAX(AGE)-MIN(AGE);

    (6) 将所有学生按学号顺序升序排列;

    SELECT * FROM STUDENT ORDER BY NO DESC;

    (7) 将所有学生按学号顺序升序排列;

    SELECT * FROM STUDENT ORDER BY NO ASC;

    例如:对于STUDENT表:
    在已存在的表中增加新列,语句句法:

 

 

向表中增加一个 VARCHAR 列:

ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
   

对现存列改名:

ALTER TABLE distributors RENAME COLUMN address TO city;
   

对现存表改名:

ALTER TABLE distributors RENAME TO suppliers;
 
表结构:
--用户表
CREATE TABLE users (
  u_id VARCHAR(64) NOT NULL ,-- '用户ID',
  d_id  varchar(64) references department(d_id), -- '所属部门id',
  u_serial  INTEGER default 0, -- '排序编号',
  u_name VARCHAR(50) NOT NULL,-- '用户名',
  password VARCHAR(45) NOT NULL, --'密码',
  gender VARCHAR(8),       --'性别',
  real_name VARCHAR(45),  --'用户真实姓名',
  email VARCHAR(60),  --'电子邮件地址',
  address VARCHAR(100), -- '用户地址',
  tel VARCHAR(45), -- '用户电话号码',
  fax VARCHAR(45),-- '用户传真号码',
  mobile VARCHAR(45), -- '用户手机号码',
  status VARCHAR(45) default 'Active', --'用户状态',
  PRIMARY KEY(u_id)
)
--角色表
CREATE TABLE roles (
  r_id VARCHAR(64) NOT NULL,-- '角色ID',
  r_name VARCHAR(45) NOT NULL,-- '角色名称',
  r_serial INTEGER  default 0,--'角色排序编号',
  d_id  varchar(64) references department(d_id), -- '所属部门id',
  comments VARCHAR(100),--'角色备注',
  PRIMARY KEY (r_id),
)
--用户角色对应关系表(多对多)
CREATE TABLE users_roles_relation (
  u_id VARCHAR(64) references users(u_id),--'用户ID',
  r_id VARCHAR(64) references roles(r_id),--'角色ID',
  primary key(u_id,r_id)
 )
要求: 传入一个部门id和角色名找出相对应的用户信息。
select * from users where u_id in ( select u_id from users_roles_relation where r_id in (select distinct r_id from roles where d_id = '42114800-6f22-1000-83e5-c505cae624fd' and r_name = '经理')) 
优化后:
select a.*   from users a ,roles b,  users_roles_relation c where a.u_id = c.u_id and b.r_id = c.r_id and b.d_id = '42114800-6f22-1000-83e5-c505cae624fd' and b.r_name = '经理'
 
 
 
access 数据导入mssql2005
use javaoa;
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
insert into test select * from openrowset('Microsoft.Jet.OLEDB.4.0','c:/Data.mdb';'admin';'',tblmold) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值