精华内容
下载资源
问答
  • 数据库sql语句大全
    千次阅读
    2021-07-19 21:02:10

    最简单的就是查询:select语句

    数据库操作语言DML:update、insert、delete等

    数据库定义语言DDL:create、drop、alter等等

    oracle取前几条数据语句
    sqlserver中可以用top n 的方法,oracle中用

    rownum,但如果只用

    rownum会随机取数据,如果想按一定顺序取前几条数据

    则可这样写:

    select * from (select列 from 表 where 条件 order by列 desc) where rownum<>

    select * from (select rownum r ,* from test) tt

    where tt.r 50 and tt.r <= 100;=””>

    这样子写是会全表扫描的的,小的表不觉得会有多慢,数据量大了你就知道有多不好了,改成这样就不会了

    oracle怎幺写”IF”语句?
    如果是 SQL 语句里面使用。

    使用 DECODE 或者 CASE WHEN

    DECODE 的用法就是

    DECODE(abc, 50, ‘A’, ‘B’)

    CASE WHEN 的用法就是

    CASE WHEN abc=50 THEN ‘A’ ELSE ‘B’ END

    如果是在存储过程里面的话,就是简单的 IF/ELSE 了

    SQL 语句的话,就是

    SELECT

    abc, DECODE(abc, 50, ‘A’, ‘B’)

    FROM

    什幺是oracle实例,写出在oracle如何查找实例名的sql语句
    oracle数据库实例(instance_name)是用于和操作系统进行联系的标识,也就是说数据库和操作系统之间的交互使用的是数据库实例。

    数据库名和实例名可以相同也可以不同。在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。

    用系统sysdba权限登录后:查询oracle实例的方法:

    方法一:sql”select instance_name from v$instance“;

    方法二:使用show命令”show parameter instance“。

    求一份oracle的SQL语句大全 包括带数据的表
    建议看21天sql自学通

    下载地址

    [wenku.baidu.空白]

    表要自己在数据库环境上去建的。如果想操作,上述教材有相关指引,教你怎幺建一个表。对着上面教材提供的表和数据,在pl/sql developer上建立新的表,然后自己填上相关数据,就可以进行查询操作了。

    oracle sql语句 分为哪些
    Oracle SQL语句分类

    SQL(Structured Query Language)即结构化查询语句,应用程序与数据库交互的接口

    集数据操作、数据定义、数据控制等功能于一体

    ANSI先后制定推出了SQL-89、SQL-92、SQL-99标准

    oracle SQL 语句主要分为一下四类:

    DML(Data Mannipulation Language)数据操纵语言:查询、操纵数据表资料行

    SELECT : 检索数据库表或视图数据

    INSERT : 将数据行新增至数据库表或视图中

    UPDATE : 修改表或视图中现有的数据行

    DELETE : 删除表或视图中现有的数据行

    注意:DML语句不会自动提交事务!

    DDL(Data Definition Language)数据定义语言:建立、修改、删除数据库中数据表对象

    CREATE TABLE : 创建表

    ALTER TABLE : 修改表

    DROP TABLE : 删除表

    注意:DLL语句会自动提交事务!所以:DML语句事务提交之前可以回滚,DDL语句不能回滚事务

    DCL(Data Control Language)数据控制语言:用于执行权限授予与收回操作

    GRANT : 给用户或角色授予权限

    REVOKE : 收回用户或角色的所有权限

    TCL(Transactional Control Language)事物控制语言:维护数据的一致性

    COMMIT :提交已经进行的数据库改变

    ROLLBACK : 回滚已经进行的数据改变

    SAVEPOINT : 设置保存点,用于部分数据改变的取消

    oracle语句查询 or和and
    (FirstName=’Thomas’ OR FirstName=’William’) AND LastName=’Carter’ 会得到 lastname 必须为 carter ,firstname 为 thomas 或者 william的人

    thomas carter

    william carter

    FirstName=’Thomas’ OR FirstName=’William’ AND LastName=’Carter’ 可以得到 william carter 或者 firstname 为ithomas lastname 不一定是 carter的人 比如:

    thomas carter

    william carter

    thomas king

    求 oracle update 语句 一个能用的例子
    比如说我现在数据库中???表A我,有两列:ID和name,

    我现在需要把ID=1001的name字段改成‘小明’:

    答案如下:

    update?A?set?name=’小明’?where?ID=’1001′

    用oracle里的sql语言创建用户
    用如下语句创建用户:

    create?user?shopping?identified?by?shopping–用户名为shopping,密码为shopping

    default?tablespace?shopping?–默认表空间为shopping

    temporary?tablespace?shopping_temp;?–默认临时表空间为shopping_temp

    但一般创建用户后,需要赋予一定的权限:下边语句则是给shopping用户赋予connect,resource及dba权限。

    grant?connect,resource,dba?to?shopping;

    oracle创建用户语句
    创建用户的语句:

    Oracle创建用户(密码验证用户),可以采用CREATE USER命令。

    CREATE USER username IDENTIFIED BY password

    OR IDENTIFIED EXETERNALLY

    OR IDENTIFIED GLOBALLY AS ‘CN=user’

    [DEFAULT TABLESPACE tablespace]

    [TEMPORARY TABLESPACE temptablespace]

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace

    [PROFILES profile_name]

    [PASSWORD EXPIRE]

    [ACCOUNT LOCK or ACCOUNT UNLOCK]

    其中:

    CREATE USER username:用户名,一般为字母数字型和“#”及“_”符号。

    IDENTIFIED BY password:用户口令,一般为字母数字型和“#”及“_”符号。

    IDENTIFIED EXETERNALLY:表示用户名在操作系统下验证,该用户名必须与操作系统中所

    定义的用户名相同。

    IDENTIFIED GLOBALLY AS ‘CN=user’:用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名。

    [DEFAULT TABLESPACE tablespace]:默认的表空间。

    [TEMPORARY TABLESPACE tablespace]:默认的临时表空间。

    [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace:用户可以使用的表空间的字节数。

    [PROFILES profile_name]:资源文件的名称。

    [PASSWORD EXPIRE]:立即将口令设成过期状态,用户再登录前必须修改口令。

    [ACCOUNT LOCK or ACCOUNT UNLOCK]:用户是否被加锁,默认情况下是不加锁的。

    oracle数据库的权限系统分为系统权限与对象权限:

    系统权限( database system privilege )可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。

    对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。

    每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。

    更多相关内容
  • SQL数据库常用语句大全

    千次阅读 2020-02-13 14:49:55
    数据库常用语句 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57 关闭数据库服务:net stop MySQL57 启动MySQL...

    cmd环境下开启关闭数据库

    • 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57
    • 关闭数据库服务:net stop MySQL57
    • 启动MySQL服务后,命令提示符环境下连接到服务器:mysql -u root -p ,-u 后面跟连接的数据库用户,-p 表示需要输入密 码。

    一:DDL(Data Definition Languages)语句:数据定义语言,,就是对数据库内部的对象(如数据段、 数据库、表、列、索引等数据库对象)进行创建、删除、修改的 操作语言。常用的语句关键字主要包括 create、drop、alter 等。。DDL 语句更多的被数据库管理员(DBA)所使用, 一般的开发人员很少使用。

    1.创建、删除数据库
    • 创建数据库,名为test1:create database test1;
    • 查看系统中存在的数据库:show databases;
    • 选择要操作的数据库,名为test1:use test1;
    • 查看当前数据库中创建的所有数据表:show tables;
    • 删除名为test1的数据库:drop database test1;
    2.创建、删除数据表
    • 在数据库中创建一张表的基本语法如下(tablename为表的名字,column_name 是列的名字,column_type 是列的数据类型,contraints 是这个列的约 束条件,fk_tablename1_tablename2为外键名,外键名不能重复,因为表名不会重复,所以可以这样定义避免重复):
    create table  tablename1 (
    column_name_1 column_type_1 constraints, 
    column_name_2 column_type_2 constraints,
     ……
    column_name_n column_type_n constraints
    #外键约束:
    #key fk_tablename1_tablename2 (当前表的列名),
    #constraint fk_tablename1_tablename2 key(当前表的列名) references tablename2(表tb2里的列名)
    );
    
    • 查看表的定义:desc tablename;
    • 查看创建表的SQL语句,使用命令:show create table tablename \G;
    • 删除表:drop table tablename;
    • 更改表名:alter table tablename rename new_tablename;
    • 设置自增的步长为n:alter table tablename auto_increment=n;
      关于步长的其他命令

    二: DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查 询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和 select 等。

    1.插入记录
    • 插入记录的基本语法,values 后面写对应字段名称的 value,当其为字符串时,要使用引号:insert into tablename (field1,field2,...fieldn) values(value1,value2,...valuesn);
    • 也可以不用指定字段名称,但是 values 后面的顺序应该和字段的排列顺序一致: insert into tablename values(value1,value2,...valuesn);
    • 在 MySQL 中,insert 语句还有一个很好的特性,可以一次性插入多条记录,每条记录之间都用逗号进行分隔。 语法如下:
    INSERT INTO  tablename  (field1, field2,……fieldn) 
    VALUES 
    (record1_value1, record1_value2,……record1_valuesn), 
    (record2_value1, record2_value2,……record2_valuesn), 
    …… 
    (recordn_value1, recordn_value2,……recordn_valuesn)
     ; 
    
    • 将一表的数据插入到零另一表:insert into tb1(field1,field2) select fieldx,fieldy from tb2;
    2.删除记录
    • 用 delete 命令进行删除,语法如下: delete from tablename [where condition];
    3.更新记录
    • 通过 update 命令进行更改,语法如下: update tablename set field1=value1, field2=value2,... fieldn=valun [where condition];
    • 在 MySQL 中,update 命令可以同时更新多个表中数据,语法如下: update t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION] ;
    4.查询记录

    用 SELECT 命令进行各种各样的查询,使得输出的结果符合我们的要求。SELECT 的语法很复杂,这里只介绍最基本的语法:

    • 最简单的是将记录全部选出:select * from tablename;
    • 条件查询: select field1,...fieldn from tablename [where condition];
    • 排序,取出按照某个字段进行排序后的记录结果集,,这就用到了数据库 的排序操作,用关键字 ORDER BY 来实现,语法如下:
    select * from tablename [WHERE CONDITION] [order by field1 [DESC|ASC],field2 [DESC|ASC],……fieldn [DESC|ASC]];
    

    其中,DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序排列,不写此关键字默认是升序排列。ORDER BY 后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的排序顺序,如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,以此类推。

    • 限制, 如果希望只显示记录的一部分,而不是全部,这时,就可以使用 LIMIT 关键字 来实现,LIMIT 的语法如下:
    SELECT ……[limit offset_start,row_count]

    其中 offset_start 表示记录的起始偏移量,row_count 表示显示的行数。 在默认情况下,起始偏移量为 0,只需要写记录行数就可以。limit 经常和 order by 一起配合使用来进行记录的分页显示。

    • 聚合,很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数,这个时就要用到 SQL 的聚合操作。 聚合操作的语法如下:
    select [field1,field2,……fieldn] fun_name  
    from tablename 
    [WHERE where_contition] 
    [group by field1,field2,……fieldn 
    [WITH ROLLUP]] 
    [having where_contition] 
    [order by  field1 rule,...fieldn]   /*排序关键字及排序方式*/
    

    对其参数进行以下说明:
    (1) fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记 录数)、max(最大值)、min(最小值)、avg(平均值)。
    (2)group by 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门 就应该写在 group by 后面。
    (3) WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
    (4)having 关键字表示对分类后的结果再进行条件的过滤。having 和 where 的区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚 合前就对记录进行过滤.

    1. 表连接:从大类上分,表连接分为内连接和外连接,它们之间的最主要区别是內连接仅选出两张表中 互相匹配的记录,而外连接会选出其他不匹配的记录,连接条件可以在from子句或where子句中指定,建议在from子句中指定连接条件。
      (1)内连接包括等值连接和自然连接,内连接使用比较运算符根据每个表共有列的值匹配其中两个表的行,共有列的值相等就进行连接:
    -- c,s分别为给course,student取的别名,加了inner以及不加inner返回结果一样
    -- 第一条查询语句为将连接条件放在where子句中的写法
    select *
    from student s ,sc ,course c
    where sc.cno=c.cno and s.sno=sc.sno
    
    select *
    from (course c join sc on c.cno=sc.cno) join student s on sc.sno=s.sno
    
    select *
    from (course c inner join sc on c.cno=sc.cno) inner join student s on sc.sno=s.sno
    

    (2)外连接分为左外连接、右外连接、全外连接:
    A: 左外连接:包含所有的左边表中的记录,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有列均为空值。

    select c.cno,cname,s.sno,sname,sdept
    from (course c left join sc on c.cno=sc.cno) left join student s on sc.sno=s.sno
    

    B: 右外连接:返回右表的所有行,如果右表的某行在左表中没有匹配行,则为结果集中的左表返回空值。

    select c.cno,cname,s.sno,sname,sdept
    from (course c right join sc on c.cno=sc.cno) right join student s on sc.sno=s.sno
    

    C:全外连接:返回左表和右表中的所有行,当某行在另一个表中没有匹配行时,则另一个表的列返回空值。相当于左外连接和右外连接的并集。

    select *
    from (course c full join sc on c.cno=sc.cno) full join student s on sc.sno=s.sno
    

    三: DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别,一般的开发人员很少使用。主要的语句关键字包括 grant、revoke 等。

    • 创建一个数据库用户 user1,具有对 test数据库中所有表的 SELECT/INSERT 权限:
    grant select,insert on test.* to 'user'@'localhost' identified by 'password';
    
    • 将 user1的权限变更,收回 INSERT,只能对数据进行 SELECT 操作:
    revoke insert on test.* from 'user'@'localhost';
    
    展开全文
  • 史上超强最常用SQL语句大全

    万次阅读 多人点赞 2021-01-27 11:13:31
    史上超强最常用SQL语句大全,) 1)DDL--数据定义语言 用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等 2) DML--数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert, delete, ...
    史上超强最常用SQL语句大全

    DDL(Data Definition Language)数据定义语言

    一、操作库

    二、操作表

    DML(Data Manipulation Language)数据操作语言

    一、增加 insert into

    二、删除 delete

    三、修改 update

    DQL(Data Query Language)数据查询语言

    一、基础关键字

    二、排序查询 order by

    三、 聚合函数:将一列数据作为一个整体,进行纵向的计算。

    四、 分组查询 group by

    五、 分页查询

    六、内连接查询:

    1.隐式内连接:使用where条件消除无用数据

     2.显式内连接

     七、外连接查询

    1.左外连接 -- 查询的是左表所有数据以及其交集部分。

     2.右外连接  -- 查询的是右表所有数据以及其交集部分。

     八、子查询:查询中嵌套查询

       1.子查询的结果是单行单列的

       2. 子查询的结果是多行单列的:

       3. 子查询的结果是多行多列的:

     DCL(Data Control Language)数据控制语言

    管理用户

    添加用户

    删除用户

    权限管理

    查询权限

    授予权限

    撤销权限

      创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。  


    DDL(Data Definition Language)数据定义语言

    一、操作库

    -- 创建库
    create database db1;
    -- 创建库是否存在,不存在则创建
    create database if not exists db1;
    -- 查看所有数据库
    show databases;
    -- 查看某个数据库的定义信息 
    show create database db1; 
    -- 修改数据库字符信息
    alter database db1 character set utf8; 
    -- 删除数据库
    drop database db1; 

    二、操作表

    --创建表
    create table student(
        id int,
        name varchar(32),
        age int ,
        score double(4,1),
        birthday date,
        insert_time timestamp
    );
    
    -- 查看表结构
    desc 表名;
    -- 查看创建表的SQL语句
    show create table 表名;
    -- 修改表名
    alter table 表名 rename to 新的表名;
    -- 添加一列
    alter table 表名 add 列名 数据类型;
    -- 删除列
    alter table 表名 drop 列名;
    -- 删除表
    drop table 表名;
    drop table  if exists 表名 ;

    DML(Data Manipulation Language)数据操作语言

    一、增加 insert into

    -- 写全所有列名
    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
    -- 不写列名(所有列全部添加)
    insert into 表名 values(值1,值2,...值n);
    -- 插入部分数据
    insert into 表名(列名1,列名2) values(值1,值2);

    二、删除 delete

    -- 删除表中数据
    delete from 表名 where 列名  = 值;
    -- 删除表中所有数据
    delete from 表名;
    -- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
    truncate table 表名;

    三、修改 update

    -- 不带条件的修改(会修改所有行)
    update 表名 set 列名 = 值;
    -- 带条件的修改
    update 表名 set 列名 = 值 where 列名=值;

    DQL(Data Query Language)数据查询语言

    关于查询语句有很多,这里基础的不再介绍。主要介绍排序查询、聚合函数、模糊查询、分组查询、分页查询、内连接、外连接、子查询

    一、基础关键字

     BETWEEN...AND (在什么之间)和  IN( 集合)

    -- 查询年龄大于等于20 小于等于30				
    SELECT * FROM student WHERE age >= 20 &&  age <=30;
    SELECT * FROM student WHERE age >= 20 AND  age <=30;
    SELECT * FROM student WHERE age BETWEEN 20 AND 30;
    				
    -- 查询年龄22岁,18岁,25岁的信息
    SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
    SELECT * FROM student WHERE age IN (22,18,25);

     is null(不为null值) 与 like(模糊查询)、distinct(去除重复值)

    -- 查询英语成绩不为null
    SELECT * FROM student WHERE english  IS NOT NULL;
    	
     _:单个任意字符
     %:多个任意字符
    -- 查询姓马的有哪些? like
    SELECT * FROM student WHERE NAME LIKE '马%';
    -- 查询姓名第二个字是化的人			
    SELECT * FROM student WHERE NAME LIKE "_化%";				
    -- 查询姓名是3个字的人
    SELECT * FROM student WHERE NAME LIKE '___';					
    -- 查询姓名中包含德的人
    SELECT * FROM student WHERE NAME LIKE '%德%';
    
    -- 关键词 DISTINCT 用于返回唯一不同的值。
    -- 语法:SELECT DISTINCT 列名称 FROM 表名称
    SELECT DISTINCT NAME FROM  student ;
    

    二、排序查询 order by

    语法:order by 子句

              order by 排序字段1 排序方式1 ,  排序字段2 排序方式2...

    注意:
                如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。

    -- 例子
    SELECT * FROM person ORDER BY math; --默认升序
    SELECT * FROM person ORDER BY math desc; --降序

    三、 聚合函数:将一列数据作为一个整体,进行纵向的计算。

    1.count:计算个数

    2.max:计算最大值

    3.min:计算最小值

    4.sum:计算和

    5.avg:计算平均数

    四、 分组查询 grout by

          语法:group by 分组字段;

          注意:分组之后查询的字段:分组字段、聚合函数

    -- 按照性别分组。分别查询男、女同学的平均分
    SELECT sex , AVG(math) FROM student GROUP BY sex;
    
    -- 按照性别分组。分别查询男、女同学的平均分,人数
     SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
    
    --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
    SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
    
     --  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
    SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
    SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

    五、 分页查询

        1. 语法:limit 开始的索引,每页查询的条数;
        2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
        3. limit 是一个MySQL"方言" 

    -- 每页显示3条记录 
    
    SELECT * FROM student LIMIT 0,3; -- 第1页
    
    SELECT * FROM student LIMIT 3,3; -- 第2页
    
    SELECT * FROM student LIMIT 6,3; -- 第3页

    六、内连接查询:

       1. 从哪些表中查询数据

       2.条件是什么

       3. 查询哪些字段

    1.隐式内连接:使用where条件消除无用数据

    -- 查询员工表的名称,性别。部门表的名称
    SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;
    
    SELECT 
        t1.name, -- 员工表的姓名
        t1.gender,-- 员工表的性别
        t2.name -- 部门表的名称
    FROM
        emp t1,
        dept t2
    WHERE 
        t1.`dept_id` = t2.`id`;

     2.显式内连接

    -- 语法: 
    select 字段列表 from 表名1 [inner] join 表名2 on 条件
    -- 例如:
    SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;   
    SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`; 

     七、外连接查询

    1.左外连接 -- 查询的是左表所有数据以及其交集部分。

    -- 语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
    -- 例子:
    -- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
    SELECT  t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;

     2.右外连接  -- 查询的是右表所有数据以及其交集部分。

    -- 语法:
    select 字段列表 from 表1 right [outer] join 表2 on 条件;
    -- 例子:
    SELECT  * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;

     八、子查询:查询中嵌套查询

    -- 查询工资最高的员工信息
    -- 1 查询最高的工资是多少 9000
    SELECT MAX(salary) FROM emp;
    
    -- 2 查询员工信息,并且工资等于9000的
    SELECT * FROM emp WHERE emp.`salary` = 9000;
    
     -- 一条sql就完成这个操作。这就是子查询
    SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);

       1.子查询的结果是单行单列的

     子查询可以作为条件,使用运算符去判断。 运算符: > >= < <= =

    -- 查询员工工资小于平均工资的人
    SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);

       2. 子查询的结果是多行单列的:

       子查询可以作为条件,使用运算符in来判断

    -- 查询'财务部'和'市场部'所有的员工信息
    SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部';
    SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;
    
    -- 子查询
    SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');

       3. 子查询的结果是多行多列的:

       子查询可以作为一张虚拟表参与查询

    -- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
    -- 子查询
    SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2 WHERE t1.id = t2.dept_id;
    
    -- 普通内连接
    SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` >  '2011-11-11'

     DCL(Data Control Language)数据控制语言

    管理用户

    添加用户

    语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

    删除用户

    语法:DROP USER '用户名'@'主机名';

    权限管理

    查询权限

    -- 查询权限
    SHOW GRANTS FOR '用户名'@'主机名';
    SHOW GRANTS FOR 'lisi'@'%';

    授予权限

    -- 授予权限
    grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
    
    -- 给张三用户授予所有权限,在任意数据库任意表上
    GRANT ALL ON *.* TO 'zhangsan'@'localhost';

    撤销权限

    -- 撤销权限:
    revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
    REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

      创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。  

    展开全文
  • 达梦数据库常用sql语句大全

    千次阅读 2021-07-12 11:12:53
    1.更新模式下统计信息: DBMS_STATS.GATHER_SCHEMA_STATS( '模式名', 100, FALSE, 'FOR ALL COLUMNS SIZE AUTO'); 2.初始化代理环境: ... SF_GET_SESSION_SQL(SESS_ID) ,--获取完整sql sess_id ,

    一、对象操作相关sql

    1.查看表占用空间:
    SELECT TABLE_USED_PAGES('模式名', '表名') * PARA_VALUE / 1024 / 1024 "USER_USED_SPACE(MB)"
      FROM V$DM_INI
     WHERE PARA_NAME LIKE 'GLOBAL_PAGE_SIZE';
    
    2.拼接sql,批量删除模式下的表:
    select  'drop table SYSDBA."' 
    || A .TABLE_NAME
    ||' ;' 
    FROM DBA_TABLES A WHERE OWNER='SYSDBA';
    
    3.查找一个表属于哪个用户;
    select * from dba_tables  where TABLE_NAME='表名';
    
    4.查询某一模式下的所有表名
    select TABLE_NAME from dba_tables where owner='SYSDBA';
    
    5.查询数据库中所有用户及状态
    select username, ACCOUNT_STATUS from dba_users ;
    
    6.查询当前用户拥有哪些角色;
    select grantee,granted_role from dba_role_privs where grantee='用户名';
    
    7.查询当前角色下有哪些权限;
    select grantee,privilege from dba_sys_privs where grantee='角色名';
    
    8.查询数据库是否兼容其他数据库模式
    select * from v$dm_ini where "V$DM_INI".PARA_NAME='COMPATIBLE_MODE';
    

    查询结果为0,表示不兼容;
    2:部分兼容 ORACLE,
    3:部 分兼容 MS SQL SERVER,
    4:部分兼容 MYSQL

    9.修改数据库当前兼容模式

    见上一条,如果修改为部分兼容 MYSQL;

    sp_set_para_value(2,'COMPATIBLE_MODE',4);
    

    见上一条,如果修改为部分兼容 ORACLE;

    sp_set_para_value(2,'COMPATIBLE_MODE',2);
    

    修改以后重启数据库实例服务生效;

    10.查询表上的唯一索引对应的列

    修改PRODUCT_VENDOR为对应的表名

    select
            column_name
    FROM
            dba_ind_columns
    where
            index_name in
            (
                    select
                            index_name
                    from
                            dba_indexes
                    where
                            table_name ='PRODUCT_VENDOR'
                        and uniqueness = 'UNIQUE'
            );
    

    二、优化相关sql

    1.更新模式下统计信息:
    DBMS_STATS.GATHER_SCHEMA_STATS( 
    '模式名',
    100, 
    FALSE, 
    'FOR ALL COLUMNS SIZE AUTO');
    
    2.更新单表统计信息:
    SP_TAB_STAT_INIT('模式名','表名');
     或者 
    DBMS_STATS.GATHER_TABLE_STATS('模式名','表名',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO')
    
    3.更新单列统计信息:
      STAT 100 ON 表名(列名);
      sp_col_stat_init('模式名','表名','列名');
      sp_tab_col_stat_init('模式名','表名');
    
    4.查询慢sql:
    select datediff(ss,sysdate,last_send_time) a,
           SF_GET_SESSION_SQL(SESS_ID) ,--获取完整sql
            sess_id ,
            sess_seq ,
            sql_text ,
            state ,
            seq_no ,
            user_name ,
            trx_id ,
            create_time,
            clnt_ip
            
    from
            v$sessions 
    where state='ACTIVE' and sess_id != sessid 
    order by a;
    
    5.查询阻塞锁
    select * from v$lock where blocked=1;
    
    6.查询锁等待
    select * from v$trxwait;
    
    7.按照耗时排序查询慢sql
    select timestampdiff(ss,LAST_RECV_TIME,sysdate),sf_get_session_sql(sess_id),* 
    from SYS."V$SESSIONS"
    where sess_id<>sessid
    order by 6 asc,1 desc;
    
    8.查询死锁涉及的事务信息
    select
            dh.trx_id ,
            sh.sess_id,
            wm_concat(top_sql_text)
    from
            V$DEADLOCK_HISTORY dh,
            V$SQL_HISTORY sh
    where
            dh.trx_id =sh.trx_id
        and dh.sess_id=sh.sess_id
    group by
            dh.trx_id,
            sh.sess_id
    

    三、 其他常用sql

    1.初始化代理环境:
     SP_INIT_JOB_SYS(1);
    
    2.授权激活:
    sp_load_lic_info();
    
    3.查询数据库使用的字符集
    SELECT sf_get_unicode_flag()
    

    结果为1,表示字符集为utf-8;
    结果为0,表示字符集为gbk;

    4.查询数据库大小写是否敏感
    select sf_get_case_sensitive_flag()
    

    结果为1,表示大小写敏感;
    结果为0,表示大小写不敏感;

    5.查询varchar类型是否以字符为单位
    select sf_get_length_in_char()
    

    结果为1,表示以字符为单位;
    结果为0,表示以字节为单位;

    6.清理归档:
    SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 15);
    
    7.查看用户会话空闲时间,登录失败次数限制
    select  
            a.ID         as 用户ID,
            b.name as 用户名,
            CONN_IDLE_TIME as 用户会话的最大空闲时间,
            FAILED_NUM as 用户登录失败次数限制,
            SESS_PER_USER,
            LOCK_TIME as 用户口令锁定时间
    from
            SYSUSERS a,sysobjects b
            where a.id=b.id
            
    
    8.查询用户的会话持续期以及会话使用cpu时间上限
    select
            a.ID   as 用户ID,
            b.name as 用户名,
            a.INFO1 as 会话持续期,
            a.CPU_PER_SESSION as 会话使用cpu时间上限
    from
            SYSRESOURCES a,
            sysobjects b
    where
            a.id=b.id
    
    

    欢迎关注达梦云适配中心

    展开全文
  •  SQL分类:  DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)  DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)  DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)  首先,简要介绍基础语句:  1、...
  • 经典SQL语句大全

    万次阅读 多人点赞 2016-10-01 13:59:02
    SQL语句参考,包含Access、MySQL 以及 SQL Server基础创建数据库CREATE DATABASE database-name 删除数据库drop database dbname 备份sql server 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', ...
  • 利用SQL语句创建数据库

    千次阅读 2022-04-08 15:07:14
    创建数据库(Database) create database 数据库名; 创建Table create table 表名(列名 数据类型 【Primary key| Unique】【Not null】 【,列名 数据类型 【Not null】,...】); "【】"表示其括起的内容...
  • 数据库-SQL语句创建与修改

    千次阅读 2021-10-03 16:54:29
    文章目录SQL语句创建数据库例子SQL语句修改数据库例子ALTER DATABASE语句的语法如下子句的语法如下: SQL语句创建数据库 例子 CREATE DATABASE NewsDB ON PRIMARY ( NAME=NewsDB, FILENAME='D:\XXXX\NewsDB.mdf', ...
  • 创建数据库SQL语句:mysql数据库

    千次阅读 2021-01-19 00:20:38
    创建数据库SQL语句:mysql数据库创建数据库SQL语句:1 create database stuDB2 on primary -- 默认就属于primary文件组,可省略3 (4 /*--数据文件的具体描述--*/5 name='stuDB_data', -- 主数据文件的逻辑名称6 ...
  • opengauss数据库常用SQL语句

    千次阅读 2021-09-14 11:20:18
    切换用户 \c - username 数据库相关 1.创建数据库 CREATE DATABASE dbname; 2.查看已有数据库 \l 3.切换数据库 \c database_name 表相关 1.创建表 2.查看所有表 \d 3.查看表结构 \d table_name 查询相关 1.截取日期...
  • SQL SERVER 备份数据库sql语句

    千次阅读 2018-09-26 15:39:11
    declare @filename nvarchar(100) set @filename='D:\\DB_backup\\DBNAME_'+convert(char(8),...以上代码可用于创建SQL代理作业,自动备份数据库。 步骤:SQL Server代理→新建作业→步骤(新建)→计划(新建)
  • mysql创建数据库sql语句

    万次阅读 2018-09-20 09:47:13
    drop database if exists `test-pro`; create database `test-pro` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 使用utf8mb4,和创建表类似
  • 使用SQL语句创建数据库

    千次阅读 2022-04-05 10:48:36
    CREATE DATABASE <... //数据文件的SQL语句 on primary //默认属于PRIMARY文件组,可省略 ( name=<数据库名称> //主数据文件的逻辑名称 filename=<物理名称> //主数据的物理名称 size=<>
  • 数据库常用sql语句总结

    万次阅读 多人点赞 2018-12-14 16:16:32
    查看时右侧可以打开CSDN自带的目录,方便查看 目录 一、基础 1.SELECT 语句 2.SELECT DISTINCT 语句 3.WHERE 子句 ...5.ORDER BY 语句 ...6.INSERT INTO 语句 ...7.Update 语句 ...3.SQL 通配符 4.IN...
  • mysql数据库常用sql语句

    万次阅读 多人点赞 2018-11-03 21:10:01
    数据库可以用图形化工具来实现一系列操作,这里涉及一些cmd命令行 首先要配置好环境变量可以全局操作命令,不然只能在mysql的安装目录下进行操作,这里不再叙述 1. 进入数据库: mysql -u root -p (默认用户名为...
  • 数据库sql语句如何设置外键

    千次阅读 2021-02-08 05:48:03
    数据库sql语句设置外键的方法:1、添加外键约束【alter table 从表 add foreign key(外键字段) references 主表(主键字段)】;2、删除外键约束【alter table 表名 drop foreig】。本文操作环境:Windows7系统,...
  • 创建数据库常用SQL语句

    千次阅读 2021-04-26 09:34:39
    创建数据库常用SQL语句 /* 1、新建数据库 DataBaseName 2、执行下面的sql语句添加表 3、执行下面的sql语句添加数据 3、给主键添加自增类型 5、添加主键 4、添加外键关系 */ use DataBaseName; /*删除已创建的外键和...
  • 数据库创建常用SQL语句

    千次阅读 2020-09-28 19:42:36
    删除数据库 drop database databaseName; 创建数据库 create database databaseName default character set utf8; 使用数据库 use databaseName 删除表 drop table if EXISTS tableName; 创建表 create table ...
  • SQL查询语句大全集锦(超经典)
  • MySQL常用SQL语句大全

    万次阅读 多人点赞 2017-12-21 19:22:28
    MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle、MS-SQL ,MySQL更拥有轻便、灵活、开发速度快的特色,更适用于中小型数据的存储与架构。MySQL之所以能够被数以万计的网站采用,也是...
  • 一、登入 ... 安装部署好MySQL后,打开命令...注意:使用SQL语句时一定要加“;” 查看MySQL的版本 show variables like 'version'; 创建数据库 创建一个Demo01数据库 create database Demo01; 注意:...
  • SqlServer附加数据库SQL语句

    千次阅读 2019-04-25 19:41:38
    USE master GO ... ON (FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\数据库.mdf'), (FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL11.MSS...
  • 删除数据库sql语句

    万次阅读 2019-04-27 20:44:36
    删除数据库sql语句如何写 drop database 数据库名 --删除数据库的 drop table 表名–删除表的 delete from 表名 where 条件 --删除数据的 truncate table 表名 也是删除数据库的.但是他可以裁断序列 这个你跟...
  • SQL数据库更新语句操作实例

    千次阅读 2020-12-13 14:56:09
    SQL Server数据库更新操作 名称解释(不区分大小写) student:学生表,属性分别为sno学号、sname学生姓名、age年龄、sex性别、dno学院编号、birthday生日 sc选课信息表:sno学号、cno课程号、grade成绩 dept学院...
  • SQL数据库语句优化(全)

    千次阅读 2021-06-22 14:51:28
    处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order ...
  • SQL基础语句汇总-学习

    千次阅读 2020-01-31 12:02:07
    1、说明:创建数据库(无需分类大小写) CREATE DATABASE (database-...3、说明:备份sql server — 创建 备份数据的 device USE master EXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1...
  • 数据库——SQL语句(触发器)

    千次阅读 2021-06-11 14:20:48
    数据库名> GO] CREATE TRIGGER <触发器名> ON <表名> FOR <动作INSERT,UPDATE,DELETE> AS [触发触发器后的附加条件] BEGIN <动作集合> END; **例:**创建一个删除学生成绩的触发器。 ...
  • SQL 选择数据库 USE语句

    千次阅读 2021-05-05 16:41:20
    SQL 选择数据库 USE语句  当SQL Schema中有多个数据库时,在开始操作之前,需要选择一个执行所有操作的数据库。  SQL USE语句用于选择SQL架构中的任何现有数据库。 句法  USE语句的基本语法如下所示 : USE ...
  • Oracle 查看数据库文件 SQL语句

    万次阅读 2021-09-11 12:39:49
    Oracle 数据库文件主要分为: 表空间数据文件(包括临时表空间和UNDO表空间) 控制文件 日志文件(包括重做日志和standby日志) 可以通过 SQL 来查询: set line222 col pagesize1000 select name from v$datafile ...
  • 创建数据库和表的SQL语句

    千次阅读 2021-01-21 18:11:05
    SQL常用语句:CREATE DATABASE 库名;创建数据库DROP DATABASE库名; 删除数据库USE 库名;(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]" ORDER BY 用于对结果集进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,385,883
精华内容 554,353
关键字:

数据库sql语句大全