卸载1.停止MySQL服务net stop mysql启动MySQL服务net start mysql2.卸载MySQL服务3.找到MySQL安装目录下的my.inidatadir“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 rootlocalhost password(‘shapolang’);上面例子将用户root的密码更改为shapolang 重新登录输入新密码shapolang就ok了3.停止MySQL服务 运行输入services.msc停止MySQL服务 或者 cmd下输入net stop mysql4.在cmd下 输入mysqld --skip-grant-tables启动服务器,光标不动5.新打开cmd 输入mysql -u root -p use mysql;不需要密码update user set passwordpassword(‘abc’)WHERE User‘root’;关闭cmd窗口,在任务管理器结束mysqld进程在服务管理页面重启MySQL服务—密码修改完成创建数据库的格式create table 表的名字 数据名字1 数据类型数据名字2 数据类型数据名字… //用逗号隔开结束别忘了写结束常用的数据类型int整型 double浮点型 例如double(5,2)表示最多5位其中必须有2位小数即最大值为999.99char固定长度字符串类型 char(10) aaa ’ 占10位varchar可变长度字符串类型varchar(10) ‘aaa’ 占3为 text字符串类型blob字节类型date日期类型格式为yyyy-MM-ddtime时间类型格式为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_clientgbk;Set character_set_resultsgbk;表默认为中文修改方式1.找到安装目录下的my.ini文件2.把文中的utf8默认修改为gbk[mysql]default-character-setgbk3.重启把sort表中的goods列改为中文alter table sort change goods goods varchar(50) character set utf8;1. 查看mysql系统的编码格式在命令窗口界面使用命令show variables like ‘char%’;可以看到server\client\database\connection等变量的编码格式修改服务器的编码格式在mysql安装目录的bin目录下找到my.ini在[mysqld] 下添加 character_set_server utf8重启mysql修改数据库的编码格式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 salary5000;将name为’zhang’的salary修改为3000元,gender改为female:UPDATE emp2 SET salary3000,genderfemale’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 age20 AND age40;或者 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字段时那么会出现重复记录那么想去除重复记录需要使用DISTINCTSELECT DISTINCT name FROM emp2;查看表中的age与id值相加之和SELECT *,ageid FROM emp2;若id为空则 SELECT *,salIFNULL(id,0) FROM emp2;在上面查询中出现列名为salIFNULL(id,0)这很不美观现在我们给这一列给出一个别名为totalSELECT *, salIFNULL(id,0) AS total FROM emp2;给列起别名时是可以省略AS关键字的SELECT *,salIFNULL(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()计算指定列的数值和如果指定列类型不是数值类型那么计算结果为0AVG()计算指定列的平均值如果指定列类型不是数值类型那么计算结果为0例如查询emp2表中记录数 SELECT COUNT() AS cnt FROM emp2;查询emp表中有age的人数SELECT COUNT(age) cnt FROM emp2;查询emp表中age大于20的人数 SELECT COUNT()FROM emp2 where age20;分组查询凡和聚合函数同时出现的列名则一定要写在group by 之后例如查询每个列的name和name中salary大于3000工资的人数select name,count(*) from emp2 where salary3000 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.field1table2.field2//例子SELECT title,name,description FROMnewscateINNER JOIN news on newscate.news_idnews.id;2.LEFT JOIN 左关联查询left前面的表示主表后面是附表//这里主表会显示附表没有的值会null//例子 select a.*, b.description from news as a LEFT JOIN newscate as bon a.idb.news_id;3.RIGHT JOIN右关联查询类似于左关联SELECT a.title,a.name,b.* from news as a RIGHT JOIN newscate as b ona.idb.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_numberu. user_id LEFT JOINcollege c ON c.subject_numbers.subject_id;。 。 。 可继续添加下面三个表分别是table1表、table2表、table3表**目标查询A公司的所有30岁以下员工的名字。employee_id company_id1 1012 1013 102company_id company_name101 A102 Bemployee_id employee_name employee_age1 李云 352 张飞 233 高丽 25SELECT employee_name FROM (table3 c LEFT JOIN TABLE1 a ONc.employee_ida.employee_id ) LEFT JOIN table2 b ONb.company_ida.company_id WHERE company_name ‘A’ andemployee_age30;