06MySql基础
1. 操作数据库DDL
1.1 创建数据库
--1.创建数据库--创建一个名为day01的数据库,使用默认字符集和校对规则CREATE DATABASE day01;--创建一个名字为day01_2的数据库,并且使用字符集为gbkCREATE DATATBASE day01_2 CHARACTER SET gbk;--可以直接使用可视化工具直接创建数据库
1.2 删除数据库
--2.删除数据库DROP DATABASE day01_2;
1.3 查询整个MySql服务器中的所有数据库
--3.查询整个MySql服务器中的所有数据库SHOW DATABASE;
1.4 查看某个数据库的结构
--4.查看某个数据库的结构SHOW CREATE DATABASE day01;
1.5 修改某个数据库的字符集
--5.修改某个数据库的字符集ALTER DATABASE day01 CHARACTER SET UTF8;
1.6 指定使用哪个数据库
--6.指定使用哪个数据库--因为建表,操作表,都需要指定哪个数据库中的表USE day01;
2. 操作表的DDL
2.1 创建表
--1.创建表--创建一张学生表(含有id字段,姓名字段不能重复,性别字段不能为空,id为主键自动增长)create table student( id int primary key auto_increment,--主键自增长 name varchar(30) unique,--唯一约束 gender char(1) not null,--不能为空 age int default 0 --默认值)
2.2 查看某个数据库中的所有表
--2.查看某个数据库中的所有表show tables
2.3 查看表结构
--3.查看表结构desc student;
2.4 修改表结构的SQL语句
--4.修改表结构的SQL语句--1.添加一个字段--给学生表增加一个grade字段,类型为varchar(20),不能为空alter table student add grade varchar(20) not null;--2.修改某个字段的类型和约束--给学生表的gender字段改成int类型,不能为空,默认值为1alter table student modify gender int not null default 1;--3.修改某个字段的名字--给学生表的grade字段修改为class字段alter table student change grade class varchar(20);--4.删除某个字段alter table student drop class;--5.修改表名字--把学生表修改为老师表rename table student to teacher;--6删除表drop table teacher;
3.DML操作
3.1 准备工作(创建表)
create table product( pid int primary key auto_increment, pname varchar(30), price double, num int)
3.2 往商品表中插入数据
--第一种:指定插入那些数据insert into product(pname,price,num) values("小米",3888.8,100);--第二种:不指定数据,那就得全部插入insert into product values (null,"大米",4533,200);
3.3 更新数据
--更新数据--update 表名 set 字段名=新值,字段名=新值 where 条件--如果没有修改条件的话,那么整个表都会被修改--将所有的商品价格改为5000update product set price = 5000;--将是小米的价格改为6000update product set price = 5000 where panme = '小米';
3.4删除数据
--删除数据--1.delete根据条件删除 delete from 表名 where 条件delete from product where price > 6000;--不加条件就是全部删除(不推荐,因为delete是一行行删除的)delete from product--2.truncate删除,将整个表整体干掉,然后自动创建结构一模一样的新表,没有条件可选 truncate table 表名truncate table product
4.数据查询
4.1 查询所有行和所有列的数据
--select 要查询哪些列 from 表名 where 条件--1.查询product所有数据select * from product;--2.根据列名查询数据select pname,price,num from product;
4.2 去重查询
--去重查询:在查询结果中去除重复的数据,使用关键字distinct--select distinct 去重复的数据 from 表名select distinct pname from product;
4.3别名查询
--别名查询:给查询的字段或者表进行别名设置 as 可以省略--select 列名 as 别名,列名 别名 from 表名select pname 商品名 from product;
4.4 运算查询
--运算查询:可以将表不存在的列名,用结果返回出来--select 列名(操作) from productselect price + 0.99 价格 from product
4.5 条件查询
--条件查询:根据相应的条件,返回相应的数据-- select 列名 from 表名 where 条件1,条件2...;--注意:mysql中不等于是=> <>--在多少到多少之间(范围区间)的值是=> between number and number--在枚举范围的内的是=> in(值1,值2,值3)
4.6 模糊查询
--模糊查询:关键字like和%配合使用--select * from 表名 where 列名 like '%xx' 在这%是占位符,只占一位,例子 列名中有 刘德华,王德华 like '%德华' 不在乎第一个是什么,但后2位一定是德华,并且一共3位字符--select * from 表名 where 列名 like 'xx%' 在这%是占位符,只占一位,列子 列名中有 刘德华,刘德鑫 like '刘德% ' 不在乎最后一个是什么,但前2位一定是刘德,并且是3位字符--select * from 表名 where 列名 like '%xx%'完全的模糊搜索,只要在列名内容中有xx内容就可以,但一定不能分开如: %刘德% 不能找到 刘鑫德 ,可以找到 刘德华 王刘德
4.7 排序查询
--排序查询 order by 列名 升序(默认)asc 降序 descselect * from product order by price desc;--多列排序 先按照第一个字段进行排序,如果第一个字段相同,那么就按照第二个字段进行排序--例子:先按成绩降序排序,如果分数一样就按age降序select * from student order by score desc,age desc;
4.8聚合函数
--聚合函数通常和分组查询一起使用--1.max函数,查询最大值--2.min函数,查询最小值--3.avg函数,查询平均值--4.count函数,查询数据条数--5.sum函数,求和
4.9 分组查询
--分组查询:分组的目的是为了做统计,所以结合聚合函数一起使用--语法:group by 用于分组的字段--性别分组,性别的总人数select sex 性别 ,count(sid) 总人数 from student group by sex;--性别分组,性别的平均分select sex , avg(score) from student group by sex;--...依次类推
4.10 分组查询的筛选
--分组查询的筛选不能使用where,where条件必须在group by的前面筛选的语法为 group by 列名 having 条件-- 练习根据性别分组,只统计年龄大于等于18的,并且要求组里的人数大于4SELECT sex '性别',COUNT(sid) '总人数' FROM student WHERE age >= 18 GROUP BY sex HAVING COUNT(sid) > 4