MySQL的库表操作和普通查询
连接数据库
mysql -uroot -proot
查看所有数据库
show databases;
创建数据库并设置字符集和排序规则
create database
zjq
CHARACTER SET ‘utf8mb4’ COLLATE utf8_chinese_ci;
使用数据库
use zjq;
查看当前数据库中的表
show tables;
删除数据库
drop database zjq;
查看表结构
desc dept;
查看表中的数据
select * from emp;
查看mysql的版本号
select version();
查看建表语句
show create table emp;
between and(左闭右开)
select ename from emp where ename between ‘A’ and ‘C’;
会查出来A和B开头的不会查出来C开头的
排序查询
select ename,sal from emp order by sal;
默认为升序(asc),降序如下:
select ename,sal from emp order by sal desc;
按照工资的降序排列,当工资相同的时候再按照名字的升序排列。
select ename,sal from emp order by sal desc,ename asc;
注意:越靠前的字段越能起到主导作用。只有当前面的字段无法完成排序的时候,才会启用后面的字段。
分组函数
count 计数
sum 求和
avg 平均值
max 最大值
min 最小值
PS:所有的分组函数都是对“某一组”数据进行操作的。
分组函数也能组合起来使用:
select count(*),sum(sal),avg(sal),max(sal) from emp;
单行处理函数 ifnull
select ename,ifnull(comm,0) as comm from emp;
group by和having区别
具体见这篇文章:group by和having区别
SQL语句执行顺序
具体见这篇文章:SQL语句执行顺序是什么样的呢
查询结果集去重
select distinct job from emp;
注意:distinct 只能出现在所有字段的最前面
创建表
语法格式:
create table 表名(
字段名1 数据类型
字段名2 数据类型
字段名3 数据类型
…
);
char和varchar怎么选择?
在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如:性别、生日等都是采用char。
当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。
insert语句插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3…)values(值1,值2,值3)
要求:字段的数量和值的数量相同 ,并且数据类型要对应相同 ,只要能对应上,顺序无所谓。
插入多行数据
INSERT INTO
roles
(uid
,rid
) VALUES
(534,14),(535,14),(536,14),(537,14),(539,14);
通过Insert select 语句将现有的表的数据添加到已存在的表中
语法:
Insert into<新的表名>(列名)
select<列名>
from<旧的表名>
表的复制
create table 表名 as select 语句;
将查询结果当做表创建出来。
将查询结果插入到一张表中(表中的数据要对应)
insert into dept select* from dept;
update 修改数据
update 表名 set 字段名1=值1,字段名2=值2 where 条件;
注意:没有条件整张表数据全部更新。
delete 删除数据
delete from 表名 where 条件;
注意:没有条件全部删除。
DQL DML DDL和DCL是怎么区分和定义的
具体见这篇文章:SQL中的DQL DML DDL和DCL是怎么区分和定义的
- 点赞
- 收藏
- 关注作者
评论(0)