关于SQL的常见操作主要是增、删、改、查。
1、增,顾名思义就是新增数据(insert into)。该语句用于向表中插入新纪录。insert into有两种用法。
(1)、无需指定要插入数据的列名,只提供被插入的值,
语法:INSERT INTO table_name VALUES (value1,value2,value3,...);
但是这种方法要注意一点,那就是需要列出插入行中的每一列数据,如果某一列没有数据的话,可以使用引号替代,如果没有列出插入行中每一列数据,就会报错。
(2)、指定列名及被插入的值,
语法:INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
通过这种方法也可以向指定的列中添加数据
(3)、一次性向表中插入多条数据。
操作为,insert into table_name values (value1,value2,...), (value3, value4,...), (value5, value6)。可以指定列名,也可以不指定列名,如果指定了列名,则是向指定列添加数据。如果不指定列名,那么则需要列出插入行中的每一列数据。
2、删,也就是删除数据,这里其实也有两种,delete与drop。然而这两种的效果确实不一样的,虽然都能删除数据。
(1)、delete。该语句用于删除表中的记录。语法:DELETE FROM table_name WHERE some_column=some_value;
例如,要从myTable表中删除title为 ‘扫毒’的数据。操作为 delete from [dbo].[myTable] where title='扫毒'
如果是要删除myTable表中的所有数据,操作为 delete from [dbo].[myTable],此时表中的数据都会被删除,但是表的结构、属性、索引等仍保持不变,也不会释放内存空间。
注意:使用delete删除数据时,如果省略了where子句,那么所有的数据都将会被删除。
(2)、drop。该语句用于删除表,且内存空间会被释放。
例如,要删除表myTable,那么操作为,drop table [dbo].[myTable]
(3)、删除表中重复的数据。可以这样做,首先去除重复,再获取n条数据并将其插入到临时表中,再将原表的数据删除,然后将临时表的数据插入到原表,最后删除临时表
例如表myTable中有多条title相同的数据,要删除相同的,只保留一条,那么操作为:
select distinct * into [dbo].[newTable] from [dbo].[myTable];
delete from [dbo].[myTable]; insert [dbo].[myTable] select * from [dbo].[newTable]; drop table [dbo].[newTable];
3、改,也就是更改表中的数据(update),用于更新表中已存在的数据。
语法:UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
例如,要将myTable表中 title为 ‘扫毒’ 的这条数据,将play改为 ‘古天乐、张家辉、刘青云’,那么操作为,update [dbo].[myTable] set play='古天乐、张家辉、刘青云' where title='扫毒'
注意:使用update更新表中数据时,如果省略了where子句,那么表中所有数据都将被更新。
4、查,也就是查询表中的数据(select)。
语法:SELECT column_name,column_name FROM table_name; 或 SELECT * FROM table_name;
例如,要查询表myTable中的所有数据,可以使用 select * from [dbo].[myTable] 或者将 "*"更改为表中数据行每一列的数据名。
(1)、选取表中包含某字符的数据。
例如,选取表myTable中play包含 ‘古’ 的所有数据,则操作为,select * from [dbo].[myTable] where play like '%古%'
(2)、选取表中以某字符开始的数据。
例如,选取表myTable中play以 “古” 开头的所有数据,则操作为,select * from [dbo].[myTable] where play like '古%'
(3)、选取表中以某字符结尾的数据。
例如,选取表myTable中play以 “古” 结尾的所有数据,则操作为,select * from [dbo].[myTable] where play like '%古'
(4)、选取表中指定长度包含指定字符的数据。
例如,选取表myTable中play包含三位且中间为 “古”的数据,则操作为 select * from [dbo].[myTable] where play like '_古_'
选取表myTable中play包含三位且开头为 “古”的数据,则操作为 select * from [dbo].[myTable] where play like '古__'
选取表myTable中play包含三位且结尾是 “古” 的数据,则操作为 select * from [dbo].[myTable] where play like '__古'
ps:% => 代表0个或多个字符
_ => 代表1个字符
(5)、使用in操作符,该操作符允许在where子句中规定多个值。
例如,要选取表myTable中title为 "扫毒" 或 "贪狼" 的数据,则操作为 select * from [dbo].[myTable] where title in ('扫毒', '贪狼')
(6)、between操作符,选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
例如,要选取表myTable中score 介于 10 到 200 间的数据。则操作为 select * from [dbo].[myTable] where score between 10 and 200
注意:在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。
(7)、选取要返回指定数目的数据(select top)。
语法:SELECT TOP number|percent column_name(s) FROM table_name;
例如,要选取表myTable中前100条数据,则操作为 select top 100 * from [dbo].[myTable]
选取表myTable中前50%的数据,则操作为 select top 50 percent * from [dbo].[myTable]
(8)、返回表中唯一不同的值(distinct)。
语法:SELECT DISTINCT column_name,column_name FROM table_name;
例如表myTable中有多条 title 为 ‘扫毒’的数据,现在只想返回一条,那么操作为 select distinct title from [dbo].[myTable]