广州39期肖岸滨 发表于 2022-3-5 21:17:18

mysql

yum install mysql -y ===》安装MySQL的客户端yum install mysql -server -y ===》安装mysql的服务器离线安装:通过rpm 命令进行安装mysql的rpm包rpm -ivh +对应的rpm包文件-i:安装文件包v:可视化,可以提供更多的安装信息h:显示安装进度rom -pa |grep ‘mysql’rpm -qa:显示当前linux显示已经安装的第三方工具 (色F思)service mysqld (四剁特)start ==》启动mysqld服务service mysqld stop ==》停止mysqld服务service mysqld status ==》查看mysqld的状态service mysqld restart ==》重启mysql数据库一次登陆mysql不用密码:mysql -uroot -p退出三种方式:quit, exit, Ctrl+c设置mysql数据库的密码:mysqladmin -uroot password “123456”设置密码后的两种方式:一种是明文密码:mysql -uroot -p123456一种是密文密码:mysql -uroot -p show databases;这是一条SQL语句show表示=》展示 查看dstabase表示=》数据库databases表示=》 复数的形式,查看当前所有的数据库(信息模式)information-schema是 mysql的的基础信息库,定义mysql中其他表的信息的,不能删mysql是mysql的管理库,管理MySQL数据库系统中的用户和权限,不能删(他屎特)test是mysql的测试库,可以删,但是自己创建的数据库不能以test开头,否则程序识别不了 SQL语句---》只能在mysql的数据库操作系统中执行的mysql>每一条SQL语句都是以英文的 ‘;’结尾的(搜)show dstabases;==》查看所有的数据库(郁热)use +库名; ==》进入对应的库中进行操作show (帖模式)tables;==》查看对应库中所有的表 create database +库名; ==》创建xxx库(数据库) (斯雷特)select (得特备思)database(); ==>查看当前操作哪个库 create table 表名(字段1 字段属性,字段2 字段属性,);===》创建表,命名为xx,里面包含xx1字段属性是xxxcreate table grade(id int(10) primary key auto_increment,name varchar(20) not null,score float(20,2),phone bigint(20) default 17688889999,timr date);常见的数据类型:int:整型,整数数字只能保存4个字节的数字-2^31~+2^31(-2147483647~2147483647)0000 0000 0000 0000 0000 0000 0000 0000当需要保存超过10位数的整数需要使用bigintbigint:大整型,整数数字,可以保存最大8个字节的数字浮点数:float:保存小数4个字节double:保存小数8个字节字符串:char:定长字符串,固定占255个字节,性能会更好些,但是不节省资源varchar:可变长字符串,占0~2^16字节,性能稍微差,但是节省资源日期:date保存日期,固定格式YYYY-MM-DD常见的约束:primary key:主键约束,特点:表中主键字段的值不能为空,主键字段的值不能重复(列如上学时,班上的同学姓名可能重复,但是学号是唯一而且必要的)not null:非空约束(必须要填的)default:默认值约束(字段)auto_increment:自增长约束,只能在主键字段使用,而且只能是数据类型为整型的取使用,列如不输入id时,直接跟着原来最大的id+1desc +表名;==》查看表结构 修改表结构的操作:alter tablealter table test rename test1; -修改表 test表 里命名为test1alter table test1 rename test; =修改表 test1表 重命名为test slter table test change id sid int(4); ==> 修改表 test表 改变 id字段 为sid字段,属性为int(4),并取消自增长约束 alter table test change sid sid int(4) auto_increment; ==>给sid字段添加自增长约束 alter table test add class int(4); ==> 修改表 test表 增长class字段,属性为int(5)- - 默认曾加在最后 alter table test add sex varchar(5) first; ==>修改表 也属于表增加sex字段,属性为varchar(5)放在第一位(first) alter table test add age int(4) after name; ==>修改表 test表 增加age字段,属性为int(4)放在name字段后面 alter table test drop sex; ==>修改表 test表 丢弃sex字段 alter table test drop age,drop class; ==>修改表 test表 丢弃age字段,丢弃class字段 alter table test add(age int(4),class int(4)); ==>修改表 test表 增加 age字段和class字段 alter table test change age age int(4) after name; ==>修改表 test表 改变age字段为age字段属性为int(4) 放在name字段后面 alter table test modify class bigint(8) after sid; ==>修改表 test表 修改class字段属性为bigint(8) 放在sid字段后面 change和modify的区别:两者都是可以改变表结构,但是使用change时字段是要写两次的,modify则只要写一次就行。change可以对字段名进行重命名,modify则不行删除主键因为一张表中最多只要一个主键,使用可以直接通过drop primary key的方式进行删除mysql> alter table test drop primary key;ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key直接执行删除主键时,报错,因为这个主键字段还有自增长约束,自增长约束必须依赖主键约束,所以删除主键之前要先删除自增长约束1,先删自增长:alter table test modify sid int(4);2,再删主键约束:alter table test drop primary key; 添加主键:方式一:alter table test add primary key(sid);方式二:alter table test change sid sid int(4) primary key; 增删改查查--select(斯莱塔)select * from 表; ==>查询 所有字段的值 来源 哪张表 查----查询,selecrselecr *from 表; ==查询 所有字段(*)的值来自于 xx表;select sid,name,class,age from test; 条件查询先接whereselect *from emp where name=‘李四’; 不等于 != <> (null是不参与等于或者不等于,大小匹配的)select name,incoming from emp where dept2!=101;select name,dept2 from emp where dept2 <> '101'; 多条件查询and条件:要求两边同时满足select *from emp where dept2=101 and incoming=3500;or条件:以or为分界,两边只要满足一个select *from emp where dept2=101 or incoming=7500; null值的匹配select *from test where score is null;select * from test where score is not null; 大于小于的匹配select *from test where age >19 and age <=28;between。。and。。:介于,是包含着等于的闭区间select *from test where age between 19 and 28; in与not in(与or有点类似)select *from test where age in (18,20,28);select *from test where age not in (18,20,28); 增---(樱色特)insert (英特)into方式一:要求表的字段不多,对表结构要熟悉1,插入的值的数量必须要跟字段数量一致2,值的格式必须要一一对应上字段要求的格式insert int 表名 values (字段1的值,字段2的值,字段3的值,....),(字段1的值,字段2的值,字段3的值,....)
方式二:对指定字段插入数据insert into 表名(字段4,字段2,字段1) values(字段4的值,字段2的值,字段1的值),(字段4的值,字段2的值,字段1的值);字符串和日期类型的数据插入必须要加英文的成对引号
NULL和 ' ':NULL是完全的不占系统空间,' '是占系统一个字节0的空间删除表:(座普)drop table +表名; ==》删除表 xx表删除库:drop database +库名 ==》删除库 xx库linux的模糊匹配符: ’ * ‘ ’ ?‘但是在mysql中*号和?有其他作用mysql中的模糊匹配符: ‘%’ ‘ _ '’ % ‘:匹配0个或者多个字符’ _ ‘ 匹配一个字符
模糊匹配:likeselect * from test where name like '%m%';select * from test where name like 'xiao__';select * from test where time like '2022%'select *from test where age like '2%';
查询限定的数据---分页查询 limit,只能放在最后面select *from test limit 0,3;select *from test where age is not null limit 0,4;

