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')
相關文章
相關標籤/搜索