数据库基础操作语句总结

库操作

操作语句
进入mysqlmysql -uroot -proot -h127.0.0.1 -P3306
进入mysql防止插入中文乱码mysql --default-character-set=gbk -uroot -proot
备份数据库数据mysqldump -u用户名 -p 备份库名 >备份地址(例:d:/db40.sql)
备份所有mysql数据mysqldump -u用户名 -p --all-database >备份地址(例:d:/all.sql)
恢复数据库mysql -u用户名 -p 恢复到数据库名字<备份文件地址(例:d:/db40.sql)
进入库use 库名;
展示库列表show tables;
获取当前时间select now(); select curdata(); select curtime();
退出库exit / quit / \p

1. C(create):创建

操作语句
增加新库create database 库名; creat database 库名 charset 编码;
判断增加库create database is not exists 名称 chatset 编码;
恢复库(进入库后)source sql位置(例:d:/db40.sql)

2. R(retrieve):查询

操作语句
浏览数据库的所有库show databases;
查看建库时的语句验证使用的编码show create database 库名;

3. U(Update):修改

操作语句
修改数据库的的字符集alter database 库名 character set 新名称;

4. D(Delete):删除

操作语句
删除库drop database 库名;
判断删除库drop database if exists 库名;

表操作

如果是在cmd中执行插入记录的语句,先 set names gbk; 再插入记录!(防止中文乱码)

1. C(create):创建

操作语句
创建表create table 表名( 列名 数据类型, 列名 数据类型, … 列名 数据类型);
复制类create table 表名 like 被复制的表名;
添加主键alter table 表名 add primary key(列名);

2. R(retrieve):查询

操作语句
展示库内表列表show tables;
查看表结构desc 表名;

3. U(Update):修改

操作语句
修改表名alter table 表名 rename to 新的表名;
修改列名称 类型alter table 表名 change 列名 新列名 新数据类型;

4. D(Delete):删除

操作语句
删除drop table 表名;
删除主键alter table 表名 drop primary key;
如果存在则删除drop table if exists 表名;

书写顺序

  1. select * | 列名 ------ 确定要查询的列有哪些
  2. from 表名 ------确定查询哪张表
  3. where 条件 ------ 通过筛选过滤,剔除不符合条件的记录
  4. group by 分组的列 asc(升)/desc(降) ------ 指定根据哪一列进行分组
  5. having 条件 ------ 通过条件对分组后的数据进行筛选过滤
  6. order by 排序的列 ------ 指定根据哪一列进行排序
  7. limit ((页码-1)+每页显示记录数,每页显示记录数 ------ 指定返回第几页记录以及每页显示多少条

执行顺序

  1. from 表名 ------ 确定查询哪张表
  2. where 条件 ------ 通过筛选过滤,剔除不符合条件的记录
  3. select * | 列名 列别名 ------ 确定要查询的列有哪些,
  4. group by 分组的列 ------ 指定根据哪一列进行分组
  5. having 条件 ------ 通过条件对分组后的数据进行筛选过滤
  6. order by 排序的列 ------ 指定根据哪一列进行排序
  7. limit (countPage-1)*rowCount, rowCount

表记录

1. C(create):创建

操作语句
insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…);
增2insert into 表名 values(值1,值2,值3…);
批量增insert into 表名 values(值1,值2,值3…),(值1,值2,值3…);
添加一列alter table 表名 add 列名 数据类型;

2. R(retrieve):查询

特殊条件写法
含null判断用 :列名 is null | 列名 is not null
在…之间:between 值 and 值
模糊查询:列名 like 值+通配符(%、_)

操作语句
查询所有表信息select * from 表名 where 条件一 and(or) 条件二····;
查询表信息select 列名,列名··· FROM 表名 where 条件一 and(or) 条件二····;
查询表信息(别名)select 列名 别名,列名 别名··· FROM 表名 where 条件一 and(or) 条件二····;
查询表信息 (含null)select ifnull(列名,修改值) 别名··· FROM 表名 where 条件一 and(or) 条件二····;
查询表信息 (拼接)select concat(列名,拼接字符) 别名··· FROM 表名 where 条件一 and(or) 条件二····;
查并去除重复记录select distinct 列名 from 表名 where 条件一 and(or) 条件二····;
排序查询select 列名 from 表名 order by 列名 asc(升)/desc(降) , 列名 asc(升)/desc(降)······ ;
分页查询select * from emp limit (页码-1)+每页显示记录数,每页显示记录数;
连接查询select *from 表一,表二 where 表一.外键=表二.对应键;
左外连接查询select *from 表一 left join 表二 on 表一.外键=表二.对应键;
右外连接查询select *from 表一 right join 表二 on 表一.外键=表二.对应键;
全外查询select *from 表一 full join 表二 on 表一.外键=表二.对应键;

函数
1 curdate() 返回日期
curtime() 获取时间
now() 获取日期加时间
concat(s1,s2…)合并字符串
concat_ws(x,s1,s2…)加分隔符
year(date)/month(date)/day(date)/hour(date)/minute(date)/second(date) 返回 年/月/日/天/时/分/秒

多行函数

  • 常见
    • count(列 | *) 某列行数
    • max(列名) 最大值
    • min(列名) 最小值
    • sum(列名) 和
    • avg(列名) 平均值
  • 规则
    • (1)多行函数不能用在where子句中
    • (2)多行函数和是否分组有关,分组与否会直接影响多行函数执行的结果。
  • 例子
    • 使用多行函数: select 函数(列名) FROM 表名;
    • 分组使用多行函数: select 函数(列名) FROM 表名 group by 列名;

3. U(Update):修改

操作语句
update 表名 set 列名=新值 where 条件一 and(or) 条件二····;

4. D(Delete):删除

操作语句
删条件列delete from 表名 where 条件;
删除列alter table 表名 drop 列名;

表内语句约束

操作语句
主键 主键的特点是唯一且不能为空primary key;
自增auto_increment;
查看建表时的语句show create table stu;
非空约束not null;
唯一约束unique;
外键foreign key(本表列) references 外表名(外表列);
级联删除on delete cascade
级联更新on update cascade

where和having的区别

  1. 相同点: where和having都可以对记录进行筛选过滤。
  2. 区别:where是在分组之前,对记录进行筛选过滤,并且where子句中不能使用多行函数以及列别名(但是可以使用表别名)
  3. 区别:having是在分组之后,对记录进行筛选过滤,并且having子句中可以使用多行函数以及列别名、表别名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值