mysql5.7

下载地址:https://dev.mysql.com/downloads/

默认下载社区服务器,这是5.7版本的html

服务端:

配置在文件目录 中新建一个my.ini的文件,代码以下,把其中的两处工做路径改成本身的按照路径便可。

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=D:\Mylargeprogram\Mysql\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Mylargeprogram\Mysql\mysql-8.0.12-winx64\data
# 容许最大链接数
max_connections=200
# 容许链接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 建立新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端链接服务端时默认使用的端口
port=3306
default-character-set=utf8
my.ini

 

执行 mysqld --initialize-insecure 指令进行配置,安装路径会默认生成一个data文件夹

 cmd下启动    要管理员权限mysql

mysqld -install     安装MySQL服务sql

net start mysql    启动MySQL数据库

 

 

 

客户端:服务器

  mysql -uroot -p   u后面是用户名app

 

 登陆成功数据库设计

 

   表示空的表ide

 

 

可视化工具Navicat百度网盘

 

 https://pan.baidu.com/s/1bpo5mqj函数

 

删除数据库工具

DROP DATABASE [IF EXISTS] 数据库名;

例如:删除school数据库

 

IF EXISTS 为可选,判断是否存在,若是不存在则会抛出异常

删除数据表

DROP TABLE [IF EXISTS] 表名;

例如:删除student表

 

注意:删除具备主外键关系的表时,要先删子表(从表),后删主表

删除表中字段

ALTER TABLE 表名 DROP 字段名;

例如:删除student表中的email列

 

删除数据

DELETE FROM 表名 [WHERE 条件(列名=值)];

例如:删除student表中成绩小于60的数据

 

删除表中的数据,能够指定条件,若是不指定条件,则删除该表的全部数据

TRUNCATE TABLE 表名;

例如:清空student表中数据

 

清空表中的数据,TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名;

ALTER TABLE 表名 DROP INDEX 索引名(与外键名相同);

例如:删除student表中的外键

 

MySQL在建立一个键为外键后,会自动生成一个与外键名字相同的外键的索引,因此删外键时,须要把自动生成的索引也删掉


SQL执行顺序

第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY 分组
第四步:执行SELECT 投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY排序

1、建立、删除库

-- 建立新数据库 
CREATE DATABASE 数据库名; 
-- 删除数据库 
DROP DATABASE 数据库名;

2、增长

一、添加列名、设置主键、设置自动增加列

primary key表示当前列为主键列,不能重复,不能为空
out_increment表示当前列为自动增加列,由DBMS分配该列的值,能够保证不重复
CREATE TABLE t_user(
    id INT PRIMARY KEY AUTO_INCREMENT, -- 编号 
    userName VARCHAR(20),-- 用户名 
    birthday DATE,-- 生日 
    tel CHAR(11),-- 电话
    -- 枚举类型,该列的值只能取男和女 
    sex ENUM('男','女'),
    -- 性别 -- 最后一列不能加“,”。 
    money INT -- 帐户余额 
);

2.添加行(新增记录)

①若是添加多条信息,中间用","分割。VALUES只用写一次,写在表头和表值之间。
②若是列名和列的值不写,则默认添加为空(null), 若是数据库设计时存在默认值,则为添加默认值。——2019/11/09更新,感谢评论纠正。
INSERT INTO t_user(表头1,表头2) values(值1,值2); 
例如: 
INSERT INTO t_user(userName,pwd,birthday,tel,sex,money) 
VALUES ('张无忌','123','1980-05-09','13948577789','男',2000); 
例如: 
INSERT INTO t_student(userName,pwd,birthday,tel,sex) 
VALUES('张勇','111','1998-01-01','13112341234','男');

3.添加列(维护经常使用)

-- t_student:表名;address:表头。 
ALTER TABLE t_student ADD address VARCHAR(50);

3、删除

1.删除表

-- t_user:表名 
DROP TABLE t_user;

2.删除列

-- t_student:表名;userAddress:列名 
ALTER TABLE t_student DROP COLUMN userAddress;

3.删除行(记录)

-- 若是不加where 后面的条件则所有删除。 
DELETE FROM t_user WHERE id=2;

4、修改

一、修改列

修改列的值必须与修改后的类型相符,若是修改列的值为null,则能够改成任意类型。若是修改列的值类型为varchar,最长为20,则修改后的类型必须为char类型,长度不能低于20。
ALTER TABLE t_student CHANGE address userAddress VARCHAR(100);

二、修改值

