2020-07-10

最全的數(shù)據(jù)庫常用語法命令

/*
按住 Ctrl , 滑動(dòng)滾輪 上滑 放大 下滑縮小

三種注釋方式
多行注釋 : /**/

單行注釋
    #
    -- 

1,sql語句可以單行書寫,也可以多行書寫 , 以分號結(jié)尾;
2,可以使用tab 或者 空格進(jìn)行縮進(jìn) , 增強(qiáng)sql語句的可讀性
3,sql不區(qū)分大小寫,但是自定義的標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫
4,在sqlyog中,默認(rèn)關(guān)鍵字是大寫,一般自己定義的標(biāo)識(shí)符小寫
5,執(zhí)行sql語句 :
選中要執(zhí)行的sql語句 , 點(diǎn)擊執(zhí)行, 快捷鍵 F9
*/

單行注釋1

-- 單行注釋2

show databases;

/*
數(shù)據(jù)定義語言 DDL 之?dāng)?shù)據(jù)庫操作

*/
-- 1,顯示所有的數(shù)據(jù)庫 顯示 show databases;
SHOW DATABASES;

-- 2,創(chuàng)建一個(gè)數(shù)據(jù)庫 創(chuàng)建 create database 數(shù)據(jù)庫名;
CREATE DATABASE db1;
-- 3,查看當(dāng)前使用的數(shù)據(jù)庫的版本號 select version();
SELECT VERSION();
-- 4,使用數(shù)據(jù)庫 / 切換數(shù)據(jù)庫 使用 db1 使用 use
USE db1;
-- 使用MySQL數(shù)據(jù)庫
USE mysql;

-- 5,查看當(dāng)前數(shù)據(jù)庫中所有的表 表 -> tables
SHOW TABLES;

-- 6,在當(dāng)前數(shù)據(jù)庫中查看其他數(shù)據(jù)庫中的表
SHOW TABLES FROM mysql;

-- 7,查看當(dāng)前正在使用的數(shù)據(jù)庫 select databases();
SELECT DATABASE();

-- 8,查看數(shù)據(jù)庫的建表語句 show
SHOW CREATE DATABASE db1;

-- 9,在創(chuàng)建數(shù)據(jù)庫時(shí),指定數(shù)據(jù)庫的編碼集 utf8 gbk
CREATE DATABASE db2 DEFAULT CHARSET gbk;
-- 如果沒有指定字符集 ,則會(huì)使用創(chuàng)建MySQL服務(wù)時(shí)設(shè)定的默認(rèn)的編碼集;

-- 10,刪除數(shù)據(jù)庫 刪除 drop database db2;
DROP DATABASE db2;

/*
DDL 之表操作
表的創(chuàng)建 , 刪除 , 表結(jié)構(gòu)的修改
創(chuàng)建 表
create table 表名(
字段名1 字段類型1 約束1,
字段名2 字段類型2 約束2,
字段名3 字段類型3 約束3,
...
字段名n 字段類型n 約束n
//最后一個(gè)字段不需要加 , 加了報(bào)錯(cuò)
);

創(chuàng)建一個(gè)學(xué)生成績表 student

使用tab 鍵補(bǔ)全單詞

sql 中常用的數(shù)據(jù)類型
整數(shù) int
字符 varchar(字符的長度)
小數(shù) double
日期 date
*/
CREATE TABLE student(
sid INT ,
sname VARCHAR(100),
s_sex VARCHAR(1),
score DOUBLE
);

-- 創(chuàng)建表之前先檢查是否存在 , 不存在才創(chuàng)建
CREATE TABLE IF NOT EXISTS teacher(
tid INT,
tname VARCHAR(100),
t_sex VARCHAR(1)
) DEFAULT CHARSET gbk;

-- 查看表的結(jié)構(gòu) , 就是表的字段以及類型和約束等
DESC teacher;
-- field 字段 表頭的名稱
-- type 字段的類型

-- 查看建表語句 show create table 表名
SHOW CREATE TABLE teacher;

-- 刪除表 刪除 drop drop table 表名
DROP TABLE teacher;

-- 添加一個(gè)字段 總分 添加字段實(shí)際上修改了表的結(jié)構(gòu) alter 修改 改變
ALTER TABLE student ADD sum_score DOUBLE;

-- 查看student的結(jié)構(gòu)
DESC student;

-- 修改現(xiàn)在字段的字段類型 modify 修改
ALTER TABLE student MODIFY score INT;

