1、一行SQL代码能做什么? 万计,都是一些非常 么呢? 〃高端〃的操作,就在想一行SQL代码能做什 导读:最近在知乎上看到一个问题:一行代码可以做什么?答题者数 SQL一行代码其实有很多很多,一些常见的比方: SELECT * FROM TableNameINSERT INTO TableName VALUES(...) TRUNCATE TABLE TableName ・・・・・这些就没什么意思了,我们来给大家看一些比拟〃高级〃的。 1.复制表结构 ELECT * INTO Customers bak FROM Customers WHERE 1=2;或者 ELECT TO
2、P 0 * INTO Customers bak FROM Customers;可以得到与 Customers表结构一样的 Customers_bak ,而且 Customers_bak中没有数据。 2、直询表里是否存在数据 ELECT TOP 11 FROM Customers结果如下: fieldl 1 注:第一个1是查询是否存在一条记录,第二个1就是单纯的数值103、随机获取一行数据 表Customers中数据如下: 客户ID
3、 姓名 地址 城市 省份 1张三1集路27号上海 2李四南京路12号杭州 200000 上海市 310000 浙江省 花城大道17号 广州 510000 4马六江夏路19号 5赵七西二旗12号 武汉 430000 100000 广东省 湖北省 北京市 现在随机获取一行数据 ELECT TOP 1 * FROM Customers ORDER BY NEWID();结果如下: 客户ID 姓名 城市 省份 3 珏 花城大道17号 广州 510000 「未省 注:屡次执行,结果会不一样 4、获取第6到10行的记录表
4、Person数据如下: Name Age Sex Phone 1吕布 25男 2貂蝉 22女 3张飞 23男 4刘备 28男 5关羽 23男 6马超 20男 7赵云 20男 8黄忠 28男 9孙尚香 19女 10诸营亮 26男 11张飞 23男 12黄忠 28男 ID获取第6到10行数据 SELECT TOP 5 * FROM (SELECT TOP 10 * FROM Person ORDER BY ID (提示:可以左右滑动代码) 结果如下: ID Name Age Sex Ph
5、one10诸葛亮 10诸葛亮 26 男 9孙尚香 19 女 8黄忠 7赵云 6马超 28男 20男 20男 注:如果希望是升序,可以在外面在加一层SELECT子查询对ID进 行升序排序。 5、对空值赋默认值SELECT ISNULL (Price,0) FROM Orders 注:Price为空值时会默认赋06、将日期转换成文本格式 ELECT CONVERT(VARCHAR(10),CreateDate,120) FROM Students注:CreateDate为带时间的完整日期格式,执行后会得到不带时间 的字符串,如2020-05-31,
6、7、保存2位小数 ELECT CAST(Amount as NUMERIC(18,2)) FROM Orders注:Amount是带2位以上的小数格式,转换后的小数会四舍五入。 8、删除重复记录(除了主键不同,其他字段均相同)表Person数据如下: 2貂蝉 3张飞 4刘备 5关羽 6马超 7赵云 8黄忠 9孙尚香 10诸葛亮 11张飞 12黄忠 ID Name 1吕布 2貂蝉 4刘备 5关羽 6马超 7赵云 9孙尚香 10诸葛亮 11张飞 12黄忠 Age Sex 25美 22女 28男 23男 20男 20男 19女 26男
7、 23男 28男 Phone ID Name Age Sex Phone 1 吕布25 男 22 女 23 男28 男 23 男20 男 20 男28 男 19 女26 男 23 男28 男 删除其中除ID以为其他都重复的记录ELETE FROM Person WHERE ID NOT IN (SELECT MAX(工D) FROM Person GROUP BY Na 删除后结果如下: 9、杳询当前数据库中的所有表名 ELECT NAME FROM SYSOBJECTS WHERE TYPE=U结果如下:
8、 NAME Customers Orders Products SuppliersStudent Person10.直询某个表里的所有列名 ELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT ID( 1 Person')结果如下: NAME Age IDName PhoneSex 11,将B表中的字段内容更新到A表 PDATE A SET A.Name=(SELECT B.Name FROM B WHERE A.ID=B.ID)12、获取笛卡尔积 ELECT A.*, B.* FROM A,B13、按姓氏笔画多少排序 ELECT Name F
9、ROM Person ORDER BY Name Collate Chinese PRC Stroke CI AS结果如下: Name 马超 关羽 刘备 吕布 孙尚香 张飞 赵云 诸葛 黄忠 貂蝉注:默认是直接按姓氏拼音排序 14、延迟3秒执行直询语句WAITFOR DELAY 10:0:31 SELECT * FROM Person 结果如下: ID Name 1吕布 2貂蝉 4刘备 5关羽 6马超 7赵云 9孙尚香 10诸葛亮 11张飞 12黄忠 Age SexPhone25 男 22 女28 男 23 男20 宪 20 男19 女 26 男23 男
10、
Gia时间:3.065s
28 男WAITFOR DELAY '0:0:3' SELECT * FRO 只读
15 .将查询结果转换为XML格式ELECT * FROM Person WHERE ID=1 FOR XML PATH
结果如下:
XMLJ52E2B61 -18A1 -11 d1 -B105-00805F49916B