UPDATE t_product SET 修改列名=修改后新值 WHERE id=1; 
-- 修改,将张无忌的密码修改成333,工资修改成2500 
UPDATE t_user SET pwd='333',money='2500' WHERE userName='张无忌';

5、查询

一、查询表中全部数据

*表示显示全部的列,也能够指定显示列的列表,中间用","分割。

SELECT * FROM t_user; 
-- 例如(显示姓名和工资列): 
select userName,money from t_user

二、查询返回限定行

第一个参数为起始记录数,从0开始,第二个参数为显示记录数

-- MySQL语法
SELECT * FROM t_student LIMIT 0,3;

三、查询空值null

null不能用=,只能用is null 或 is not null

SELECT *FROM t_student WHERE money IS NULL;

四、查询多条信息(or/in)

-- 查询张三和李四的信息 
SELECT * FROM t_student WHERE userName='张三' OR userName='李四'; 
SELECT * FROM t_student WHERE userName IN('张三','李四');

五、模糊查询(_或%)

-- 查询姓李的二个字的员工 
SELECT * FROM t_student WHERE userName LIKE '李_'; 
-- 查询出全部商品名包括“糕”的商品的信息 
SELECT * FROM t_product WHERE productName LIKE '%糕%';

六、查询多条件+显示部分(LIMIT)

-- 查询前5条价格在100-1000的酒类商品 (MySQL语法)
SELECT * FROM t_product WHERE productType='酒类' AND price>=100 AND price<=1000 LIMIT 0,5 ;

七、查询去除重复的类名(distinct)

-- 查询全部的性别,distinct 表示去除重复记录 
SELECT DISTINCT sex FROM t_student;

八、查询排序显示(ORDER BY)

-- 按员工工资排序,默认为升序ASC,降序须要加上DESC。 
-- 工资相同,按年龄大小排序。 
SELECT * FROM t_student ORDER BY money DESC,birthday;

九、查询当前日期

select curdate() from 表名

6、判断语句

一、单分支条件判断

if(条件,返回值1,返回值2)
 -- 例如: 
select s.*,if(grade>=60,'合格','不合格')appraise from t_students;

二、多分支条件判断

(case 
when 条件1 then 返回值1 
when 条件2 then 返回值2 
else 返回值3 END) 
-- 例子1(选择显示): 
SELECT p.*,(CASE 
            WHEN money<5000 THEN '低薪阶层' 
            WHEN money>=5000 AND money<=10000 THEN '中薪阶层' 
            WHEN money>10000 THEN '高薪阶层' 
            ELSE '实习生' END) grade FROM t_student p; 
-- 例子2(选择添加): 
UPDATE t_product SET price =price+(CASE 
                                    WHEN productType='药品类' THEN 5 
                                    WHEN productType='食品类' THEN 2 
                                    WHEN productType='酒类' THEN 100 END);

7、聚合函数的运用

-- 学生成绩表 
CREATE TABLE t_grade( 
    id INT PRIMARY KEY AUTO_INCREMENT,-- id 主键 
    sname VARCHAR(20),-- 学生姓名 
    sex ENUM('男','女'),-- 学生性别 
    className VARCHAR(20),-- 学生班级 
    grade INT -- 学生成绩 
);

a.统计学生的人数

-- count(*)只要是记录都要统计。count(列名)只统计非空列。 
SELECT COUNT(*) '学生总人数', COUNT(grade)'参考人数' FROM t_grade;

b.统计学生的总分、平均分、最高分、最低分

-- avg求平均分,也只统计非空列 
SELECT SUM(grade) ,AVG(grade),SUM(grade)/COUNT(*), MAX(grade),MIN(grade) FROM t_grade

c.统计每一个班的人数

SELECT className,COUNT(*) num FROM t_grade GROUP BY className;

d.统计每一个班的总分和平均分

SELECT className,SUM(grade)'总分',SUM(grade)/COUNT(*) '平均分' FROM t_grade GROUP BY className;

8、having运用

-- 列出班级人数小于等于3我的的班级 
SELECT className,COUNT(*) FROM t_grade GROUP BY className HAVING COUNT(*)<=3; 
-- 列出班级总分大于300分的班级 
SELECT className,SUM(grade) FROM t_grade GROUP BY className HAVING SUM(grade)>300;

9、复制表

create table 新表名 select * from 原表名;

10、where与if条件连用

WHERE  IF(条件,  true执行条件, false执行条件 )
select * from sys_user where if(id<10,name='zhangsan',name='lisi')
相关文章
相关标签/搜索