1、基本概念
主键(primary key):int类型、无符号、自动递增、唯一的标识一条记录
2、SQL语句
(1)创建表
CREATE TABLE table_name (column_name column_type)
(2)删除表
DROP TABLE table_name
(3)插入数据
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN )
注:插入多条数据的两种方式
- 写多条插入语句
INSERT into student3 VALUES(0,'亚瑟1',20,145);
INSERT into student3 VALUES(0,'亚瑟2',20,145);
INSERT into student3 VALUES(0,'亚瑟3',20,145);
- 一条语句插入多条记录,value使用逗号分隔
INSERT into student3 VALUES(0,'亚瑟1',20,145),(0,'亚瑟2',20,145),(0,'亚瑟3',20,145);
(4)修改数据
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
(5)删除语句
DELETE FROM table_name [WHERE Clause]
DROP TABLE IF EXISTS students; CREATE TABLE students( studentNo varchar(10) PRIMARY KEY, name VARCHAR(10), sex varchar(1), hometown varchar(20), age tinyint(4), class varchar(10), card varchar(20) ); INSERT into students values ('001','王昭君','女','北京','20','1班','1234567891'), ('002','诸葛亮','男','上海','18','2班','1234567892'), ('003','张飞','男','南京','24','3班','1234567893'), ('004','白起','男','安徽','22','4班','1234567894'), ('005','大乔','女','天津','19','3班','1234567895'), ('006','孙尚香','女','河北','18','2班','1234567896'), ('007','百里玄策','男','山西','20','1班','1234567897'), ('008','小乔','女','河南','15','3班','null'), ('009','百里守约','男','湖南','21','1班',''), ('010','妲己','女','广东','26','2班','1234567898'), ('011','李白','男','北京','30','4班','1234567899'), ('012','孙膑','男','新疆','26','3班','12345678910')
3、查询语句
(1)查询所有字段
select * from 表名
(2)查询指定字段
select 字段1,字段2 from 表名
(3)使用as给列名或表名起别名
例:select name as 姓名,sex as 性别 from students as s
(4)使用distinct消除重复行
select distinct 列1,... from 表名
(5)条件查询
select 字段1,字段2,...from 表名 where 条件
(6)模糊查询
- like
- %表示任意多个任意字符
- _表示一个任意字符
例:select * from students where name like '孙%'
(7)范围查询
- in
- between...and
例:select * from students where hometown in ('北京','上海')
select * from students where age between 18 and 20
(8)空判断——is null
例:select * from students where card is (not)null
(9)排序
order by ... asc/desc 默认正序
例:select * from students order by age,studentno desc
select * from students order by convert(name using gbk)——对中文数据进行排序
(10)聚合函数
例:select count(*) from students——count(*)代表一行记录任意字段有值,就会统计在内
select max(age) from students where sex='女'
select min(age) from students where class='1班'
select sum(age) from students where hometown='北京'
select avg(age) from students where sex='女'
(11)分组——通常和聚合运算结合使用
例:select sex,count(*) from students group by sex
select sex,count(*) from students group by sex having sex='男'——having必须跟在group by 后
(12)分页
limit start,count
例:select * from students limit 0,3
4、连接查询
(1)等值连接——获取两个表中字段匹配关系的记录
方式1:select * from 表1,表2 where 表1.列=表2.列
注:此方式会产生笛卡尔积,产生临时表
方式2(内连接):select * from 表1 inner join 表2 on 表1.列=表2.列
(2)左连接——获取左表所有记录,即使右表没有对应匹配的记录
select * from 表1 left join 表2 on 表1.列=表2.列
(3)右连接——获取右表所有记录,即使左表没有对应匹配的记录
select * from 表1 right join 表2 on 表1.列=表2.列
5、子查询
(1)关键字
- in 范围
格式:主查询 where 条件 in (列子查询)
- any|some 任意一个
格式:主查询 where 列=any(列子查询)
在条件查询的结果中匹配任意一个即可,等价于in
- all
格式:主查询 where 列=all(列子查询) 等于里面所有
格式:主查询where 列<>all(列子查询) 不等于其中所有