1,sql语句中加中括号和不加有什么区别吗?
有些可能是SQL里面的保留字,但是你又用了它做字段名 比如 SUM
那么用[SUM] 可以避免这个问题,如果直接SUM SQL 就报错了
2,
delete 的用法
delete from product where id=1
和
delete product where id=1 这两种用法一样,也就是可以不用from也可以用from的
3,
数据库中有这种用法
select 'CAS NO.:'+casfrom new_cas
4,
数据类型text 和varchar在 equal to运算符中不兼容
为什么两个都是varchar的在比较的时候会出现这样的问题呢,那是因为在对数据库的值进行比较的时候不能超过约3000个长度的大小,否则的话就会出错,所以你可以在比较的时候用like,然后把字符串截断然后进行比较
如果你用这个语句ps.setString(2,pro_ident.substring(0, 400)+"%");来进行查询,那么你在like时字符串匹配不能太长,比如有2000个字符
5,死锁的原因是一个sql在运行还没结束,另一个sql在等待中
Synchronized是用于多线程的,比如打开多个窗口的情况的话就不行
6,
select isnull(comid,0) fromproduct
这条sql语句判断如果comid为null的话,给它一个默认值0
7,
SET STATISTICS TIME on
写上这个的时候可以显示数据库执行的时间
8,
在查询是得到数据库的字段最大的长度
select count (*) melting , max ( len (melting )) fromchemDictionary where melting <> ''9,
更改数据库表中字段的长度:
alter table chemDictionaryaltercolumn comesvarchar(1000)
10,
一、查询A表中plz字段与B表 plz字段内容相同的数据并列出数据:
select A.name,A.plz from A left join B on a.plz=B.plzwhere B.plz is not null;
二、查询A表中plz字段与B表 plz字段内容不同的数据并列出数据:
select A.name,A.plz from A left join B on a.plz=B.plzwhere B.plz is null;
也可以使用not in来进行查询
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的。换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID)。B表记录不足的地方均为NULL。
11,
select distinct name, id from table这是作用与name和id这两个字段,只有这两个都相同时才会被排除(distinct必须放在开头)
count中用distinct多个字段是否可以??? 不可以,可以用下面的方法
select count (*) from ( select distinct namecn ,company from productbak2_10 )productbak2_10
select count(*) from(selectmin(id)from productbak2_12groupbycompany,namecn)productbak2_12
12,在sqlserver中把int型的数据转化为varchar型的数据
update company1_26 set domain='guide'+convert(varchar,id)where domain is null
13,
在sqlserver中取得随机数
如果是update company1_26 set password=id+rand()*10wherepasswordisnull
直接以这种方式的话取得的是double型的数值,如37761.5
所以应该使用convert来进行转化为int型
updatecompany1_26 set password =id + convert ( int , rand ()*10 ) where password is null14,
要让数据添加的时候就记录添加的时间 加这个(getdate())

