总结:
show 展示库表
create 创建库表
use切换库
drop 删除库表
insert into 语句用于向数据库表中插入新的行
update 修改表中数据
alter 语句用于修改数据库中已存在的表的结构。它可以用于添加、删除或修改表中的列
order by 分组
where 条件查询
inner join on 多表连接,内连接
left outer join on 多表连接,左连接 以左表为基表,没有匹配的字段为null
right outer join on 多表连接,右连接 以右表为基表,没有匹配的字段为null
where <表达式> <操作符> (子查询) 子查询
desc降序排序,asc升序排序
1.库
1.查看数据库
mysql> show databases;
2.切换数据库#databasename为数据库名称
mysql> use databasename;
3.查看数据库中的表
mysql> show tables;
4.创建数据库#test为库名
mysql> create database test;
5.删除数据库
drop database 库名;
2.表
1.建表
#例如:在刚创建的name库中建立表name,表中有id(序号,自动增长),
mysql>create table name (id int(3));
2.显示表的结构
mysql> describe name;
3.删除表#name表名
drop table name;
4.插入数据insect into#name 表名
insert into name values(NULL,'白云','女','1972-05-20');
5.修改记录#name表名
例如:将jack的出生年月改为1971-01-10
mysql> update name set birth=‘1971-01-10’ where name=‘jacl’;
3.查询数据库信息
查询时间:select now();
查询当前用户:select user();
查询数据库版本:select version();
查询当前使用的数据库:select database();
4.数据库使用:
1.创表
mysql> create table students(stuid varchar(30),name varchar(30),age int(10));
2.增加数据
mysql> insert into students values('1901','张三',20),('1902','李四',21), ('1903','王五',23);
3.查询表
mysql> select * from students;
4.删除重复数据
先增加,再过滤重复数据distinct
mysql> insert into students values('1904','张三',21);
mysql> select distinct name from students;
5.算术运算符给age+10
mysql> select name,age+10 from students;
5.聚合函数
函数 | 作用 |
sum() | 计算指定列的数值和,如果指定列类型不是数值类型则计算结果为0 |
avg() | 计算指定列的平均值,如果指定列类型不是数值类型则计算结果为0 |
max() | 计算指定列的最大值,如果指定列是字符串类型则使用字符串排序运算 |
min() | 计算指定列的最小值,如果指定列是字符串类型则使用字符串排序运算 |
count() | 统计表中数据的行数或者统计指定列其值不为NULL的数据个数 |
6.条件查询
select * from 表名 where 条件;
条件 | 作用 |
> | 大于 |
< | 小于 |
<> | 不等于 |
!= | 不等于 |
= | 等于 |
<= | 小于等于 |
>= | 大于等于 |
or | 或 |
and | 而且 |
is null | 内容为空 |
is not null | 内容不为空 |
like | 模糊查询 |
in | 判断某个字段是否存在给定的元组中 |
between...and... | 判断范围 |
查询age小于25的全部数据
mysql> select * from students where age < 25;
in关键字用于判断某个字段的值是否在指定集合中。如果字段的值恰好在指定的集合 中,则将字段所在的记录将査询出来。
mysql> select * from students where stuid in ('1901','1902');
between and
用于判断某个字段的值是否在指定的范围之内。如果字段的值在指定范围内,则将所在的记录将查询出来
mysql> select * from students where stuid between 1901 and 1903;
%用于匹配任意长度的字符串。例如,字符串“a%”匹配以字符a开始任意长度的字符串
binary区分大小写
mysql> select * from students where stuid like '1%';
limit限制查询数量
order by 对查询结果进行排序
desc降序排序,asc升序排序,asc也是默认排序
插入性别数据
mysql> alter table students add gender varchar(10);
7.多表连接查询
1.建立数据表
2.插入数据
create table students(id int not null primary key auto_increment,name varchar(500),age tinyint,sex varchar(4),height float,course_id int) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
insert students(name,age,sex,height,course_id) values('Dany',25,'男',160,1),
('Green',23,'男',158,2), ('Henry',23,'女',185,1),
('Jane',22,'男',162,3),('Jim',24,'女',175,2),
('John',21,'女',172,4), ('Lily',22,'男',165,4),
('Susan',23,'男',170,5),('Thomas',22,'女',178,5), ('Tom',23,'女',165,5);
#创建课程表
create table kecheng(id int not null primary key auto_increment,course_name varchar(50));
insert kecheng(course_name) value('Java'),('MySQL'), ('Python'),('Go'),('C++');
交叉查询:将两个表中的数据,交叉输出。
mysql> select * from students cross join kecheng;
内连接:inner join 内连续 on 条件
- 从
students
表中选择name
字段,并将这个表的别名设置为s
。 - 从
kecheng
表中选择course_name
字段,并将这个表的别名设置为c
。 - 使用
INNER JOIN
(内连接)根据students
表的course_id
字段和kecheng
表的id
字段进行匹配,将两个表中匹配的记录连接起来。 - 最终输出的结果是每个学生的名字和他们所选课程的名称。
select s.name,c.course_name from students s inner join kecheng c on s.course_id=c.id;
外连接
#在kecheng表中插入一条信息
insert into kecheng (course_name) value ('HTML');
#给students表中加一条信息
mysql> insert students(name,age,sex,height,course_id) values('LiMing',22,'男',180,7);
1.左连接:以左边的表为基表进行查询,匹配不到右表的字段为空null
select s.name,c.course_name from students s left outer join kecheng c on s.course_id = c.id;
2.右连接:以右边的表为基表,匹配不到右边的字段为空null
select s.name,c.course_name from students s right outer join kecheng c on s.course_id = c.id;
GROUP BY 关键字可以和 group_concat() GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。
Having子句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录, 也就是说作用在group by和having子句前。
8.子查询
WHERE <表达式> <操作符> (子查询)
其中,操作符可以是比较运算符和 IN、NOT IN、EXISTS、NOT EXISTS 等关键字。
select name from students where course_id in (select id from kecheng where course_name='Java');