SQL操作数据

DML

DML 语句可执行:

插入新数据

修改已有数据

删除数据

INSERT

INSERT语句一次将一个记录的数据输入表中

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

例子:

INSERT INTO dept (deptno, dname, loc)

    VALUES (50, 'DEVELOPMENT', 'DETROIT')

INSERT语句中使用函数

例如:

使用NOW()函数插入当前的日期和时间

INSERT INTO emp (empno, ename, job,

  mgr, hiredate, sal, comm,

  deptno)

    VALUES (7196, 'GREEN', 'SALESMAN',

  7782, NoW(), 2000, NULL,

  10);

插入空值

例1

INSERT INTO dept (deptno, dname )

    VALUES (60, 'MIS');

例2

INSERT INTO dept

    VALUES (70, 'FINANCE', NULL);

从其他表中拷贝记录

INSERT INTO managers(id, name, salary, hiredate)

            SELECT empno, ename, sal, hiredate

          FROM  emp

            WHERE job = 'MANAGER';

INSERT INTO emp_copy

            SELECT *

          FROM  emp

            WHERE job = 'MANAGER‘

UPDATE 语句

使用UPDATE语句修改已存在的记录

UPDATE table

SET column = value [, column = value]

[WHERE condition]

修改记录

使用WHERE子句修改指定的记录.

UPDATE emp

    SET    deptno = 20

    WHERE  empno = 7782

修改所有的记录.

UPDATE employee

    SET    deptno = 20

通过查询更新

UPDATE emp_copy

    SET  job = (SELECT job

          FROM    emp

      WHERE  empno = 7698),deptno= (SELECT deptno

      FROM    emp  WHERE  empno = 7698) WHERE empno=7566

DELETE 语句

使用DELETE删除表中所有数据 

DELETE [FROM] table

[WHERE   condition](使用WHERE来限定删除什么)

从表中删除记录

DELETE FROM dept

  WHERE dname = 'DEVELOPMENT'

删除所有的记录

DELETE FROM dept

数据类型

创建表