-- sex -> gender 性別
-- 修改現(xiàn)有字段的名稱 change 改變
ALTER TABLE student CHANGE s_sex s_gender VARCHAR(1);

-- 刪除表中的一個(gè)字段 drop
ALTER TABLE student DROP score;

-- 修改表的名稱
RENAME TABLE student TO new_student;
-- 只可以修改表的名稱 , 不可以修改數(shù)據(jù)庫的名稱
-- 修改表的編碼集
ALTER TABLE new_student CHARSET gbk;
CREATE DATABASE stu_db DEFAULT CHARSET gbk;
USE stu_db;
CREATE TABLE IF NOT EXISTS student(
sid INT,
sname VARCHAR(100),
s_sex VARCHAR(1),
birthday DATE,
chinese DOUBLE,
math DOUBLE,
english DOUBLE
);
ALTER TABLE student ADD sum_score DOUBLE;
-- 查看表結(jié)構(gòu)
DESC student;
ALTER TABLE student CHANGE s_sex s_gender VARCHAR(1);
ALTER TABLE student MODIFY sum_score INT;

ALTER TABLE student DROP s_gender;
RENAME TABLE student TO new_student;

DROP TABLE new_student;

/*
數(shù)據(jù)庫之DML : 數(shù)據(jù)操作語言
對數(shù)據(jù)庫中的表進(jìn)行操作
表數(shù)據(jù)的增加 -> 增
表數(shù)據(jù)的刪除 -> 刪
表數(shù)據(jù)的修改 -> 改
*/

/*
王者榮耀 英雄表

hero_list
編號 hid int
hname varchar
htype varchar(4)
hgender varchar(1)

*/
CREATE TABLE hero_list(
hero_id INT,
hero_name VARCHAR(5),
hero_type VARCHAR(4),
hero_gender VARCHAR(1),
hero_hurt DOUBLE
);

-- 向hero_list增加數(shù)據(jù) 插入 insert into 表名 (字段) values(字段值)
/*
增加數(shù)據(jù)的注意事項(xiàng)
1,傳值時(shí),傳入的值得順序要和字段的順序一致
2,傳值時(shí),傳入的數(shù)據(jù)類型要和對應(yīng)的字段的數(shù)據(jù)類型一致
3,傳值時(shí),除了數(shù)值類型以外,其他類型都需要引號包裹,單雙引號都可以
4,給某一字段傳入空值,(1),可以直接不寫該字段 (2)給字段傳入 null
5,一次增加多條記錄,注意 賦值時(shí), 使用的時(shí)value 不是values , 多條記錄之間使用, 分隔;
*/
INSERT INTO hero_list(hero_id,hero_name,hero_type,hero_gender,hero_hurt)
VALUES(10001,"亞瑟","戰(zhàn)士","男",3000.0);

INSERT INTO hero_list(hero_name,hero_type,hero_gender,hero_hurt,hero_id)
VALUES("妲己","法師","女",4000.0,10002);

INSERT INTO hero_list(hero_name,hero_type,hero_hurt,hero_id)
VALUES("盾山","輔助",500.0,10003);

INSERT INTO hero_list(hero_name,hero_type,hero_gender,hero_hurt,hero_id)
VALUES("魯班","射手",NULL,4000.0,10008);

INSERT INTO hero_list(hero_id,hero_name,hero_type,hero_gender,hero_hurt)
VALUE
(10005,"孫悟空","刺客","男",5000.0),
(10006,"鏡","刺客","女",3500.0),
(10007,"魯班大師","輔助","男",1000.0);

-- 更新 修改表中的數(shù)據(jù) update set 一般情況下, 增加限定的條件 where
-- 一次修改多條件記錄, 多條記錄之間使用 or 拼接
-- 如果不加限定的條件, 會(huì)將整列結(jié)果設(shè)置為指定值
UPDATE hero_list SET hero_gender = '男' WHERE hero_name = '盾山';

UPDATE hero_list SET hero_gender = '女' WHERE hero_name = '鏡' OR hero_name = '妲己';

UPDATE hero_list SET hero_gender = '男';

-- 刪除表中的記錄 delete 刪除 from
-- 刪除一條記錄使用范圍條件限定 where

-- 刪除多條記錄 使用 or 拼接
-- 逐條刪除全部記錄 , 不接限定條件就是刪除全部

DELETE FROM hero_list WHERE hero_name = '魯班大師';
DELETE FROM hero_list WHERE hero_name = '魯班' OR hero_name = '盾山' OR hero_name = '孫悟空';

