SQL语句
重启mysql服务器 service mysql restart
停止mysql服务器 service mysql stop
开启mysql服务器 service mysql restart
创建数据库 CREATE DATABASE 数据库名;
删除数据库 drop database <数据库名>;
创建数据表 CREATE TABLE 表名(column_name column_type);
create table 表名 -- 表字段名 -- 表字段类型 create table students(id int unsigned primary key auto_increment not null);
查看表结构 desc 表名;
查看表的创建语句 show create table 表名;
查看所有表 show tables;
修改数据表名&修改数据表字段
删除表字段 ALTER TABLE 表名 DROP 字段名; alter table students drop birthda;
增加表字段(定义字段类型) ALTER TABLE 表名 ADD 字段名 类型; alter table students add birthday datetim;
修改字段类型 alter table 表名 modify 列名 类型及约束 alter table students modify birth date not null;
修改字段名&字段类型 alter table 表名 change 原名 新名 类型及约束; alter table students change birthday birth datetime not null;
修改字段默认值 ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 1000;
修改表名 ALTER TABLE 原表名 RENAME TO 新表名;
删除外键约束 alter table tableName drop foreign key keyName;
修改存储引擎 alter table tableName engine=myisam;
删除数据表 DROP TABLE 表名; drop table students;
插入数据 INSERT INTO 表名( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
insert into students(name,hometown,birthday) values('⻩蓉','桃花岛','2016-3-2') value若为字符串类型,需添加引号(单/双)
insert into 表名 values (..); insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2')
insert into 表名 values (..),(...); insert into classes values(0,'python1'),(0,'python2')
insert into 表名(列1,...) values(值1,...),(值1,...)..; insert into students(name) values('杨康'),('杨过'),('⼩⻰⼥')
修改数据 update 表名 set 列1=值1,列2=值2... where 条件; update students set gender=0,hometown='北京' where id=5;
删除数据 DELETE FROM 表名 [WHERE 条件] delete from students where id=2;
删除表中所有数据 :
delete from 表名; # delete相当于将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表
truncate table 表名; # 效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
删除有外键约束的MySQL表中的数据 : SET FOREIGN_KEY_CHECKS = 0 ;
操作结束后 :SET FOREIGN_KEY_CHECKS = 1;
查询数据 SELECT column_name, column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]
as关键字 select id as 序号, name as 名字, gender as 性别 from student(字段起别名)
select s.id,s.name,s.gender from students as(表起别名)
消除重复行 select distinct 列1,... from 表名
where条件查询 SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
比较运算符、逻辑运算符(and or not)、模糊查询(like %多个 _一个)、范围查询(bettween..and(区间内) in(指定值))、空判断(is null is not null)
like条件查询 SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
排序查询 select 显示字段名 from 表名 order by 排序字段名 asc|desc [,列2 asc|desc,..] select * from students order by age desc,height des
分组查询 SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
select gender from students group by gender; 单字段分组
select gender,group_concat(id) from students group by gender; 分组并显示每组成员
select gender,avg(age) from students group by gender; 分组+聚合,平均值
select gender,count(*) from students group by gender; 分组+聚合,计总人数
select gender,count(*) from students group by gender having count(*)>2; 分组+过滤,having过滤分组之后的结果
select gender,count(*) from students group by gender with rollup; 分组后新增一行作为汇总
聚合查询 select count(字段名) from student 计总
select max(id) from students where gender=2; 最大值
select min(id) from students where is_delete=2; 最小值
select sum(age) from students where gender=2; 求和
select sum(age)/count(*) from students where gender=2; 或 select avg(id) from students where is_delete=0 and gender=2; 平均值
连接查询 INNER JOIN(内连接,或等值连接):查询的结果为两个表匹配到的数据。
select * from students inner join classes on students.cls_id = classes.id;
LEFT JOIN(左/外连接):查询的结果为两个表匹配到的数据和左表特有的,右表不存在数据null填充
select * from students as s left join classes as c on s.cls_id = c.id;
RIGHT JOIN(右/外连接):查询的结果为两个表匹配到的数据和右表特有的数据,左表不存在的数据null填充
select * from students as s right join classes as c on s.cls_id = c.id;
自连接查询 select city.* from areas as cityinner join areas as province on city.pid=province.aidwhere province.atitle='山西省';
select dis.* from areas as disinner join areas as city on city.aid=dis.pidwhere city.atitle='广州市';
子查询 标量子查询: 子查询返回的结果是⼀个数据(一行一列) select * from students where age > (select avg(age) from students);
列子查询: 返回的结果是⼀列(⼀列多行) 主查询 where 条件 in (列子查询) select name from classes where id in (select cls_id from students);
行子查询: 返回的结果是⼀行(⼀行多列) 主查询 where (字段1,2,...) = (行子查询) select * from students where (height,age) = (select max(height),max(age) from students);
子查询是⼀个完整的SQL
limit分页查询 limit 起始记录,记录数
select * from students limit 0,3; 意思是:从第下标为0的记录开始取,取3条
select * from 表名 limit start=0,count select * from students where is_delete=0 limit (n-1)*m,m
优质内容筛选与推荐>>