排序order by如果结合limit使用,那么limit也是放在后面asc是升序,desc是降序select *from test order by age asc;
select *from test order by time desc;
select *from test where time is not null order by time asc limit 3; ==》先做where条件过滤,在做order by排序,最后做limit限定查询

select *from test order by phone desc,age asc; ==》对多个字段同时排序,谁在前谁优先级更高

分组 group by注意:分组查询要查询指定的字段,对什么进行地址就查询什么字段,因为分组之后,只有分组字段可以正常匹配,其他非分组是随机出现(一般是表中第一条)1,分组查询要查询指定的字段,对什么进行分组就查询什么字段,因为分组之后,只有分组字段可以正常匹配,其他非分组字段(普通字段)是随机出现(一般是表中第一条)2,使用group by 分组之后,进行条件过滤,是不能使用where ,where条件要写在group by 之前3,如果希望在group by分组之后进行条件过滤,则使用having(作用类似where,但是只能用在group by之后)4,group by分组一般是结合 聚合函数使用,where条件是不能接聚合函数,having才可以接聚合函数select dept2 from emp group by dept2;
select dept2,avg(incoming) from emp group by dept2;select dept2,avg(incoming) from emp group by dept2 having avg(incoming)>6000;
select dept2,avg(incoming) from emp group by dept2 having dept2!=103;
select dept2,avg(incoming) from emp where dept2!=103 group by dept2;
聚合函数:count()统计select count(*)from 表; ==》统计表中行数select count(1)from 表; ==》统计表中行数
select count(字段名) from 表; ==》统计表中对应字段有多少条数据sum() 求和select sum(incoming) from emp; ==》对表中某个字段进行求和,求emp表的总收入avg() 平均值select avg(incoming) from emp;max() 最大值select max(incoming) from emp;min() 最小值select min(incoming) from emp;

SQL中是可以进行四则运算的:(as 可以对字段进行取别名,目的让结果输出的字段名不那么长)select (max(incoming)-min(incoming))*100 as '乱来的' from emp;
distinct() 去重复 去重select distinct(phone) from test;
改--(阿得)update。。。(瑟)setupdate test set class=2239;
update test set name=’dcs39‘,age=38,score=100,time=‘20220301’ where sid=5;
删---delete delete from test where sid = 258;==》按照条件删除指定数据delete from 表;==》不限定条件删除表中数据,可以清空表中内容