15,
通过sql语句给数据库增加字段
alter table category2_22add testvarchar(50)
16,sql="insert into 目标数据表 select * from 源数据表"(把源数据表的记录添加到目标数据表) /
/目标数据表必须先创建好,并且字段必须和源数据表字段数相同
17,
建立索引createindex index_idon product(id)
18,
数据库中的like语句可以用正则表达式
19,
数据库中的sql语句还支持+号的操作
select * from tglm where catidlike(select catidfromcategorywhere category='有机原料')+'%'
20,
得到电话号码的区号:0575-85515636
update buyinfo10_14 set code=substring(tel,0,charindex('-',tel))
21,数据库中字段类型为varchar时,它的长度如何理解
http://zhidao.baidu.com/question/208010985.html
MySQL数据库中字段类型为varchar,我将其长度设置为2,则最多可以存储2个汉字或者是2个字母。它的长度如何理解?单位是字还是字节?
是2个字节,汉字和字母在MYSQL里长度是不一样的,varchar(2)保存的是两个字节。特别提醒一下,如果知道字段的长度,建议用CHAR类型优化速度,如性别字段,直接使用CHAR,不要用varchar。
nvarchar(2)可以放2个全角字符
varchar(n) 在1<=N<=8000,varchar(2)相当于可以放一个汉字
varchar2(50) 表示该字段类型为varchar2类型,长度为50,可以存单字节字符50个,如字母、数字等,可以存储双字节字符25个,如汉字。
22,学习sql的一些语句和例子的地址
http://www.w3school.com.cn/sql/sql_union.asp
23,自增列不能直接修改,必须将原有ID列删除,然后重新添加一列具有identity属性的ID字段。比如你要修改的字段名为ID
alter table 表名 drop column ID
alter table 表名 add ID int identity(1,1)
24、统计数据库中表的个数select count(*) from sysobjects where xtype='U'
25、
MySQL 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill是有用
SHOW CREATE TABLE table 在mysql中显示sql的创建语句
27、
Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
28、当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。
如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
29、left join的好处:可以使用主表的数据保持不动,把需要字段数据的表进行左连接,这样的话就不会丢失掉主表的数据项
30、mysql的数据类型int、bigint、smallint 和 tinyint取值范围
31、mysql中Timestamp,time,datetime 区别??
TIMESTAMP[(M)] 时间戳。范围是’1970-01-01 00:00:00’到2037年。 TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。 如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。 也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。 TIMESTAMP值返回后显示为’YYYY-MM-DD HH:MM:SS’格式的字符串, 显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。 TIME 时间。范围是’-838:59:59’到’838:59:59’。 MySQL以’HH:MM:SS’格式显示TIME值,但允许使用字符串或数字为TIME列分配值。 DATETIME 日期和时间的组合。 支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。 MySQL以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。
32、使用ibatis插入mysql数据库的时候乱码
a、在java连接数据库的url地址后面加上?useUnicode=true&characterEncoding=UTF-8
b、设置mysql的默认编码为utf-8,在安装文件下面的my.ini文件里面的default-character-set=utf和character-set-server=utf-8进行设置
c、确定在建立表的时候字段的编码为utf-8
33、在mysql创建表中出现了这样的错误:
原因如下:
34、mysql的语法
1、获得当前日期(date)函数:curdate()
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2008-08-08 |
+------------+
其中,下面的两个日期函数等同于 curdate():
current_date()
,current_date
2. 获得当前时间(time)函数:curtime()
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 22:41:30 |
+-----------+
其中,下面的两个时间函数等同于 curtime():
current_time()
,current_time
35、
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'的意思是,这版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询,即是支持非 IN/ALL/ANY/SOME 子查询的 LIMIT 子查询。
也就是说,这样的语句是不能正确执行的。
select * from table where id in (select id from table limit 10)
但是,只要你再来一层就行。。如:
select * from table where id in (select t.id from (select * from table limit 10)as t)
37、mysql在查询的时候前后加上字符串:
select concat('update item_cat set pic_url=\'',pic_url,'\' where catid='),catid from item_cat
38、
在mysql中导出数据
mysqldump -h数据地址 -u用户名 -p密码 数据库名 表名 > /tmp/test.sql
在mysql中导出数据结构
mysqldump -h数据地址 -u用户名 -p密码 -d 数据库名 表名 > /tmp/test.sql
39、MySQL删除数据Delete与Truncate语句使用比较
空mysqll表内容常见的有两种方法:一种delete,一种是truncate 。 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
like不能使用索引
一次查询对于一个数据表只能使用一个索引
组合索引遵循最左前缀原则
group by的查询,数据库一般需要先将记录分组后放置在新的临时表中,然后分别对它们进行函数计算,如count(),sum()
mysql启动慢查询日志,会自动将超过1秒的查询记录在日志中,配置在my.conf中配置,
show processlist;监视所有线程的状态