实用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

相关文章

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3