实用sql语句拾零

2023-12-26 01:32

本文主要是介绍实用sql语句拾零,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SQl Server数据库

1新建表:

create table users(

userid int primary key identity(1,1),--用户编号(主键、自增长)
idcard varchar(20) not null,--身份证号
uname varchar(30) not null,--姓名
sex varchar(10) not null,
age int not null,
tel varchar(20) null,--电话
address varchar(30) not null,--地址
partymemberid int foreign key references 表名(该表主键)--设置外键

)

2.插入:

insert into users values(,'','',);

3.查询:

select * from 表名;

select * from 表名 where usreid=X;

select count(*) from 表名;  --查询该表数据总数

select count(*) from 表名  where usreid=X;  --按条件查询该表数据总数

select count(*) from 表名 whereuname like '%"+X+"%'";  --按条件模糊查询该表数据总数

select top 5 * from 表名 usersid not in (select top 5usersid from 表名 order byusersid asc)order by usersid asc --分页显示所有

select top 5 * from partymember where unit='湖文' and partymemberid not in (select top 5 partymemberid from partymember where  unit='湖文' order by partymemberid asc)order by partymemberid asc   --按条件查询后分页显示

select top 16 users.uname,partymember.* from partymember inner join users on users.idcard=partymember.idcard where unit like '%学%' and partymemberid not in (select top 0 partymemberid from partymember inner join users on users.idcard=partymember.idcard where unit like '%学%' order by partymemberid asc)order by partymemberid asc--按条件模糊查询后分页显示

4.更新数据:

update 表名 set uname='dzl' where userid=X

5.删除数据:

delete from 表名 where userid=X

6.清空表:

truncate table 表名

7.删除表:

drop table 表名


设置数据库为多用户:

 ALTER DATABASE [数据库名] SET MULTI_USER



MySql数据库


创建表(auto_increment 表示自增长,enum枚举类型以下拉框的形式展现):

CREATE TABLE test(
id int auto_increment PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex VARCHAR(2) NOT NULL,

types ENUM('jpg','png','gif')

)


分页查询:

select * from 表名 where userid limit "+ (PageNo - 1)* 16+ ",16;(16代表一页显示16条数据)

按条件模糊查询后分页显示:

select * from 表名 where uname LIKE '%" + input+ "%' and userid limit "+ (PageNo - 1)* 16+ ",16;



Oracle数据库

常用命令

desc 表名 --用于显示表结构

ed --打开编辑窗口,编辑完后输入"/"再回车

commit   提交

rollback   回滚 

order by   --排序– ASC(ascend) : 升序

DESC(descend) : 降序

•ROUND: 四舍五入

ROUND(45.926, 2)  45.93


•TRUNC:  截断

TRUNC(45.926, 2)  45.92


•MOD: 求余

MOD(1600, 300)                     100


select to_char(sysdate,'yyyy-MM-dd  HH:mm:ss')from dual;


设置id自增长:

例:(1)创建一个测试表test

create  table  test
(id  int  primary  key ,
name  varchar2(10)
);
(2)创建一个序列
create  sequence  test_seq increment  by  1 start  with 
minvalue 1 maxvalue 9999999999999 nocache 
order ;
(3) 触发器实现
create  or  replace  trigger  test_trigger
before  insert  on  test
for  each 
row
begin
      select   test_seq.Nextval  into :new.id  from  dual;
end ;
(4)测试
insert into test (namevalues ('子龙');

分页查询(查询第21到第40条数据):

SELECT *

  FROM (SELECT a.*, ROWNUM rn

          FROM (SELECT *

                  FROM 表名) a

         WHERE ROWNUM <= 40)

 WHERE rn >= 21

分页显示(一页显示16条数据):

SELECT *FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM users) a WHERE ROWNUM <= "+ PageNo* 16+ ") WHERE rn >"+ (PageNo - 1)* 16+";

按条件模糊查询后分页显示:

SELECT *FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM users) a WHERE ROWNUM <= "+ PageNo* 16+ ") WHERE idcardLIKE '%" + input+ "%'and  rn > "+ (PageNo - 1)* 16+";

查询前10条数据(按id排序):

select * from (select * from users order by userid )where rownum <=10


设置主外键:

create table 表名(
    partymemberid int primary key,
    adress varchar(30) not null,
    unit varchar(30) not null,
    worktime varchar(20) null,
    jointime varchar(20) not null,
    note varchar(50) null,
    idcard varchar(18),
    foreign KEY(idcard) REFERENCES 主表(主表中的主键)
   );


ON DELETE CASCADE( 级联删除):当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL( 级联置空):子表中相应的列置空

1.新建表:

create table 表名(

id number(10),

name varchar(20)

);


2.查询语句(select),注意每条语句都要以;结尾

select * from 表名; 查询表中所有数据

select 列名,列名 from 表名; 查询指定列的数据

select 列名  as "别名",列名 别名, 列名 "别名"from 表名 ; 查询指定列的数据并为列指定别名

select distinct 列名 from 表名;· 过滤掉重复行

例:     选择在1994年雇用的员工的姓名和雇用时间

a)  select last_name,hire_date

b)  from employees

c)    where to_char(hire_date,'yyyy')='1994'

例:    选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时间

a)  select last_name,job_id,hire_date

b)  from employees

c)  --where hire_date between '1-2月-1998' and '1-5月-1998'

d)      where to_char(hire_date,'yyyy-mm-dd')between'1998-02-01'and'1998-05-01'


多表连接查询(有相同的列):连接 n个表,至少需要n-1个连接条件

等值连接:

SELECT  table1.column, table2.column

FROM  table1, table2

WHERE  table1.column1=table2.column2;

或(使用别名)

SELECT e.employee_id,e.last_name,e.department_id,

      d.department_id,d.location_id

FROM  employees e , departments d

WHERE e.department_id =d.department_id;


非等值连接:

SELECT e.last_name,e.salary,j.grade_level

FROM  employees e, job_gradesj

WHERE e.salary

      BETWEEN j.lowest_sal ANDj.highest_sal;

•内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
•外连接: 两个表在连接过程中除了返回满足连接条件的行以外 还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右)外连接。没有匹配的行时, 结果表中相应的列为空(NULL). 外连接的 WHERE子句条件类似于内部连接, 但 连接条件中没有匹配行的表的列后面要加 外连接运算符 , 即用圆括号括起来的加 (+)
•满 外连接:两个表在连接过程中 除了返回满足连接条件的行以外还返回两个表中不满足条件的行 ,这种连接称为满 外连接。


右外连接:

SELECT e.last_name,e.department_id,d.department_name

FROM  employees e, departments d

WHERE e.department_id(+) =d.department_id ;

左外连接:

SELECT e.last_namee.department_idd.department_name

FROM  employees e, departments d

WHERE e.department_id = d.department_id(+);


满外连接:

SELECT e.last_name,e.department_id,d.department_name

FROM   employees e

FULL OUTER JOIN departments d

ON   (e.department_id= d.department_id);



使用 ON 子句创建多表连接:

SELECT employee_id, city,department_name

FROM  employees e

JOIN  departments d

ON    d.department_id =e.department_id

JOIN  locations l

ON    d.location_id =l.location_id;

可以使用GROUP BY子句将表中的数据分成若干组:

SELECT   department_id, AVG(salary)

FROM     employees

GROUP BY department_id ;

过滤分组:HAVING子句:

SELECT   department_id, MAX(salary)

FROM     employees

GROUP BY department_id

HAVING   MAX(salary)>10000 ;


修改表:

alter table test drop column sex;   删除一列

alter table test rename column 原列名 to 新列名; 重命名一个列

alter table test modify name varchar(10); 可修改列的数据类型、尺寸和默认值






这篇关于实用sql语句拾零的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537680

相关文章

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析