mySQL常用操作密令,仅作笔记查询使用

卸载:
1.停止MySQL服务: net stop mysql 启动MySQL服务:net start mysql
2.卸载MySQL服务
3.找到MySQL安装目录下的my.ini
datadir=“C:/ProgramData/MySQL/MySQL Server 5.5/Data”
运行:
1.cmd打开:mysql -u root -p 之后输入密码
2.修改mysql root用户密码:
格式:mysql> set password for 用户名@localhost = password(‘新密码’);
例子:mysql> set password for root@localhost = password(‘shapolang’); 上面例子将用户root的密码更改为shapolang ; 重新登录,输入新密码shapolang就ok了;
3.停止MySQL服务 运行输入services.msc 停止MySQL服务
或者 cmd下输入 net stop mysql
4.在cmd下 输入mysqld --skip-grant-tables 启动服务器 光标不动
5.新打开cmd 输入mysql -u root -p use mysql; 不需要密码
update user set password=password(‘abc’)WHERE User=‘root’;
关闭cmd窗口 在任务管理器结束mysqld进程,在服务管理页面重启MySQL服 务—密码修改完成

创建数据库的格式:
create table 表的名字(
数据名字1 数据类型,数据名字2 数据类型,数据名字…
); //用逗号,隔开,结束别忘了写;结束

常用的数据类型
int:整型
double:浮点型,
例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型;
char(10) 'aaa ’ 占10位
varchar:可变长度字符串类型; varchar(10) ‘aaa’ 占3为
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

==================================================================
操作数据库、表、列等:
关键字:create、alter、drop
创建数据库密令
create database mydb1;
create database mydb2 character set gbk;
create datebase mydb3 character set gbk collate gbk_chinese_ci;
查询密令:
show databases; 查看当前数据库服务器中的所有数据库
show create database mydb2;查看mydb2数据库的定义信息
drop database mydb3;删除mydb3数据库
修改密令:
alter database mydb2 character set utf8;
查看服务器中的数据库,并把mydb2的字符集修改为utf8;
select database(); 查看当前使用的数据库
use mydb2; 切换到mydb2数据库
Show variables like ‘character%’;查看数据库编码的具体信息
临时更改客户端和服务器结果集的编码,用于数据中文的展示
Set character_set_client=gbk;
Set character_set_results=gbk;
表默认为中文修改方式
1.找到安装目录下的my.ini文件
2.把文中的utf8默认修改为gbk:
[mysql]
default-character-set=gbk
3.重启
把sort表中的goods列改为中文:
alter table sort change goods goods varchar(50) character set utf8;

1. 查看mysql系统的编码格式
在命令窗口界面使用命令:show variables like ‘char%’;
可以看到server\client\database\connection等变量的编码格式

  1. 修改服务器的编码格式
    在mysql安装目录的bin目录下找到my.ini,在[mysqld] 下添加 character_set_server = utf8,重启mysql

  2. 修改数据库的编码格式
    alter database 数据库名 character set utf8;


emp2为表的名字
查看表的字段信息:desc emp2;
在表的基础上新增加一个number列:alter table emp2 add number blob;
修改某一列如number,使其长度为60:
alter table emp2 modify number varchar(60);
删除某一列如number,但一次只能删一列:
alter table emp2 drop number;
修改表的名字为emp22: rename table emp2 to emp22;
查看表格emp2的创建细节:show create table emp2;
修改表的字符集为gbk: alter table emp2 character set gbk;
列名如name修改为rrname:
alter table emp2 change name rrname varchar(100);
删除表:drop table emp2;

查询表中的数据(DML操作)密令:
对数据进行增删改操作:insert、update、delete
emp2为表的名字
查询表中的所有数据 : select*from emp2;

插入操作密令:insert 注意:列名与列值的类型、个数、顺序要一一对应。
例如:
create table emp2(id int,name varchar(100),gender varchar(10),
birthday date,salary float(10,2),entry_date date,resume text);
对表进行插入操作:
insert into emp2(id,name,gender,birthday,salary,entry_date,resume)
VALUES(1,‘zhang’,‘female’,‘2020-5-10’,10000,‘2020-5-5’,‘good girl’);
insert into emp2(id,name,gender,birthday,salary,entry_date,resume)
VALUES(2,‘lisi’,‘male’,‘2020-5-10’,10000,‘2020-5-5’,‘good boy’);
或者便捷点:
直接这样写:insert into emp2 values(2,‘lisi’,‘male’,
‘2020-5-10’,10000,‘2020-5-5’,‘good boy’);
修改操作密令:update
例如:
将salary修改为5000元: UPDATE emp2 SET salary=5000;
将name为’zhang’的salary修改为3000元,gender改为female:
UPDATE emp2 SET salary=3000,gender='female’WHERE name=‘zhang’;

删除操作密令:delete
删除表中名称为’zhang’的记录:DELETE FROM emp2 WHERE name=‘zhang’;
删除表中所有记录:DELETE FROM emp2;
使用truncate删除表中记录:TRUNCATE TABLE emp2;
注意:
DELETE 删除表中的数据,表结构还在;删除后的数据可以找回
TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。
删除的数据不能找回。执行速度比DELETE快。

