sql -------- mysql ---->免费开源的关系
3W1H(what?why?when?how?)
1、什么是数据库?DB
数据库(database)数据存储的仓库,简称DB
DBMS(databaseManagers)数据库管理的软件
2、为什么学习数据库?
方便存储使用数据
3、数据库在软件开发的地位?
数据存储层
4、安装MySQL
|-- window:
1、使用压缩包安装需要把bin配置到环境变量path 注意解压路径不能包含特殊字符和中文
2、以管理员身份打开cmd 切换盘符到 文件解压的那个盘符下 指令:盘符:
3、
此时是已经安装过mysql了4、重启 net start mysql
5、mysql -h(ip地址) -p(端口=3306) -u(用户) -p(密码)
6、配置my.ini文件中的basedir 和 datadir
|-- Linux
1、sudo apt install mysql --server mysql cilent
2、安装路径: /user/sbin 配置路径:/etc
3、查看进程 ps -ef | grep mysql
安装ssh 指令 apt install openssh-server
which 应用名称 查看安装路径
Linux下远程连接MySQL:
1、修改mysql库中user表中的host字段,有localhost %
2、修改/etc/mysql/mysql.conf.d/mysqld.cnf文件
3、重启mysql
启动mysql的四个参数 -h主机(默认localhost) -P端口(默认3306) -u用户 -p密码
mysql在linux下是默认关闭远程连接的(安全)开启远程连接
update mysql.user set host='%' where user="root"
linux将配置文件中mysql.cnf文件 /etc/mysql/mysql.conf.d/mysql.cnf bind-address 注释掉
重启mysql sudo service restart mysql ps -ef |grep mysql
5、简单的MySQL的操作
常见的DDL语句
show databases 查看所有数据库
show databasescreate database db_py 创建db_py数据库
drop databse databaseName 删除数据库
use db_py 使用db_py数据库
show tables 查看当前数据库下的表(还没有创建表)
创建表
删除表 drop table tableName
drop table if exists 表名称 truncate [table] 表名称(删除后不可恢复) delete from 表名(删除后有办法恢复)
desc tableName; 查看表结构
6 Mysql的数据类型整数
int 浮点数 float decimal 字符串 char varchar 文本类型 text
日期 data(只能表示年月日)、time (只能表示时分秒)、datatime(年月日时分秒)
binary 二进制 布尔 bit
7、Mysql的创建、删除、授权用户(DBA)
grant all[select,update,drop,create] on *.* to ‘用户名称’@’地址’ identified by 密码
如: grant all on db_py1710.* to ‘cmt’@’%’ identified by ‘cmtt’
删除用户 use mysql Delete from user where user=‘cmt’ and host=‘%’
8、数据库的备份
mysqldump 命令
mysqldump –u root –p dbname > 保存路径.sql
mysqldump –u root –p db_bbs > d:/db_bbs.bak.sql
[将数据库db_bbs以脚本的形式保存到D盘]
将sql脚本还原为数据库
mysql –u root –p dbname < 保存路径
9、sql(CRUD 增删改查)
插入一条数据 insert into tableName(字段1,字段2,,,) values(值1,值2,,,)
insert into t_stu values(null,'laowang',36);
insert into t_py1712 values(uuid(),'laowang',36);
新建一个表主键id设置为字符串类型 可以使用uuid()select * from tableName;
删除一条数据 delete from tableName where 条件;
修改数据 update tableName set 字段1=‘’,字段2=‘’,,, where 条件
update t_py1712 set name='xiaoming' where age = 18;
修改表结构 alter
alter table t_py1712 add className varchar(10) not null; 增加一个字段
alter table t_py1712 drop className; 删除字段
alter table t_py1712 modify column age int default 18 not null; 修改字段
查询select
select name from t_py1712;
1、条件查询
关系运行符 > 、< 、=、>=、<= 、!=或者<>表示不等于
where 查询
select * from t_py1712 where age > 23;
select * from t_py1712 where age in(23,20);
select * from t_py1712 where age between 20 and 30;
and select * from t_py1712 where name='zhangsan' and age >21;
or select * from t_py1712 where name='zhangsan' or age=21;
is select * from t_py1712 where name is null;
is not null select * from t_py1712 where name is not null;
聚合函数 sum select sum(age) from t_py1712;
select max(age) from t_py1712;
select min(age) from t_py1712;
select avg(age) from t_py1712;
select count(age) from t_py1712; 统计这个表的总记录数
as重命名 select name as n from t_py1712 as t_py;
模糊查询 like :
select * from t_py1712 where name like 'l%';
select * from t_py1712 where name like '%o%';
select * from t_py1712 where name like '_i%';
排序 order by select* from 表名 where 条件 order by 字段名称 [asc|desc]
select * from t_py1712 where name like '%' order by age;
分组 group by 查询部门员工的男女数量 SELECT sex, COUNT(*) from `user` GROUP BY sex
Having 筛选
SELECT age,COUNT(age) from stu GROUP BY age HAVING COUNT(age)>1;
having 是分组后的筛选
去重 distinct select distinct 字段 from 表名;
select distinct sex from t_py1712;
Limit 分页显示
Select * from users limit 0,10 #查询前十条数据
Select * from users limit (pageNow -1)*pageSize, pageSize
select * from t_py1712 limit 0,3;
外键 foreign key 完成外键的约束
CONSTRAINT FOREIGN key(新表的字段) REFERENCES 主表(引用字段)
子查询 将一个查询结果作为条件的一部分写入到第二个sql中
如 姓名为zs的用户的部门名称: Select deptname from dept where deptid = (select deptid from emp where empname = ‘zs’)
多表关联—连接查询
内连接查询(inner join) 等值查询 不等值查询 外连接查询(outer join) 左外连接(left join)
右外连接(right join) 自然连接 交叉连接(cross join) # 笛卡尔积 自连接
字符串函数
length、char_length、trim、substring、ascii、concat、upper、replace
select length((select name from t_py1712 where age = 22));
数学函数
ceil、floot、round、mod、sin、cos、sqrt
1、format(x,y) 函数,功能是将一个数字x,保留y位小数,并且整数部分用逗号分隔千分位,小数部分进行四舍五入。
2、abs(); 求一个数的绝对值;absolute
3、sqrt();求一个数的平方根。sqrt是sqruar(平方,矩形) ,root(根)的缩写。 select sqrt(9); ==3
4、mod(x,y) x除数,y被除数。结束是余数。select mod(10,3);===1
5、ceil() 进一取整。 select ceil(5.1); ===6
floor()舍一取整 select floor(5.3);===5
这两个函数是镜子函数,比较有点意思。这两个函数并不进行四舍五入,比较强硬。
6、rand() 顾名思义,是用来生成随机数用的。select rand();
8、truncate(x,y) 比较霸道,不管四舍五入,直接把x,的y位小数直接干掉。 select truncate(1233.154585,3);==1233.154
9、sign() 返回当前结果得符号,如果是负数返回-1,如果是0 返回0 如果是正数,返回1.
10、power() 幂运算 select power(5,3);===125
select ceil(5.1);日期函数
Year、month、week、curdate、curtime、date_format str_to_date、now
SELECT DATE_FORMAT(CURDATE(),'%Y年%m月%d日')
表与表之间的关联关系: 在一对一的关联关系中,外键加在那个表中都行。 1:n n:1 n:n