-- 刪除表中的所有的數(shù)據(jù)
DELETE FROM hero_list;

-- 刪除表中所有的數(shù)據(jù)方式2 : truncate 截?cái)?刪除
TRUNCATE TABLE hero_list;

/*
delete from 與 truncate 刪除表數(shù)據(jù)的區(qū)別
delete from 刪除數(shù)據(jù)時(shí) , 逐條刪除
truncate 直接刪除整個(gè)表 ,相當(dāng)于 drop table hero_list , 然后新建一個(gè)空表

如果數(shù)據(jù)量較大, truncate 效率較高
*/

/*
數(shù)據(jù)庫之DQL : 數(shù)據(jù)庫查詢語言 Q query 查詢
從數(shù)據(jù)庫的表中查找記錄

select 選擇 字段 from 表名 限定條件
*/
SELECT ename,job FROM employee;

-- 使用* 代替所得字段
SELECT * FROM employee;

-- 使用where 限定
-- 查找所有 部門編號為10 的員工
SELECT * FROM employee WHERE deptno = 10;

-- 查找所有的工作為文員的員工
SELECT * FROM employee WHERE job = '文員';

-- 在查詢時(shí) , 給查詢的字段起別名 as 作為 , as 可以省略, 需要加一個(gè)空格 ename 員工名稱
SELECT empno 員工編號 , ename AS 員工姓名 , sal 工資 FROM employee;
-- 臨時(shí)視圖 臨時(shí)表 , -> 由源數(shù)據(jù)表查詢出結(jié)果以后拼接而成;

-- 去出重復(fù)數(shù)據(jù) distinct
-- 可以對多個(gè)字段同時(shí)去重, 去重時(shí), 去重的效果是多個(gè)字段拼接以后的結(jié)果
-- 注意 distinct要寫在所有的字段前面
SELECT DISTINCT ename , job FROM employee;

-- ifnull 如果值是空 ,使用指定值替換 最終工資 = 基本工資 + 績效

-- 為每個(gè)員工的工資加1000 sal + 1000
-- 在sql中數(shù)值+ 數(shù)值 可以正常運(yùn)算
-- 數(shù)值+ 字符串 , 如果字符可以轉(zhuǎn)換為數(shù)值,可以正常運(yùn)算, 如果不可以轉(zhuǎn)換, 結(jié)果為原數(shù)值
-- 數(shù)值+ null = null
SELECT ename 員工姓名 , sal+IFNULL(comm,100) 最終工資 FROM employee;

-- 拼接字符串
-- 自述 :我的編號是1001,我的姓名是甘寧,我的工作室文員 , 我的 工資是8000;
SELECT CONCAT("我的編號是",empno,",我的姓名是",ename,",我的工作是",job,",我的工資是",sal) FROM employee;

-- 使用限定的邏輯表達(dá)
/*
工資 >10000 < 20000

與  and   英文表示 between and 在...之間 包頭包尾 相當(dāng)于 >= <=
或   or   in(10,20)
非   not

> < >= <=   <> 不等于
<=> 等于 用于和 null 做比較
和null   is null 是null  is not null 不是 null

like 像  用于模糊查詢
    % 任意個(gè)
    _ 一個(gè)

*/
SELECT * FROM employee WHERE sal >= 10000 AND sal <= 20000;
SELECT * FROM employee WHERE sal BETWEEN 10000 AND 20000;

-- 查找所有部門編號為10 或者20 的員工
SELECT * FROM employee WHERE deptno = 10 OR deptno = 20;

SELECT * FROM employee WHERE deptno IN(10,20,30);
-- 查找所有績效為null的員工 not null
SELECT * FROM employee WHERE NOT(comm <=> NULL);
SELECT * FROM employee WHERE comm IS NOT NULL;

-- 查找 所有部門編號不等于10 的員工
SELECT * FROM employee WHERE deptno <> 10;

-- 查找除所有的姓張的員工
SELECT * FROM employee WHERE ename LIKE "張%"

-- 查找除所有的姓張, 并且名字為兩個(gè)字的員工

SELECT * FROM employee WHERE ename LIKE "張_"

-- 查找除所有名字是三個(gè)字的員工

SELECT * FROM employee WHERE ename LIKE "___"

-- 查找出 名字中包含 一 的員工
-- %一%
SELECT * FROM employee WHERE ename LIKE "%一%";

-- 查找出 名字中間的字為 一 ,并且名字是三個(gè)字的員工

SELECT * FROM employee WHERE ename LIKE "";

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容