数据查询密令(DQL操作)
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。 查询关键字:SELECT
语法: SELECT 列名 FROM表名

查询所有列:SELECT * FROM stu;
查询指定列:SELECT id, name, age FROM stu;

模糊查询:
查询姓名中第2个字母为“i”的name记录
SELECT * FROM stu WHERE name LIKE ‘_i%’;
注意:这个是想查name第几位为i的名字,前面可用空格什么的代替
上面的太麻烦。。。
或者直接全部进行模糊查询:
查询姓名中包含“a”字母的学生记录
SELECT * FROM stu WHERE name LIKE ‘%a%’;

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
=、!=、<>、<、<=、>、>=;

BETWEEN…AND; IN(set); IS NULL; AND; OR; NOT;

查询age在20到40之间的记录
SELECT *FROM stu WHERE age>=20 AND age<=40;
或者
SELECT *FROM stu WHERE age BETWEEN 20 AND 40;

查询性别非男的学生记录
SELECT *FROM stu WHERE gender!=‘male’;
或者
SELECT *FROM stu WHERE gender<>‘male’;
或者
SELECT *FROM stu WHERE NOT gender=‘male’;

去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如emp2表中name字段存在相同的记录。当只查询emp2表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:
SELECT DISTINCT name FROM emp2;
查看表中的age与id值相加之和
SELECT *,age+id FROM emp2;
若id为空:则 SELECT *,sal+IFNULL(id,0) FROM emp2;

在上面查询中出现列名为sal+IFNULL(id,0),这很不美观,现在我们给这一列给出一个别名,为total:
SELECT *, sal+IFNULL(id,0) AS total FROM emp2;
给列起别名时,是可以省略AS关键字的:
SELECT *,sal+IFNULL(id,0) total FROM emp2;
排序:
查询所有emp2记录,按年龄age升序排序 asc为升序 desc为降序
SELECT *FROM emp2 order by age asc;
或者 降序操作:
SELECT *FROM emp2 order by age desc;

查询所有emp2,按age降序排序,如果age相同时,按编号升序排序
SELECT * FROM emp2 order by age desc,emp2 no asc;

聚合函数:sum avg max min count
聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

例如:
查询emp2表中记录数:
SELECT COUNT() AS cnt FROM emp2;
查询emp表中有age的人数:
SELECT COUNT(age) cnt FROM emp2;
查询emp表中age大于20的人数:
SELECT COUNT(
)FROM emp2 where age>20;

分组查询:凡和聚合函数同时出现的列名,则一定要写在group by 之后
例如:查询每个列的name和name中salary大于3000工资的人数:
select name,count(*) from emp2 where salary>3000 group by name;

HAVING子句:
查询工资总和大于9000的name以及salary工资和:
SELECT name, SUM(salary)FROM emp2 GROUP BY name
HAVING SUM(salary) > 9000;

注:having与where的区别:
1.having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT用来限定查询结果的起始行,以及总行数。
查询5行记录,起始行从0开始
SELECT * FROM emp2 LIMIT 0, 5;
注意,起始行从0开始,即第一行开始!

2表查询

//概念,只要两表有公共的字段有匹配之,就可以将两表中的记录组合起来。
//这里的表newscate和news表的公共字段就是news_id和news表的id。
1.INNER JOIN ===就是两个表的相同部分的集合,也就是说把这两个表的相同内容变成一个新的表,然后显示出来 语法: select 字段 from table1 inner join table2 on table1.field1=table2.field2;

//例子:
SELECT title,name,description FROM newscate INNER JOIN news on newscate.news_id=news.id;

2.LEFT JOIN 左关联查询,left前面的表示主表,后面是附表,
//这里,主表会显示,附表没有的值会null
//例子:
select a.*, b.description from news as a LEFT JOIN newscate as b on a.id=b.news_id;
3.RIGHT JOIN
右关联查询,类似于左关联,
SELECT a.title,a.name,b.* from news as a RIGHT JOIN newscate as b on a.id=b.news_id;

三表关联查询

select
u.user_id,u.user_name,u.user_sex,c.college_name,s.subject_name,s.achievement from user u LEFT JOIN subject s ON s.user_number=u. user_id LEFT JOIN college c ON c.subject_number=s.subject_id; 。 。 。 可继续添加

下面三个表分别是:table1表、table2表、table3表

目标:查询A公司的所有30岁以下员工的名字。

employee_id company_id
1 101
2 101
3 102

company_id company_name
101 A
102 B

employee_id employee_name employee_age
1 李云 35
2 张飞 23
3 高丽 25

SELECT employee_name
FROM (table3 c LEFT JOIN TABLE1 a
ON c.employee_id=a.employee_id )
LEFT JOIN table2 b ON b.company_id=a.company_id
WHERE company_name =‘A’ and employee_age<30;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值