group by 和 having区别
sql中的group by 和 having 用法解析 --sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 --它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 --注意:group by 是先排序后分组; --举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称', COUNT(*) as '个数' from BasicDepartment group by...
复制数据库表
下面介绍两种复制数据库表的方法 这可以用在备份表的时候 1.在没有目标表的情况下使用 需要注意的是, 这种方法可以自动的创建表,但是不会创建主键. 例如 select 列 into 目标表名 from 源表名 select * into wx from zl 2.在目标表已经存在的情况下使用 这种情况下目标表最好取消自动增长列的 自动增长 ,不会就引起错误. 例如 insert into 表(列) select (列) from 表 select into wx(w,x) select z,l from zl
SQL中group by的用法
首先先贴两条sql,大家看看有啥区别 view plain select * from all_txt A where id=(SELECT id from all_txt view plain where A.key_value = key_value ORDER BY release_time DESC limit 1); view plain select * from (select *,max(release_time) as timea view plain from all_txt group by key_value order by release_time desc) a order by timea desc; 然后说明下表的重要字段为三个id,key_value,release_time 作用是取每个相同key_value中release_time最新的...
MySQL恢复密码的解决办法
mysql有时候忘记密码了怎么办?我给出案例和说明!一下就解决了! Windows下的实际操作如下: 1. 向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。 killall -TERM mysqld 你必须是UNIX的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。 2. 使用`--skip-grant-tables' 参数来启动 mysqld。 (LINUX下/usr/bin/safe_mysqld --skip-grant-tables , windows下c:\mysql\bin\mysqld --skip-grant-tables) 3. 然后无密码登录到mysqld server...
SQL子句执行顺序
1.笛卡尔积(Cartesian product) 顾名思义, 这个概念得名于笛卡儿. 在数学中,两个集合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)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。 2.Join类型 cross join 是笛卡儿乘积就...
从原理上 预防SQL注入
第一次听说SQL注入攻击的时候还是在2004年(好像得知的比较晚),那是还是在写asp呢。在一次写代码的时候,有同事问我,你的这段代码防注入攻击了吗?什么攻击?这是什么呀。 后来到网上各种找,终于弄明白了是怎么攻击进来的了。注入攻击都是来自于客户端,无论是表单提交、URL传值还是Cookie等,其实原理都是一样的。到了服务器端可以分成三种情况:数字、日期时间、字符串。 说起防止SQL注入攻击,感觉很郁闷,这么多年了大家一直在讨论,也一直在争论,可是到了现在似乎还是没有定论。当不知道注入...
怎么用sql语句备份和恢复数据库
备份:backup database dbname to disk=' d:\dbn.aa'; 恢复:restore database dbname from disk=' d:\dbn.aa'; 使用MYSQL进行数据库备份,网上说的方法有2种:一种是用文件夹覆盖,一种是用官方的mysqldump.exe来备份,参考网上的教程,结合实际,本人提供以下几个参考意见: 一、文件夹覆盖备份法(网上教程) 目的:备份hostA主机中一个mysql数据库TestA,并恢复到到hostB机中 试验环境: 操作系统:WinXPsp2,Mysql4.1.8,MySQL-Front. 在hostA中安装mysql数据库并建立TestA数据库 hostB机安装mysql数据库,没有...
ACCESS LIKE语法
ACCESS在使用的过程中,除了关键字时出错,用[]包起关键字可以解决,还有问题就是,LIKE出错,因为LIKE和SQL里的LIKE用法不一样,详见下面: 1、ACCESS库的通配符为: * 与任何个数的字符匹配。 ? 与任何单个字母的字符匹配 2、在SQL Server中的通配符为: % 与任何个数的字符匹配 - 与单个字符匹配 3、正确写法应是: 在C#里写应写成 Select * From Table Where Name Like '%jacky%' Select * From Table Where Name Like '_jacky_' Access内测试语句应写成 : Select * From Table Where Name Like '*jacky*' S...
SQL保留2位小数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数。 SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_name 参数 描述 column_name 必需。要舍入的字段。 decimals 必需。规定要返回的小数位数。 SQL ROUND() 实例 我们拥有下面这个 "Products" 表: Prod_Id ProductName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1000 g 6.85 现在,我们希望把名称和价格舍入为最接近的整数。 我们使用如下 SQL 语句: SELECT ProductName, ROUN...
sqlserver提供的表级锁
sqlserver提供的表级锁 sqlserver所指定的表级锁定提示有如下几种 1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。 2. NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。 3. PAGLOCK:指定添加页锁(否则通常可能添加表锁) 4. READCOMMITTED用与运行在提交读隔离级别的事务相同的锁语义执行扫描。默认情况下,SQL Server 2000 在此隔离级别上操作。 5. READPAST: 跳过已经加锁的数据...