你必须有 :

    建表的权限

    有存储区域

    CREATE TABLE [schema.]table

    (column datatype [DEFAULT expr]

你可指定:

    表名 Table name

    列名, 列的数据类型, 列的大小

建表

REATE TABLE dept2(deptno INT,

  dname VARCHAR(14),

  loc VARCHAR(13))

使用子查询创建表

列的数目要和子查询中的匹配

可定义列名和缺省值

CREATE TABLE table

    [column(, column...)]

AS subquery

例:CREATE TABLE dept30

               AS

                       SELECT empno, ename, sal*12 ANNSAL, hiredate

                        FROM emp

                        WHERE deptno = 30

ALTER TABLE 语句

使用ALTER TABLE 语句可:

加一列

ALTER TABLE table

ADD   (column datatype [DEFAULT expr]

  [, column datatype]...)

ALTER TABLE dept30

    ADD   (job VARCHAR(9))

修改列

ALTER TABLE table

MODIFY   (column datatype [DEFAULT expr]

  [, column datatype]...)

ALTER TABLE dept30

MODIFY job VARCHAR(20)

删除列

ALTER TABLE table DROP COLUMN column

ALTER TABLE dept30 DROP COLUMN job

删除表

DROP TABLE dept2

改表名

ALTER TABLE tablename RENAME table_newname

ALTER TABLE dept30 RENAME dept40

什么是约束

约束是表级强制执行的规则.

当表中数据有相互依赖性时,可保护数据不被删除.

有如下类型的约束:

NOT NULL

UNIQUE Key

PRIMARY KEY

FOREIGN KEY

约束概况

创建约束:

在建表的同时创建

建表后创建

可定义列级或表级约束.

CREATE TABLE [schema.]table

    (column datatype [DEFAULT expr]

[column_constraint],

[table_constraint]);


CREATE TABLE emp

      (empno  NUMBER(4),

        ename  VARCHAR2(10),

      deptno  NUMBER(7,2) NOT NULL,

    CONSTRAINT emp_empno_pk

          PRIMARY KEY (EMPNO));

创建约束

列级约束

column [CONSTRAINT constraint_name] constraint_type,

表级约束

column,...

  [CONSTRAINT constraint_name] constraint_type

  (column, ...)

非空约束(NOT NULL)

定义列级约束

CREATE TABLE dept6(deptno INT NOT NULL,

    deptname VARCHAR(20),

    deptloc VARCHAR(50))

唯一性约束(UNIQUE)

定义唯一性约束

CREATE TABLE dept(

  deptno INT,

  dname VARCHAR2,

  loc VARCHAR2,

  CONSTRAINT uk_dept_dname UNIQUE(dname))

主键约束

CREATE TABLE dept6(

    deptno INT,

  dname VARCHAR(14),

  loc VARCHAR(13),

  CONSTRAINT dept_dname_uk UNIQUE(dname),

  CONSTRAINT pk_deptno PRIMARY KEY(deptno))

外键约束(FOREIGN KEY)

定义外键约束

CREATE TABLE `emp_copy` (

  `empno` int(4) NOT NULL,

  `ename` varchar(60) default NULL,

  `job` varchar(30) default NULL,

  `mgr` int(4) default NULL,

  `hiredate` date default NULL,

  `sal` float default NULL,

  `comm` float default NULL,

  `deptno` int(2) default NULL,

  PRIMARY KEY  (`empno`),

  KEY `emp_index` (`deptno`),

  CONSTRAINT `pk_emp_dept` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`)

                                                  )

视图

视图是一个虚拟表,限制对数据的访问

很容易的写成复杂的查询

允许数据的独立性

不同的视图可获得相同的数据

创建视图的语句中可嵌入子查询.

CREATE [OR REPLACE] VIEW

view_name [(column_list)]

AS select_statement

创建视图.

CREATE VIEW empvu10

  AS SELECT empno, ename, job

    FROM emp

    WHERE deptno = 10

在子查询中使用列别名创建视图.

CREATE VIEW salvu30

    AS SELECT empno as EMPLOYEE_NUMBER, ename as NAME,

  sal as SALARY

    FROM emp

    WHERE deptno = 30

在查询视图时使用列别名.

SELECT EMPLOYEE_NUMBER, NAME, SALARY

  FROM    salvu30

修改视图

使用CREATE OR REPLACE VIEW 子句修改 视图 ,并为每列加别名.

CREATE OR REPLACE VIEW empvu10

      (employee_number, employee_name, job_title)

    AS SELECT empno, ename, job

    FROM emp

    WHERE deptno = 10

在CREATE VIEW语句中列的别名的顺序是和子查询中一致的.

复杂视图的特点:

从多个表查询

包含函数

包含分组数据

CREATE VIEW dept_sum_vu

      (name, minsal, maxsal, avgsal)

    AS SELECT d.dname, MIN(e.sal), MAX(e.sal),

AVG(e.sal)

    FROM emp e, dept d

    WHERE e.deptno = d.deptno

    GROUP BY d.dname

删除视图

删除视图并不删除基表中的数据.

DROP VIEW view

DROP VIEW empvu10

视图可从其他的表或视图中获取数据.

视图提供如下优点:

限制数据的访问

简化查询

提供独立的数据

允许多个视图使用相同的数据

删除时不影响基表

建用户

设置密码

CREATE USER user

IDENTIFIED BY  password

CREATE USER tester IDENTIFIED BY 'tiger'

设置或修改密码

超级用户可使用 CREATE USER 语句建用户.

SET PASSWORD=PASSWORD (password)

SET PASSWORD=PASSWORD ('tom1')

权限列表

ALTER: 修改表和索引。

CREATE: 创建数据库和表。

DELETE: 删除表中已有的记录。

DROP: 抛弃(删除)数据库和表。

INDEX: 创建或抛弃索引。

INSERT: 向表中插入新行。

REFERENCE: 引用。

SELECT: 检索表中的记录。

UPDATE: 修改现存表记录。

FILE: 读或写服务器上的文件。

PROCESS: 查看服务器中执行的线程信息或杀死线程。

RELOAD: 重载授权表或清空日志、主机缓存或表缓存。

SHUTDOWN: 关闭服务器。

ALL: 所有权限,ALL PRIVILEGES同义词。

USAGE: 特殊的 "无权限" 权限。

赋予权限

GRANT privilege ON object TO host IDENTIFIED BY 'password'

GRANT ALL ON *.* TO 'tester'@'localhost' IDENTIFIED BY 'tester'

说明:授予tester在服务器本机上所有权限。

          *.*  代表所有数据库所有对象。Test.*  代表test数据库所有对象

    ’ tester ‘ @ ’ localhost ‘ 代表tester用户在本机操作权限。    

    ’ tester ‘ @ ’ % ‘ 代表tester用户从所有机器上操作权限。

刷新权限

通常执行完需要刷新权限

FLUSH PRIVILEGES

撤销权限

REVOKE privilege ON object FROM username

REVOKE update ON company.* FROM tester

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容