1、插入数据
(1)insert into table (column_name1,column_name2,...) values (value1,value2,...)
(2) insert into table values(value1,value2,....);
如果插入的元素有一个是唯一的,这时使用insert插入会报重复错误,可以使用以下语句:
replace into books (name1,name2,...) values (value1,value2,.....),(value1,value2,.....);
2、修改表
修改表中的元素使用update,修改表的属性使用alter
update table set column=newValue where column1=value;
3、创建用户
create user 'user'@'userHost' identified by password 'password'
user代表用户名,userHost代表用户主机
4、删除用户
drop user 'username'@'userhost';删除用户,但是不能删除具有全局权限的用户,为了能够撤销用户账号的权限,在使用drop user前,使用revoke语句:
revoke all on *.* from 'username'@'userhost';
drop user 'username'@'userhost';
5、distinct
select distinct columnName from tableName;
6、order by
根据列对结果集进行排序,可以多个列进行排序,使用字符串的时候,默认是对首字母进行排序,数字即按大小排序
7、top
选择结果集中的前n个
select * from table limit 2; ==select top 2 * from table;
8、通配符
% :替代一个或多个字符
_ :仅替代一个字符
[charlist] :字符列中的任何单一字符
[^charlist] 或 [!charlist] :不在字符列中的任一单一字符
9、in
in操作符允许我们在where子句中规定多个值
eg: select column from table where column1 in (value1,value2,...);
在表table中,当column1为value1,value2,...这些值的时候,获取相应的column值。
10、between ... and ...
选取介于两个值之间的数据范围,可以为数值、文本或日期
11、join
(1)inner join:在表中存在至少一个匹配时,inner join关键字返回行,效果与join一样。
select columns from table1 inner join table2 on table1.column1=table2.column1;
(2)left join :会从左表那里返回所有的行,即使在右表中没有匹配到的行。即会返回匹配的得到的符合条件的行,另外,在左表中其他的行也会返回,右表的内容即为空。
(3)right join :会从右表那里返回所有的行,即使在左表中没有匹配到的行。
(4)full join :返回所有匹配的和没有匹配的,就是left join和right join的合集。
eg:有两张表,persons 和 orders
orders表:
persons表:
一、执行 join/inner join
select test.persons.last_name , test.persons.first_name, test.orders.order_no from test.persons join test.orders on test.persons.id_p=test.orders.id_p;
结果:
二、执行left join:
select test.persons.last_name , test.persons.first_name, test.orders.order_no from test.orders left join test.persons on test.persons.id_p=test.orders.id_p;
执行结果:
三、执行right joing :
select test.persons.last_name , test.persons.first_name, test.orders.order_no from test.orders right join test.persons on test.persons.id_p=test.orders.id_p;
执行结果:
从上面可以分析看出,left join 和right join在from后面的表和 join后面的表进行互换的话,然后left和right互换,结果是一致的,因此这两种方法是可以互换的。
12、union
合并两个或多个select语句的结果集
13、select into
select * into new_table from old_table;
从一个表中选取数据,然后把数据插入到另一个表中
14、合计函数
(1)avg(column) :返回某列的平均值
(2)count(column) :返回某列的行数,不包括null值
(3)count(*) : 返回被选列数
(4)count(distinct column):返回相异结果的数目
(5)first(column):返回在指定的域中第一个记录的值
(6)last(column):返回在指定的域中最后一个记录的值
(7)max(column):返回某列的最高值
(8)min(column):返回某列的最低值
(9)sum(column):返回某列的总和
15、group by
用于结合合计函数,根据一个或多个列对结果集进行分组
eg:依然是上面的两张表,执行语句:
SELECT id_p ,sum(test.orders.order_no) from test.orders group by id_p;
结果:
16、having
与合计函数一起使用,where无法与合计函数一起使用
having后面接合计函数的条件,如sun(num)>1000;
17、ucase
将字段的值换为大写
eg:select ucase(column_name) from table;
同理有lcase
18、mid()
用于从文本字段中提取字符,总字符串中提取前n个字符、后n个字符,m-n个字符等等
使用方式:select mid(column_name,start,length]) from table_name
column_name:必选,提取字段
start:必选,规定开始字段,默认为1
length:可选,选取的长度,不填为剩余字段
19、len()
返回文本字段中值的长度
20、round()
把数值字段舍入为指定的小数位数
select round(column,decimals) from table;
decimals:规定要返回的小数位数
21、now()
返回当前的日期和时间
22、对字段的显示进行格式化
format(column,format),例如对时间进行格式化,
select * ,format(now(),'YYYY-MM-DD') from table;