学到mysql的时候非常的快,感觉前面的没有很巩固,还是要复习前面的博客
MySQL , Oracle , SQL Server , SQLite , DB2 , …
关系型数据库:具有行和列这种二维表结构的数据库
非关系型数据库: NOSQL 用键值关系来存储数据 类似 json
首先在dos命令下打开,net start myslq,然后登陆 mysql -u -p
update user set password =password (‘123456’)where user =‘root’;
flash privilegs ;刷新数据库
show databases;显示所有的数据库
use dbname;打开某个数据库
show tables;显示mysql数据库中的所有的表
describe user;显示表mysql数据库中user表的列的信息
create databases name;创建数据库
use databasesname;选择数据库
exit ;退出mysql
?命令关键词:寻求帮助
#表示注释
/**/表示多行注释
DDL(data definition language):数据定义语言,用来定义数据库对象:库,表,列等;
DML(data manipulation language ):数据库操作语言,用来定义数据库记录(增,删,改);
DCL(data control language):数据控制语言,用来定义访问权限和安全级别;
DQL(data query language):数据查询语言,用来查询记录(数据),
创建数据库:create database ; 数据库名字
查询所有的数据库:show databases;
删除:drop database 数据库名字
修改数据库编码:alter database 数据库名字 character set=‘gbk’;
查看建库语句:show create database 数据库名字
切换库: use mydb;
查看库下面所有的表 show tables;
查看表结构 desc 表名;例如: desc student;
create table 表名(列名 数据类型,列名2 数据类型2(长度),…);
案例
# 目标 : 创建一个school数据库
# 创建学生表(列,字段)
# 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
# 创建表之前 , 一定要先选择数据库
CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '生日',
`address` varchar(100) DEFAULT NULL COMMENT '地址',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
#查看数据库的定义
show create databases sholl;
#查看数据表的定义
show create table sstudent;
#显示表结构
dese student;
#设置严格检查模式(不能容错了)
set sql_mode='STRICT_TRANS_TABLES';
插入数据:
insert into 表名 (把表头插进去,插入全部的话表头可以省略)value(‘值是字符串类型的话就用单引号引起来’,double类型的要一致,timestamp’可以指定格式’/null(默认));
删除表中的所有行:
delete from 表名;
truncate table 表名;
条件删除
delete from 表名 表名 where name=’'zhangsan;
delete from student where name=‘zhangsan’ and birthday=‘2019-08-21 15:44:12’
delete from student where name=‘zhangsan’ or name=‘wangwu2’ or name=‘wangwu3’;
修改表中的数据:
(全部改成一样的)
update 表名 set 字段名=‘新值’,set 字段名=‘新值’ …
(有针对性的改)
update 表名 set 字段名=‘新值’ , 字段名=‘新值’ … where 字段名=‘旧值’ and 字段名=‘旧值’;
无条件查询
条件查询 where
=、!=、<>(不等于)、<、<=、>、>=;
BETWEEN…AND; 在什么范围之间
IN(set);
IS NULL;为空
IS NOT NULL 不为空
AND; 并且
OR; 或者
NOT;非
通配符: _ 匹配单个任意字符
比如: 我要查询姓名是3个任意字符组成的
select * from student sname like=’___’;(三个下划线)
例如:我要查询第二个字符是m的
select * from student where sanme like ‘_m%’;
**%**匹配多个任意字符
例如:我要查询名字中包含m的 select * from student where sname like ‘%m%’;
例如我要查询名字是a开头的 select * from student where sname like ‘a%’;
例如我要查询名字是b结尾的 select * from student wher like ‘%b’;
按工资从大到小进行排序
selete * from student order by 工资 asc;
按照工资从小到大进行排序
selete * from student order by 工资 desc;
如果出现多条重复的工资,可以指定第二条排序
selete * from student order by 工资 desc ,奖金desc;
概念:我们可以做纵向运算的函数
COUNT():统计个数的.统计不为null的记录的行数
select count (sid) from student; 或者select count (*) from student;
MAX():指定某列的最大值,如果是字符串的话就按照字符串的排运算
查询工资最大
selete max(工资) as 最高工资 from student;
MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
例如 查询 最少工资 select min(工资) as 最小工资 from student;
SUM():计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;
例如 计算总工资 select sum(工资) as 总支出 from student;
SUM():计算指定列的数值和,如果指 定列类型不是数值类型,那么计算结果为0;
例如 计算总工资 select sum(工资) as 总支出 from student;
AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
例如:计算平均 工资 select avg(工资) as 平均工资 from student;
limit 0,5,10…
开始记录索引,每个索引显示的条数 (索引都是从0开始)
开始记录索引=(页码-1)*每一页显示的条数
例如:显示第一页,每页显示5条记录:
selete * from student limit 0,5;这是第一页的5条记录
selete * from student limit 1,5,这是第二页的5条记录
selete * from student limit 2,5这是第三页的5条记录