精华内容
下载资源
问答
  • SqlServer和Oracle中一些常用sql语句5流程控制语句 电脑资料 [sql] --在sql语句中 begin.end 用来设定一个程序块 相关于c#中的{} declare @yz real@w int --声明变量 set @w=120 --为变量赋值 if @w条件语句 begin...
  • SQL学习资料(包含所有常用语句例子

    千次下载 热门讨论 2012-08-20 11:08:49
    sql学习必备,内含sql一些常用语句的例子,有图有表,通过结果来理解sql语句的实现与结果。
  • 常用SQL语句查询分享

    2020-09-10 04:45:24
    本文通过几个小例子,给大家分享一下常用SQL常用的语句,非常的简单实用,有需要的小伙伴可以参考下。
  • SQL Server语句查询例子

    2012-06-16 23:06:00
    SQL Server数据库的联合查询基础,上学时的一点笔记希望对你有帮助
  • SQL语句学习手册实例,包括常用语句的使用例子
  • 常用SQL语句

    2011-11-08 14:30:17
    包含了最常用SQL语句,通过各种例子描述了各种查询、删除、更新语句的写法,绝对珍藏
  • 常用sql语句 共有54种例句, 很实用
  • mysql sql常用语句大全

    万次阅读 多人点赞 2019-02-20 04:18:23
    一 、常用操作数据库的命令 1.show databases; 查看所有的数据库 2.create database test; 创建一个叫test的数据库 3.drop database test;删除一个叫test的数据库 4.use test;选中库 ,在建表之前必须要选择数据库 ...

    一 、常用操作数据库的命令

    1.show databases; 查看所有的数据库
    2.create database test; 创建一个叫test的数据库
    3.drop database test;删除一个叫test的数据库
    4.use test;选中库 ,在建表之前必须要选择数据库
    5.show tables; 在选中的数据库之中查看所有的表
    6.create table 表名 (字段1 类型, 字段2 类型);
    7.desc 表名;查看所在的表的字段
    8.drop table 表名; 删除表
    9.show create database 库名;查看创建库的详细信息
    10.show create table 表名; 查看创建表的详细信息
    

    二、修改表的命令

    1.修改字段类型 alter table 表名 modify 字段 字段类型;
    2.添加新的字段 alter table 表名 add 字段 字段类型
    3.添加字段并指定位置  alter table 表名 add 字段 字段类型   after 字段;
    4.删除表字段  alter table 表名 drop 字段名;
    5.修改指定的字段  alter table 表名 change 原字段名字  新的字段名字 字段类型

    三、对数据的操作

    1.增加数据(insert)3种方式
        1.1 insert into 表名 values(值1,值2,...)(很少用)
        1.2 insert into 表名(字段1,字段2...) values(值1,值2,....);(较常用)
        1.3 insert into 表名(字段1,字段2...) values(值1,值2,....),(值1,值2,....),(值1,值2,....);
    2.删除数据(delete) delete from 表名 where 条件 注意:where 条件必须加,否则数据会被全部删除
    3.更新数据(update)  update 表名 set字段1 = 值1, 字段2 = 值2 where 条件
    4.查询数据(select)
        4.1 查询表中的所有数据   select * from 表名
        4.2 指定数据查询    select 字段 from 表名 
        根据条件查询出来的数据  select 字段 from 表名 where 条件 (最常用的)
        where 条件后面跟的条件
         关系:>,<,>=,<=,!=  
         逻辑:or, and 
         区间:id between 4 and 6 ;闭区间,包含边界
    5.排序
    select 字段 from 表 order by 字段  排序关键词(desc | asc)
    排序关键词 desc 降序 asc 升序(默认)
        5.1 通过字段来排序
        例如 :select * from star order by money desc, age asc;   
        5.2 多字段排序
        select 字段 from 表 order by 字段1  desc |asc,...字段n desc| asc;
    6.常用的统计函数 sum,avg,count,max,min
        只分组:select * from 表 group by 字段
        例子: select count(sex) as re,sex from star group by sex having re > 3;
        分组统计: select count(sex) from star group by sex;
    7.分组 select * from 表名  limit 偏移量,数量
        说明:
            8.1.不写偏移量的话就是默认的为0
            8.2.实现分页的时候必须写偏移量
            偏移量怎么计算?:
            limit (n-1)*数量 ,数量 

    四、多表联合查询

    1.内连接
    隐式内连接 select username,name from user,goods where user,gid=gods,gid;
    显示内连接
    select username,from user inner join goods on user.gid=goods.gid;
    select * from user left join goods on user.gid=goods.gid;
    2.外链接
    左连接 包含所有的左边表中的记录以及右边表中没有和他匹配的记录
    右连接 
    select * from user where gid in(select gid from goods);
    select * from user right jOin goods on user.gid=goods.gid;
    子嵌套查询
    数据联合查询
    select * from user left join goods on user.gid=goods.gid union select * from user right join goods on user.gid=goods.gid;
    两个表同时更新
    update user u, goods g set u.gid=12,g.price=1 where u.id=2 and u.gid=g.gid;

    五、DCL 数据控制语言

    1.创建用户:create user'xiaoming'@'localhost' identified by '666666';
    2.授权用户:grant all on test.*to'xiaoming'@'localhost';
    3.刷新权限:flush privileges;
    4.取消授权:revoke all on test.* from 'xiaoming'@'localhost';
    5.删除用户: drop user'xiaoming'@'localhost';

    六、DTL 数据事务语言

    开启事务:set autocommit=0;
    操作回滚:rollback;
    提交事务:commit;

    展开全文
  • 本文整理了一些常用sql语句:插入语句得到自动生成的递增ID值实现是1 或0 想显示为男或女/嵌套子查询/显示文章、提交人和最后回复时间/随机提取条记录的例子等等太多了就不一一讲了,感兴趣的朋友可以聊接下
  • SQL查询语句精华大全

    2010-12-21 10:45:07
    收录了大部分常用SQL查询语句,里面具有比较实用的例子以供选择。
  • 常用SQL语句及进阶

    千次阅读 2019-01-31 15:19:25
    常用SQL语句、mysql语句、单表查询、多表查询、子查询、集合运算等。

    这里以MySql为SQL语法数据库,其他数据库会注释

    常用SQL

    库操作

    CREATE DATABASE 数据库名;	-- 创建数据库
    SHOW DATABASES;				-- 显示所有的数据库
    DROP DATABASE 数据库名;		-- 删除指定数据库
    

    表操作

    SHOW TABLES;				-- 显示所有的表
    DESCRIBE 表名;				-- 查看表基本结构
    SHOW CREATE TABLE 表名		-- 查看表详细结构语句
    CREATE TABLE 表名(属性名 数据类型 [完整性约束条件],
    		属性名 数据类型 [完整性约束条件],
    		...
    );							-- 创建表
    
    ALTER TABLE 旧表名 RENAME [TO] 新表名;	-- 修改表名
    
    ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;	--修改表的字段名
    ALTER TABLE 表名 MODIFY (属性名 数据类型)	-- 修改字段的数据理性
    ALTER TABLE 表名 ADD (属性名1 数据类型 [完整性约束条件][FIRST|AFTER 属性名2])	-- 增加字段
    	/* 'FIRST'参数是可选参数,其作用是将新增字段设置为表的第一个字段,
    	'AFTER 属性名2'参数也是可选参数,其作用是将新增字段添加到'属性名2'所指的字段后。
    	如果执行的sql语句中没有'FIRST','AFTER 属性名2'参数指定新增字段的位置,新增的字段默认为表的最后一个字段。
    	*/
    ALTER TABLE 表名 DROP (属性名);				-- 删除字段
    ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;		-- 删除表的外键
    
    DROP TABLE 表名;							-- 删除未被关联的表
    	/*
    	如果删除被其他表关联的父表,最简单的办法:
    	1.先删除子表,然后再删除父表,但这样可能会影响到字表的其他数据。
    	2.先删除字表的外键约束,再删除父表。
    	*/
    

    属性增删改查

    (插入数据):
    -- 为表的所有字段插入数据
    INSERT INTO 表名 VALUES (value 1, value 2,···);
    INSERT INTO 表名 (属性1,属性2,···,属性n) VALUES (value 1,value 2,···,value n);
    -- 为表的指定字段插入数据
    INSERT INTO 表名 (属性1,属性2,···,属性n) VALUES (value 1,value 2,···,value n);
    -- 同时插入多条数据
    INSERT INTO 表名 [(属性列表)] VALUES (取值列表 1),(取值列表 2),...,(取值列表 n);
    -- 将查询结果插入到表中
    INSERT INTO 表名1 (属性列表 1) SELECT 属性列表 2 FROM 表名2 WHERE 条件表达式;
    	/* 其中,'表名1'参数说明记录是插入到哪个表中;
    	'表名2'表示记录是从哪个表查出来的;
    	'属性列表1'表示为哪些字段赋值;
    	'属性列表2'表示从表中查询出哪些字段的数据;
    	'条件表达式'参数设置了 SELECT 语句的查询条件。
    	*/
    
    删除():
    DELETE FROM 表名 [WHERE 条件表达式];
    
    更新():
    UPDATE 表名 SET 属性名1 = 取值1,属性名2 = 取值2,...,属性名n = 取值n WHERE 条件表达式
    
    查询():
    SELECT 需要查询的属性 FROM 表名 [WHERE 条件表达式]
    SELECT 属性名1 [AS] 别名1, 属性名2 [AS] 别名2 FROM 表名 [WHERE 条件表达式]
    

    进阶查询

    单表查询

    SQL语句基本执行顺序:
    SELECT
    FROM
    WHERE
    GROUP BY
    HAVING
    ORDER BY
    LIMIT

    1.SELECT基本语法
    SELECT [DISTINCT]属性列表
    	FROM 表名或视图列表
    	[WHERE 条件表达式]
    	[GROUP BY 属性名1 [HAVING 条件表达式2]]
    	[ORDER BY 属性名2 [ASC|DESC]]
    DISTINCT显示结果时 是否剔除重复项;
    '属性列表'参数表示需要查询的字段名;
    '表名和视图列表'参数表示从此处指定的表或者视图中查询数据,表和视图可以有多个;
    '条件表达式1'参数指定查询条件;'属性名1'参数指按该字段中的数据进行分组;
    '条件表达式2'参数表示满足该表达式的数据才能输出;
    '属性名2'参数指按该字段中的数据进行排序,排序方式由 ASCDESC 两个参数指出,
    	ASC 参数表示按升序的顺序进行排序,这是默认参数;DESC 参数表示按降序进行排序。
    如果有 WHERE 子句,就按照'条件表达式1'指定的条件进行查询;如果没有WHERE子句,就查询所有记录;
    如果有 GROUP BY 子句,就按照'属性名1'指定的字段进行分组;
    	如果 GROUP BY 子句后带着 HAVING 关键字,那么只有满足'条件表达式2'中指定的条件的才能够输出。
    	GROUP BY 子句通常和 COUNT()SUM()等聚合函数一起使用。 
    如果有 ORDER BY 子句,就按照'属性名2'指定的字段进行排序。
    
    2.WHERE 子句常用的查询条件
    	查询条件						符合或关键字
    	 比较				=<<=>>=!=<>!>!<
    	指定范围				BETWEEN ANDNOT BETWEEN AND
    	指定集合						INNOT IN
    	匹配字符					  LIKENOT LIKE
       是否为空值				    IS NULLIS NOT NULL
       多个查询条件				      ANDOR
    
    3.带IN的关键字查询
    IN 关键字可以判断某个字段的值是否在指定的集合中,
    如果字段的值在集合中,则满足查询条件,该记录将被查询出来;如果不在集合中,则不满足查询条件。
    [NOT] IN(元素 1,元素2,,元素 n) 
    例:查询学生id为2,3,4的学生信息
    SELECT * FROM student WHERE stuid IN(2,3,4);
    
    4.带BETWEEN AND 的范围
    [NOT] BETWEEN 取值1 AND 取值2
    例:查询生日在19970415-19970430之间的学生信息
    SELECT * FROM student WHERE birthday BETWEEN '1997-04-15' AND '1997-04-30';
    
    5.带LIKE 的字符串匹配查询
    %:代表多个字符
    _:代表单个字符
    例:查询姓名以x开头的学生信息
    SELECT * FROM student WHERE name LIKE 'x%';
    例:查询姓名以z开头且只有两位长度的学生信息
    SELECT * FROM student WHERE name LIKE 'z_';
    
    6.查询空值
    IS [NOT] NULL
    
    7.对结果集排序
    SELECT * FROM 表名
    	[WHERE 条件表达式]
    	ORDER BY 字段1 [ASC/DESC] [,字段2 [ASC/DESC]...]  -- 默认为ASC升序排序
    例:查询big_data表中的人员数目且降序排序
    select people_num from big_data DESC 
    
    8.限制数量
    LIMIT [初始位置], 记录数
    例:查询学生表分数最高的且分数>=60的学生信息。
    select * from student WHERE score>=60 DESC LIMIT 0,10	-- 默认从0开始,取几个
    
    9.聚合函数
    SUM		求和
    AVG		求平均值
    MAX/MIN		求最大/最小
    COUNT	计数
    例:求学生的平均成绩
    SELECT AVG(score) FROM student
    
    10.分组统计
    分组统计是使用 GROUP BY 关键字将查询结果按照某个字段或多个字段进行分组。
    分组时,指定字段中值相等的被认为是一组,在查询结果中的体现是指定字段相等的情况下只保留一条记录。
    SELECT <字段列表> [聚合函数]
    	FROM 表名
    	[WHERE 条件表达式]
    	[GROUP BY <字段列表>]
    例:查询学科的平均分
    SELECT AVG(score) avg FROM score GROUP BY subid
    
    11.使用HAVING对分组过滤
    对分组后的结果再进行条件过滤,则不能使用WHERE语句。WHERE只是对分组前的数据进行过滤。
    SELECT <字段列表> [聚合函数]
    	FROM 表名
    	[WHERE 条件表达式]
    	[GROUP BY <字段列表>]
    	HAVING 条件	
    
    12.综合案例
    查询所有的学生的平均分 降序(及格) 取前五名
    SELECT student.stuid,name,AVG(score) AS avg
    	FROM score,student
    	WHERE student.stuid = score.stuid
    	GROUP BY stuid		-- 分组的意义是去重复
    	HAVING score>=60
    	ORDER BY score DESC, stuid ASC
    	LIMIT 0,5
    

    多表查询

    多表连接图解。
    sql-joins

    交叉连接(CROSS JOIN)

    交叉连接又称笛卡儿积:笛卡尔乘积是指在数学中两个集合 X 和 Y 的笛卡尓积(Cartesian product),又称直积,表示 为 X × Y,第一个对象是 X 的成员而第二个对象是 Y 的所有可能有序对的其中一个成员。
    假设集合 A={a, b},集合 B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}

    SELECT * FROM TABLE_A CROSS JOIN TABLE_B [WHERE 条件]
    SELECT * FROM TABLE_A JOIN TABLE_B [WHERE 条件]
    SELECT * FROM TABLE_A, TABLE_B [WHERE 条件]
    

    交叉连接图:
    笛卡儿积

    内连接

    内连接:又叫等值连接,只返回两个表中连接字段相等的行。
    innerjoin

    SELECT * FROM TABLE_A INNER JOIN TABLE_B ON 连接条件 [WHERE 条件]
    	-- 连接条件通常是在两个表中具有相同意义的列。
    

    注意:通常情况下使用交叉连接都要配合 WHERE 对连接后的迪卡尔积进行过滤,
    内连接可以使用 ON 设置连接条件,在对数据进行拼接时,
    根据连接条件决定如何将两个表或多个表的数据进行关联,
    省去了无用记录的关联拼接。因此内连接的效率要比交叉连接高

    举个例子:获取姓名为xzy的学生的所有成绩
    SELECT student.stuid, name, subid, score
    	FROM student INNER JOIN score		-- 内连接
    	ON student.stuid = score.stuid		-- 连接条件
    	WHERE student.name = 'xzy'
    
    外连接

    外连接与内连接不同,内连接时,根据连接条件只保留两个表中有对应数据的记录;
    而外连接时,当一个表中记录在另一个表中没有对应记录时,会生成一条与 NULL 值对应的记录.
    外连接根据数据保留表的不同,又分为左外连接右外连接
    左外连接时,保留左表中的所有数据,右外连接时,保留右表的所有数据

    左外连接

    左外连接使用 LEFT JOIN 连接两表,连接时左表为主表,左表中的每条记录必定出现在结果集中,而在右表中没有对应的记录,将以 NULL 值进行填充。

    SELECT * 
    	FROM 表名1 LEFT [OUTER] JOIN 表名2  -- 表名1为主表
    	ON 连接条件
    	[WHERE 条件表达式]
    

    外连接

    右外连接

    右外连接与左外连接相似,不同的是右表为主表,右表中的每条记录必定出现在结果集中,而在左 表中没有对应的记录,将以 NULL 值进行填充.

    SELECT * 
    	FROM TABLE_A RIGHT [OUTER] JOIN TABLE_B		--TABLE_B为主表  
    	ON 连接条件
    	[WHERE 条件表达式]
    
    内连接、左外、右外连接的区别

    |-----| — |------|
    | A1 | C | B1 |
    |-----| — |------|
    内连接 得到的结果是公有数据C
    左外连接 得到的是 A1+C
    右外连接 得到的是 B1+C

    集合运算操作

    1.并集运算 UNION,UNION ALL

    UNION 会排除重复项,UNION ALL 不会排除重复项

    select name from table1 where id = '1'
    UNION
    select name from table2 where id = '5'
    order by name desc
    
    2.交集运算 INTERSECT

    SELECT name from t1
    INTERSECT
    SELECT name from t2;

    3.差集运算 EXCEPT;MINUS(oracle)

    SELECT name from t1
    MINUS
    SELECT name from t2;

    子查询

    当一个查询需要用到另一个查询的结果时,在查询语句中可以出现多层嵌套查询。
    这种查询语句叫做子查询

    例:
    SELECT *
    	FROM student
    	WHERE birthday >=		-- 单值比较子查询
    		(						-- 括号代表一个整体,子查询的结果作为一个整体
    		SELECT birthday FROM student
    			WHERE 'name' = 'Jay'
    		)
    

    批量比较查询:
    = ALL 等于子查询结果中的所有的值;
    <= ALL 大于等于子查询结果中的所有值;
    <= ANY 大于等于子查询结果中的任意值;
    < ANY 小于子查询结果中的任意值;
    ···

    IN 和 NOT IN

    在嵌套子查询中,子查询的结果如果是一个集合,此时就不能直接使用比较运算符和结果进行比较了,应用INNOT IN

    例:查询参加考试的学生信息
    SELECT * FROM student
    	WHERE stuid IN (			-- 获取stuid集合作为外部查询的条件
    		SELECT stuid FROM score
    	)
    
    EXISTS 和 NOT EXISTS

    EXISTS和NOT EXISTS也是判断是否存在,与IN类似,但是效率比IN高。

    使用EXISTS 和 NOT EXISTS时:
    首先取外层查询表第一个记录,拿这个记录与内层查询相关的属性值去参与内层查询的求解,若内层查询的 WHERE 子句返回真值,则将这个记录放入结果集;
    然后再取外层查询表的下一条记录;重复上述过程,知道外层表处理完成为止。

    例:查询已考试的科目
    SELECT * FROM subject
     WHERE EXISTS (
     	SELECT 1			-- 提高效率
     		FROM score
     		WHERE score.subid = subject.subid
     )
    
    IN 与 EXISTS的区别

    IN:先执行子查询,返回一个集合,然后再将子查询的结果作为外层查询的条件进行过滤。
    EXISTS:先执行外层查询,再将外层查询的每一条记录作为条件进行子查询,子查询的返回值是一个TRUE或一个FALSE,因此一般情况下子查询中直接使用SELECT 1提高效率。

    其他

    表的复制

    表结构的复制
    -- mysql中
    CREATE TABLE new_table SELECT * FROM old_table WHERE 1=2; -- 方法一
    CREATE TABLE new_table LIKE old_table ; -- 方法二
    
    表结构和内容的复制
    -- mysql中
    CREATE TABLE new_table SELECT * FROM old_table; -- 创建新表并复制旧表数据
    INSERT INTO 新表 SELECT * FROM 旧表;  -- 表结构需要相同
    INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表; -- 表结构不同的话
    

    日期类处理

    now()
    DATE_FORMAT(Now(),'%Y-%m-%d')
    
    展开全文
  • Access常用sql基本查询语句汇总

    万次阅读 2015-09-22 10:57:52
    很多初学Access的朋友都说sql 语句不会写,把它归纳为难点,不想写。其实不然,大家都知道sql查询中的作用非常非常的大,是不得放弃的模块。其实语法也是很简单,常用的就以下几种: 基本查询 SELECT column1,...
       
    很多初学Access的朋友都说sql 语句不会写,把它归纳为难点,不想写。其实不然,大家都知道sql 在查询中的作用非常非常的大,是不得放弃的模块。其实语法也是很简单,常用的就以下几种:
    
    基本查询
    
    SELECT column1,columns2,... FROM table_name
    说明:把table_name 的特定栏位资料全部列出来
    
    SELECT *
    FROM table_name
    WHERE column1 = xxx 
    [AND column2 >yyy] [OR column3 <> zzz]
    说明:
    1.*表示全部的栏位都列出来
    2.WHERE 之後是接条件式,把符合条件的资料列出来
    
    SELECT column1,column2
    FROM table_name
    ORDER BY column2 [DESC]
    说明:
    ORDER BY 是指定以某个栏位做排序,[DESC]是指从大到小排列,若
    没有指明,则是从小到大排列
    
    组合查询
    组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的表格才能够得到结果的。
    
    SELECT *
    FROM table1,table2
    WHERE table1.colum1=table2.column1
    说明:
    1.查询两个表格中其中 column1 值相同的资料
    2.当然两个表格相互比较的栏位,其资料形态必须相同
    3.一个复杂的查询其动用到的表格可能会很多个
    
    
    整合性的查询:
    
    SELECT COUNT (*) 
    FROM table_name
    WHERE column_name = xxx
    说明:
    查询符合条件的资料共有几笔
    
    SELECT SUM(column1)
    FROM table_name
    说明:
    1.计算出总和,所选的栏位必须是可数的数字形态
    2.除此以外还有 AVG() 是计算平均、MAX()、MIN()
    计算最大最小值的整合性查询
    
    SELECT column1,AVG(column2)
    FROM table_name
    GROUP BY column1
    HAVING AVG(column2) >xxx
    说明:
    1.GROUP BY: 以column1 为一组计算 column2 的平均值
    必须和 AVGSUM 等整合性查询的关键字一起使用 
    2.HAVING : 必须和 GROUP BY 一起使用作为整合性的限制
    复合性的查询
    SELECT *
    FROM table_name1
    WHERE EXISTS (
    SELECT *
    FROM table_name2
    WHERE conditions )
    说明:
    1.WHERE 的 conditions 可以是另外一个的 query
    2.EXISTS 在此是指存在与否
    
    SELECT *
    FROM table_name1
    WHERE column1 IN (
    SELECT column1 
    FROM table_name2
    WHERE conditions )
    说明 
    1. IN 後面接的是一个集合,表示column1 存在集合里面
    2. SELECT 出来的资料形态必须符合 column1 条件的其他查询
    
    SELECT *
    FROM table_name1
    WHERE column1 LIKE x% 
    说明:
    1.LIKE 必须和後面的x% 相呼应表示以 x为开头的字串
    
    SELECT *
    FROM table_name1
    WHERE column1 IN (xxx,yyy,..)
    说明 
    1. IN 後面接的是一个集合,表示column1 存在集合里面
    
    SELECT *
    FROM table_name1
    WHERE column1 BETWEEN xx AND yy
    说明 
    1. BETWEEN 表示 column1 的值介於 xx 和 yy 之间
    
    更改资料:
    UPDATE table_name
    SET column1=xxx
    WHERE conditoins
    说明:
    1.更改某个栏位设定其值为xxx
    2.conditions 是所要符合的条件、若没有 WHERE 则
    整个 table 的那个栏位都会全部被更改
    
    删除资料:
    DELETE FROM table_name
    WHERE conditions
    说明:删除符合条件的资料
    展开全文
  • 数据库基础(常用SQL语句

    万次阅读 多人点赞 2019-10-07 13:49:59
    一、数据库级及SQL语言简介 1、目前主流数据库 微软:sql server、access 瑞典:mysql ibm: db2 ...DQL-------------数据查询语言 select … From … Where DML-------------数据操纵语言 insert、upda...

    一、数据库级及SQL语言简介

    1、目前主流数据库
    微软:sql server、access
    瑞典:mysql
    ibm: db2
    sybase:sybase
    ibm: informix
    oracle: oracle

    2、SQL语言
    DQL-------------数据查询语言
    select … From … Where
    DML-------------数据操纵语言
    insert、update、delete
    DDL-------------数据定义语言
    create、alter、drop
    DCL-------------数据控制语言
    commit、rollback、savepoint

    二、数据库的数据类型(MySQL)

    1、字符类型:

    • char类型:固定长度的内容,效率高。存储空间范围(1-2000)字节。
    • varchar类型:动态长度的字符类型,存储空间范围(1-4000)字节。
    • long类型:存储2G的文件大小。

    2、数值数字类型:
    在这里插入图片描述

    3、日期类型:
    在这里插入图片描述

    三、基本Sql语句

    1、表设计
    • 创建表:

       create table 表名 (字段 字段类型);
      
    • 复制表结构及数据:

       create table 新表 as select * from 旧表
      
    • 复制表结构不需要数据:

       create table 新表 as select * from 旧表 where 2<>2
      
    • 查看表结构:desc 表名.

    • 复制表数据:

       insert into 目标表 select * from 参考表
      
    • 伪表:系统中保留的虚拟表,不能更改,也不能删除。

       名称:dual
       通过伪表显示当前系统时间:select sysdate from dual;
      
    • 查看指定用户下所有的表

       SELECT table_name FROM all_tables WHERE owner = upper('用户名');
       注意:用户名必须大写
      
    2、操作字段
    • 增加字段:

       alter table 表名 add (字段名称 字段类型)
      
    • 修改字段:

       alter table 表名 modify (字段名称 字段类型)
       注意:实际上大部分时间我们修改的是字段类型的大小,而不是类型本身,如果非在改成其它类型,则需要满足兼容性。或者把对应这列数据全部清除。
      
    • 删除字段:

       alter table 表名 drop column 字段名称
      
    3、表约束
    • 约束说明

      NOT NULL 指定字段不能包含空值
      UNIQUE 指定字段的值(或字段组合的值)表中所有的行必须唯一
      PRIMARY KEY 表的每行的唯一标识,即主键
      FOREIGN KEY 在字段和引用表的一个字段之间建立并且强制外键关系,即外键
      CHECK 指定一个必须为真的条件

    • 主键与唯一约束的区别:

      1.主键只能有一个,而唯一约束可以有多个;
      2.主键可以由一列或多列充当,但唯一约束只能一列一列创建;
      3.主键不允许为空,而唯一约束在Oracle中可以多次为空,在SQL中唯一约束只能一次为空;

      NOT NULL:此约束为行级约束,不在能表级约束中定义。

    • 添加约束:

       ALTER TABLE 表名 ADD  [CONSTRAINT 约束标识名称]  约束类型(字段名称);
       例:ALTER TABLE stu ADD CONSTRAINT stuid_pk  PRIMARY KEY(stuid);
      
    • 删除约束:

       ALTER TABLE table
       DROP  PRIMARY KEY | UNIQUE(字段名) | CONSTRAINT 约束名 [CASCADE]
       例:ALTER TABLE stu DROP PRIMARY KEY;
      

    -----------------------------------------------------------------

    示例一:【创建表的同时指定约束】
    create table 表(
    字段 字段类型 CONSTRAINT 约束标识名称 约束类型;
    );
    示例二:【先创建表,后创建约束】
    ALTER TABLE 表名 ADD CONSTRAINT 约束标识名称 约束类型(字段);
    外键约束的创建:
    alter table table_name add constraint cid_fk foreign key(cid) references classes(cid) 【on delete cascade】

    (主-从)建表规则:
    1.先create父表(要有pk或uk),再create子表(FK)
    2.先insert父表,然后insert子表。
    3.先delete子表,在delete父表。
    4.先drop子表,在drop父表。
    父表先于子表存在,子表比父表先消亡。
    --------------------------------------------------------------

    4、表查询
    • 基本查询

       语法格式:
       select [列名],... from 表名
      
    • 条件查询(where)

       语法格式:
       select [列名],... from 表名  where 条件
      
    • 逻辑运算

       操作符包括如下几种:
       	1、算术操作符:算术操作符包括加(+)、减(-)、乘(*)、除(/)
       	2、比较操作符:比较操作符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等
       	3、逻辑操作符:逻辑操作符包括与(AND)、或(OR)和非(NOT)。 
       	4、集合操作符:集合操作符包括冻并集(UNION)、交集(INTERSECT)、剪集(MINUS)
       	5、连接操作符:||   例:SELECT ename || ' is a ' || job FROM emp;
       	集合操作符:多用于数据量比较大的数据局库,运行速度快。
       	1). union
       		该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。
       		SELECT ename, sal, job FROM emp WHERE sal >3000
       		UNION
       		SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';
       		
       	2).union all
       		该操作符与union 相似,但是它不会取消重复行,而且不会排序。
       		SELECT ename, sal, job FROM emp WHERE sal >2500
       		UNION ALL
       		SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';
       		
       	3). intersect
       		使用该操作符用于取得两个结果集的交集。
       		SELECT ename, sal, job FROM emp WHERE sal >2500
       		INTERSECT
       		SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';
       		
       	4). minus
       		使用改操作符用于取得两个结果集的差集,他只会显示存在第一个集合中,而不
       		存在第二个集合中的数据。
       		SELECT ename, sal, job FROM emp WHERE sal >2500
       		MINUS
       		SELECT ename, sal, job FROM emp WHERE job = 'MANAGER';
       		(MINUS 就是减法的意思)
       		
       注意: 集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结
       	   果将采用第一个集合的表头作为最终的表头,order by
       	   必须放在每个集合后
      
    • 排序

       语法格式:
       select [列名],... from 表名  where 条件 order by 字段 (desc | asc)
       说明:
       DESC:表示按降序排序(即:从大到小排序)
       ACS:表示按升序排序(即:从小到大排序)
      
    • 函数

       1、常用的系统函数
           1.1 日期函数:
       		-ADD_MONTHS(d,f):指定时间d,推移f月,得到推移后的时间
       			d:指定一个时间(需要使用to_date函数转换)
       			f:在指定时间上推移多少个月
       			例:在“2010-05-12”时间上推移3个月后的时间
       			select ADD_MONTHS(to_date('2012-05-12','yyyy-mm-dd'),3) from dual;
       			
       		-Months_between(d1,d2):显示两个时间相差的月份
       			d1:第一个时间
       			d2:第二个时间
       			
       			注意:必须注意的是,d1与d2都为Date类型,不然会出现错误。
       			 须用to_date('','') 	来转换为日期格式,才能参加计算。
       			
       			例:计算 2012-12-12 与 2012-2-12 相差的月份。
       			SELECT MONTHS_BETWEEN(to_date('2012-12-12','yyyy-MM-dd'),to_date('2012-2-12','yyyy-MM-dd'))
       			FROM dual;
       			
       			
       		-last_day(m):返回特定日期所在月份的最后一天
       			m:时间
       			
       			例:计算“2010-10-12”所在月份的最后一天
       			SELECT last_day(to_date('2010-10-12','yyyy-mm-dd')) FROM dual;
       		
       		-next_day(x,y)用于计算x时间后第一个星期y的时间。
       			例子,当前时间是2014-08-15 
       			select next_day(to_date('2014-08-15','yyyy-mm-dd'),'星期二')from dual;
       			返回的结果是: 2014-08-19
       		
       		-trunc(date,[fmt]):处理时间
       			date:一个日期值
       			fmt :日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
       			
       			例:
       				trunc(sysdate,'yyyy') --返回当年第一天.
       				trunc(sysdate,'mm') --返回当月第一天.
       				trunc(sysdate,'d') --返回当前星期的第一天.
       				trunc(sysdate,'dd')--返回当前年月日
       				trunc(sysdate, 'hh')--返回当前小时
       				trunc(sysdate, 'mi')--返回当前分钟
       		
       		-trunc(number,[decimals]):处理数字
       			number:	 待做截取处理的数值
       			decimals:指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
       			例:
       				TRUNC(89.985,2)=89.98
       				TRUNC(89.985)=89
       				TRUNC(89.985,-1)=80
      
      
       2、常用的字符函数:
       		-lower(string):转小写
       			用法:比如将字符“ABC”转为小写 
       			select lower('ABC') from dual;
       			结果:abc
       			
       		-upper:转大写
       			用法:比如将字符“abc”转为大写 
       			select upper('abc') from dual;
       			结果:ABC
       			
       		-length():长度函数
       			用法:获取字符“abc”的长度
       			select  length('abc') from dual;
       			结果:3
       			注:长度是指字符串的长度 如“中国”为2 “ab”也为2
      
       		-substr(char,m,n):截取字符串
       			用法:将字符“abcde”中的“cd”进行截取
       			select substr('abcde', 3 ,2 ) from dual;
       			结果:cd
       			
       		-replace(s1,s2):替换
       			用法:将字符“abcde”中的“c”替换为“123”;
       			select replace('abcde', 'c' ,'123' ) from dual;
       			结果:ab123de
       			
       		-concat(s1,s2):拼接
       			用法:将字符“abc”与字符“de”拼接显示
       			select concat('abc','de') from dual; 
       			结果:abcde
       			等价于: 'abc'||'de'
      
       		lpad( string, padded_length, [ pad_string ] ):指定长度,不够则填充
       			用法:将字符“abcde”以10个长度显示,左侧用“X”填充
       			select lpad('abcde',10,'x') from dual;
       			结果:xxxxxabcde
      
       3、数字函数:
       		ceil:往上取整,与小数位的大小无关
       		floor:往下取整,与小数位的大小无关.
       		mod:取余。求模。
       		round:四舍五入。
       		trunc(m,n):
       		
       4、 转换函数:
       		-to_char:日期转化为字符串  
       		例:
       		select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;    
       		select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
       		select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
       		select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
       		select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
       		select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
       		select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒
       		select to_char(sysdate,'day')    as nowSecond from dual;   //获取时间的星期
       		
       		
       		-to_date:把字符串类型日期转换为date类型日期。
       		例:
       		select to_date('2014-02-11','yyyy-mm-dd') from dual
       		
       		sysdata当前日期
      
       		-to_number:把某种类型转换为数字类型。
       		注意:如果字符类型的内容是数据,则可以实现自动转换为数字类型
       	
       5、 其它函数:
       			-NUL函数:把数字类型为null的值转换为0;
       				结构:
       					nvl(字段名称,0);
       					nvl(comm,0);
       				转换之后,可以实现算术运算。
       				
       			-decode函数:
       				decode(参数一,参数二,参数三,....);
       				参数一:字段名称
       				参数二:参数一字段对应的内容。
       				参数三:把参数一字段对应的内容替换成其它的内容。
       				示例:select decode(JOB,'CLERK','业务员') from emp;
       				
       6、聚合函数:MAX、MIN、SUM、AVG、COUNT
       	-AVG :返回指定组中的平均值。
       	-COUNT:返回指定组中项目的数量。 
       	-MAX:返回指定数据的最大值。
       	-MIN:返回指定数据的最小值。
       	-SUM:返回指定数据的和,只能用于数字列。
      

    看完了以上的数据库基础,你是否有一种想要了解多表查询的冲动呢,请看下一篇

    展开全文
  • sql语法实例语句,常用sql语句学习,集体例子演示,更方便大家的学习
  • ORACLE分页查询SQL语句(最有效的分页)

    万次阅读 多人点赞 2018-11-01 16:18:24
    ** 一、效率高的写法 ** 1.无ORDER BY排序的写法。...即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM emp t WHERE hire_date BETWEEN TO_DATE ...
  • 50个常用sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号; select a.S# ...
  • 50个常用sql语句实例

    2013-11-10 17:05:48
    50个常用sql语句实例
  • sql查询语句大全

    千次阅读 2016-07-14 10:36:55
    SQL查询语句大全集锦 一、 简单查询  简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三...
  • SQL查询语句大全集锦(超经典)
  • 经典SQL查询语句大全

    千次阅读 多人点赞 2018-03-09 14:38:10
    一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\...
  • sqlite常用sql语句

    2011-12-14 13:21:17
    sqlite常用sql语句,里面包含了例子中如返回UTC时间,返回本地时间,比较,分页显示等,并且注有提示。
  • sql常用语句

    万次阅读 2018-03-26 11:39:09
    经典SQL语句大全(绝对的经典) --------转自浪迹天涯芳草一、基础1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop databasedbname3、说明:备份sql server--- 创建备份数据的 device...
  • 数据库常用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...
  • SQL查询语句关键字方法

    万次阅读 2017-02-05 15:15:46
    SQL常用的一些关键字
  • SQL查询语句大全集锦

    千次阅读 2012-03-26 13:32:14
    SQL查询语句大全集锦 一、 简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三...
  • SQL数据库常用语句

    2009-12-15 01:28:36
    这是SQL常用语句例子,里面有各种查询,选择语句的事例。
  • 史上超强最常用SQL语句大全

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

    千次阅读 2013-09-15 10:17:31
    SQL常用语句积累,不断更新: 一、SQL查询语句   1、单行子查询   select ename,deptno,sal   from emp   where deptno=(select deptno from dept where loc='NEW YORK');   2、多行子查询   SELECT ename...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,542
精华内容 40,616
关键字:

常用sql查询语句例子