备份:备份表==》直接在数据库中操作的1先备份表结构create table 新表 like 旧表;2,再备份表数据(把整张表的数据进行备份)insert into 新表 select *from 旧表备份整个库(整个库中所有的表格结构和表数据)==》在linux中mysql相关的指令进行1,备份数据库---mysqldumpmysqldump -uroot -p123456 需要备份的库 > ./脚本文件.sqlmysqldump -uroot -p123456 dcs39 > ./mysqldcs39.sql2,还原备份的SQL脚本文件(必须要有对应的库)mysql -uroot -p123456 必须在mysql里面的一个库 < ./脚本文件.sqlmysql -uroot -p123456 dcs40 < ./mysqldcs39.sql


题目:求每个部门年龄最小的人是谁?第一步:要先求每个部门及对
面试题:char和varchar的区别:两者都是保存字符串,char是定长的(大概在255个字节),varchar是可变长的(大约是0~2^16个字节)char查询性能会更好一些,但是不节约磁盘的资源,varchar性能差点,却节省资源面试题:珠海工行必问SQL题现在有个科目表,里面注意两个字段:姓名,科目求 表中选择科目大于两个科目的学生姓名select 姓名 from 表 group by 姓名 having count(科目)>2;面试题:mysql中删除数据有多少种方式?1:(格丽)delete:可以根据条件删除指定数据,如果不接条件删除时,可以清空表中数据,但是重新插入数据时,自增长字段还是会在原来最大值基础上进行积累递增。(只删除表中数据,保留表结构,没有释放空间)2,truncate:truncate +表名; ==》直接清空表中数据,不能接条件删除指定数据。保留表结构,重新插入数据时,自增长会重新从1开始(清空表中数据并释放空间,保留表结构)3,(座普)drop table +表名; ==》删除整张表,删除数据,表定义也被删除(释放空间)作业:1,查询1832班的成绩信息,
2,查询1833班,语文成绩大于80小于90的成绩信息
3,查询学生表中5到10行的数据
4,显示学生1832班英语成绩为98,数学成绩为77的姓名与学号
5,查询出1832班成绩并且按语文成绩排序(降序)
6,查询1833班与1832班,语文成绩与数学成绩都小于80的学生
7,查询出没有参加语文考试的学生姓名和班级名称
8,求出班上语文成绩不及格的学生姓名
9,求出每个班的数学平均成绩
10,求出每个班级语文成绩总分 --涉及到每个的时候都需要分组
11,将语文成绩不及格的学生成绩改为60分
12,三科分数都大于70分的人名和年纪
13,求出英语分数高于70且其他任何一科大于60分的人和班级
14,统计每个班的人数
15,求每个班数学成绩大于80的人数
16,求出每个班英语成绩最高的那个人的姓名的班级名称 --每个班英语成绩
mysql数据库的权限操作;必须要进入mysql库中==》 use mysql;查看当前mysql中有什么操作用户;select host,user,password from user;通过插入user表数据的方式来创建用户(一般不使用的,因为要重复赋予权限)insert into user(host,user,password) values('localhost','dcs39',password('123456'));密码的插入需要使用password()函数进行加密

对数据库中任何的权限操作都要使用 进行权限刷新增加权限:grant insert,delete,update,select,create on *.* to 'dcs39'@'localhost' identified by '123456', ==》赋予insertdelete,update,select,create权限在所有的库里面的所有的表给在本地网络位置的dcs39用户密码是123456
权限刷新:flush privileges;


创建mysql 用户可以直接通过 grant 的方式进行;grabt all privileges on *.* to 'root'@'%' identified by '123456'; ==> 赋予所有的权限 在所有的库里面的所有的表 给远程网络权限(%)的root用户 密码是123456
show grants for 'root'@'%'; ==> 查看指定用户的权限情况revoke all on *.* from '用户'@'网络位置‘; ==> 取消所有权限update mysql.user set password=password('123457') where host='localhost' and user='dcs39'; ==> 修改 ’dcs39‘@’licalhost‘的密码删除用户:通过delete from mysql.user where host='网络位置’ and user='用户名';----------------------------------Navicat --一个连接数库的图形化工具 收费的,业内很多公司也是用破解版DBeaver --跟Navicat类似的工具,免费的通过Navicat新建mysql数据库服务器的步骤;1,通过Navicat新建mysql连接(只要建立一次)1),填写服务器的ip地址2)填写在mysql中创建有%权限的mysql用户2,关闭linux的防火墙(service iptables stop)==每次都要做的3,要确保服务器中的mysqld服务已开启
页: [1]
查看完整版本: mysql