切换数据库
use databaseName
设置使用的字符集
set name utf8;
sql对大小写不敏感因此下面两个语句的执行效果相同
SELECT * FROM student;
select * from student;
每条语句后有分号,分号是数据库系统分隔每条SQL语句的标准方法
数据库的基本操作
select //从数据库中提取数据
update //更新数据库中的数据
delete //从数据库中删除数据
insert into //向数据库中插入新数据
create database //创建新数据库
alter database //修改数据库
create table //创建表
alter table //变更数据表
drop table //删除表
create index //创建索引
drop index //删除索引
select
select column_name1 column_name2 from table_name //提取表中的column_name1和column_name2这两列的数据
select * from table_name //选取表中的所有数据
select distinct
在表中,一个列可能有多个重复值,如不需要列出重复的值,distinct可以返回唯一不同的值
select distinct column_name,column_name from table_name;
where
where子句用于提取那些满足指定标准的记录
SQL使用单引号环绕文本值(有些数据库接受双引号),数值不需要引号
select column_name,column_name from table_name where column_name operator value;
例如:
select * from table1 where country='China';
select * from table1 where id=1;
select * from table1 where country is null;
select * from table1 where id between 150 and 3000;
select * from table1 where id in(300,500,1000);
select * from table1 where country like 'C%';(查询table1中country列中以C开头的值)
% //表示多个字符
_ //表示一个字符
C% //表示以C开头的
%C% //表示内容包含C的
%C_ //表示C在倒数第二位的
NOT //不满足包含条件
AND //同时满足两个条件
OR //满足其中一个条件
优先级顺序:not and or
where子句中的运算符
= //等于
<> //不等于,也可写成!=
> //大于
< //小于
>= //大于等于
<= //小于等于
BETWEEN(between) //在范围之内
LIKE(like) //搜索某种样式
IN(in) //指定针对某个列的多个可能值
IN
in操作符允许在where子句中规定多个值
select column_name(s) from table_name where column_name in(value1,value2,......)
select * from table1 where name in ('zhoujielun','linzhixun')
in和=都可以筛选,但是in可以规定多个值
BETWEEN
between操作符选取介于两个值之间的数据范围内的值,日期数字甚至文本
select * from table1 where column_name between value1 and value2
sample:select * from table1 where name between 'b'and'd'
sample:select * from table1 where name between 1 and 5
not between选取不在这个范围内的内容
select * from table_name where name not between 'b'and'd'
in和between合用
select * from table1 where (name between 'a'and'z')and not name in ('c','g')and not between('b'and'd')
select * from table1 where data between '1994-05-19'and'2018-1-1'
在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段
因此处理此操作符必须结合数据库
LIKE
like操作符用于在where子句中搜索列中的指定模式
select column_name(s) from table_name where column_name like pattern
sample:select * from table1 where name like '%a%' //选取name中含a的行
通配符
通配符与like操作符一起使用,用于搜索表中的数据,SQL中的通配符
% //替代0或多个字符
_ //替代一个字符
[charset] //字符集合中的单一字符
[^charset]或[!charset] //不在字符集合中的单一字符
sample:select * from table1 where name like 'lin%xh_x%' //这个例子可以选取name为;linzhixuan的行
在mysql中使用regexp或no regexp运算符(或rlike和not rlike)来操作正则表达式
select * from table1 where name regexp ‘^[lzx]’ //选取name以l、z、x开头的行
select * from table1 where name regexp ‘^[^A-H]’ //选取name不以A到H开头的行
AND & OR
and和or这两个运算符基于一个以上的条件对记录进行过滤
select * from table where country='%C%' AND id>5 NOT (size<500 or size<100)
ORDER BY
order by对结果集按照一个或多个列进行排序,默认按升序进行排序,如果需要降序排列需要desc关键字
select column_name,column_name from table_name order by column_name,column_name ASC|DESC
例子:
select * from table1 order by country DESC
select * from table1 order by country,id
如果order by没有写ASC或DESC的时候默认是ASC,如果同时按照多个列排序的话,先按照第一个排序,之后按照第二个. .....
SELECT TOP
select top用于规定要返回的记录的数目
select top (number|percent) column_name(s) from table_name; //SQL Sever/Access在sql server还可以使用百分比percent
sample:select top 50 preccent * from table1 //选取前面百分之五十的内容
select colunn_name(s) from table_name limit num //MySQL的语法,与select top等价
sample:select * from table1 limit 5 //选取前5行的内容
select column_name(s) from table_name where rownum <= number //Oracle的语法,与select top等价
sample:select * from table1 where rownum<=5 //选取前5行的内容
INSERT INTO
insert into 用于向表插入新纪录,有两种编写方式
一、无需指定要插入数据的列名,只需提供被插入的值即可
insert into table_name values(value1,value2,....)
二、需要指定列名和被插入的值
insert into table(column1,column2,column3,......)value(value1,value2,value3,......)
insert into table1(name)value('周杰伦') //周杰伦这一行所有未被初始化的列都未默认的初始值(如整数列默认是0)
UPDATE
update语句用于更新表中已存在的记录
update table_name set collumn1=value1,column2=value2,......where some_column=some_value
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
update table1 set name='张杰' where name=‘周杰伦’
如果省略了where子句那么name这一列所有行都会变成张杰,由于update操作比较危险,所有可以设置sql_safe_updates 的值,当参数开启时,必须有where子句否则报错
DELETE
delete用于删除表中的记录
delete from table_name where some_column=some_value
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除
delete from table1 where name=‘林志炫’and country='China'
删除所有的行,但是表结构、属性、索引不变
delete from table_name
delete * from table_name