1.DDL操作
(一)创建数据库
create database 数据库名 character set utf-8;
(二)创建表
create table stu
(
性别 int(10),
地址 varchar(50),
姓名 varchar(50),
联系电话 int(12)
);
(三)查询表的字段信息:
desc 表名;
(四)添加一列
注意varchar()必须要指定最大占多少个字节,不指定就会报错。
alter table 表名 add 列名 数据类型
(五)修改一个表的字段类型
alter table 表名 modify 字段名 数据类型;
(六)删除一列
alter table 表名 drop 列名;
(七)修改表名
rename table 表名 to 新表名;
(七)查看表的创建细节
show create table 表名;
(八)修改表的字符集
alter table 表名 character set 字符集名称
(九)修改表的列名
alter table 表名 change 原始列名 新列名 数据类型;
(十)删除表
drop table 表名;
(十一)在指定的列后面添加一列
alter table 表名 add (column) 列名 数据类型 after 指定列名;
(十二)在第一列添加列
alter table 表名 add (column) 列名 数据类型 first;
2.DML
(一)查询数据库表当中的所有信息
(二)往表当中插入一条记录
insert into 表名 (列名1,列名2.....)values(列值1,列值2....);
(三)往表当中批量添加记录
insert into 表名 (列名1,列名2...) values (列值1,列值2...), (列值1,列值2...), (列值1,列值2...)...
(四)更新操作
update 表名 set 列名1=列值1,列名2=列值2...where 列名=值;
(五)修改用户密码
使用sql语句修改用户密码
**********************5.7之前**************************
update user set password=password("abc") where user='root';
**********************5.7之后**********************************
update user set authentication_string=password("12345") where user='root' and Host='localhost';
**************注意要刷新mysql的系统权限相关表******************
flush privileges;
使用mysqladmin命令来修改
*******************将用户密码修改为1234*************************
mysqladmin -u root -p password 1234;
(六)删除操作
delete from 表名 where 列名=列值;
*****************直接删除表,然后在创建一个同名的新表**********************
truncate table 表名
*************deldete与truncate的区别****************
deldete删除表当中的数据,表结构还在,删除后的数据可以找回
truncate删除是直接将表drop掉,然后在创建一个同样的新表,删除的数据不能找回,执行速度比delete快。
3.DQL
通过查询语句查询出来的数据是以表的形式展示给我们的,我们称这个表为虚拟结果集,存放在内存当中
查询返回的结果集是一张虚拟表
(一)条件查询运算符及关键字
1.查询ID是101,102,103的记录
select * from students where id=101 or id=102 or id=103;
select * from students where id in (101,102,103);
2. 查询name为null的记录
select * from students where name is null;
**************以下的查询方式是错误的****************
select * from students where name=null;
select * from students where name='null';
3.查询姓名不为null的记录
select * from students where name is not null;
3.查询年龄在18到20 之间的学生记录
select * from students where age between 18 and 20;
select * from students where age>=18 and age<=20;
(二)模糊查询
like关键字后面跟通配符构成模糊查询
1.查询姓名由2个字符构成的记录
select * from students where name like '__';
(三)字段控制查询
去除重复的字段
把查询字段的结果进行运算,必须都是数据类型
对查询结果起别名
1.去除重复的字段
*******************去除重复的字段使用distinct关键字*********************
select distinct age from students ;
2.对字段取别名
select *,age+score from students;
select *,ifnull(age,0)+ifnull(score,0) from students;
select *,ifnull(age,0)+ifnull(score,0) as total from students;
(四)排序
对查询出来的结果进行排序,使用关键字order by;
升序asc(默认):
降序desc:
***********按照薪水的升序,ID的降序排列*********************
select * from employee order by salary ,id desc;
(五)sql文件的导入导出
导出
一路按照提示操作下去即可
导入
点击数据库---->运行sql文件
一路按照提示操作即可
(六)聚合函数
(七)分组查询
1.先分组,分完组之后统计每一组的值。
将查询结果按照一个或者多个字段进行分组,字段值相同的为一组
select gender from employee group by gender;
select gender,group_concat(name) from employee group by gender;
*******************查询每个部门的部门名称和部门的工资总和**************
select department,group_concat(salary),sum(salary) from employee group by department;
2.group by +聚合函数
********************询每个部门的名称以及每个部门工资大雨1500的人数****************
select department,group_concat(salary) ,count(*)from employee where salary>1500 group by department;
3.group by+having
having主要用在group by的后面,将满足条件的删选出来
*******************询工资总和大于9000的部门名称****************
select department,sum(salary) from employee group by department having sum(salary)>=9000;
4.having与where的区别
*****************查询工资大于2000,工资总和大于6000的部门的名称以及工资和
***
select department,group_concat(salary),sum(salary) from employee where salary>2000 group by department having sum(salary)>=9000;
5.SQl语句的书写顺序
6.SQL语句的执行顺序
7.limit
limit主要用来进行分页查询
limit(curPage-1)* pageSize,pageSize