SQL概述
結構化查詢語言(Structured Query Language)簡稱 SQL,是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係數據庫系統,同時也是數據庫腳本文件的擴展名。
SQL 是 1986 年 10 月由美國國家標準局(ANSI)通過的數據庫語言美國標準,接着,國際標準化組織(ISO)頒佈了 SQL正式國際標準。1989 年 4 月,ISO 提出了具有完整性特徵的 SQL89 標準,1992年 11 月又公佈了 SQL92 標準。
小提示: SQL語句對大小寫不敏感
SQL常用種類
DDL 數據定義語言
DCL 數據控制語言
DML 數據操作語言
DQL 數據查詢語言
DDL的應用
創建數據庫:
CREATE DATABASE zabbix CHARSET utf8mb4;
查看庫情況:
SHOW DATABASES;
SHOW CREATE DATABASE zabbix;
刪除數據庫:
DROP DATABASE zabbix;
修改數據庫字符集:
ALTER DATABASE zabbix CHARSET utf8mb4;
創建表:
CREATE TABLE stu (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT ‘學號’,
sname VARCHAR(255) NOT NULL COMMENT ‘姓名’,
age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT ‘年齡’,
gender ENUM(‘m’,‘f’,‘n’) NOT NULL DEFAULT ‘n’ COMMENT ‘性別’,
intime DATETIME NOT NULL DEFAULT NOW() COMMENT ‘入學時間’
)ENGINE INNODB CHARSET utf8mb4;
查看錶的結構:
多種方法:
desc stut;
explain zabbix.stu;
show columns from zabbix.stu;
show fields from zabbix.stu;
查看創建表執行了哪些命令:
show create table stu \G
創建一個表結構一樣的表:
CREATE TABLE test LIKE stu;
刪除表:
DROP TABLE test;
修改表名稱:
alter table zabbix rename newzbx;
修改表中的字段類型:
語法:alter table 表名 modify 要修改的字段名要修改的類型;
alter table students modify id int(10);
修改表中的字段類型和字段名稱:
語法:alter table 表名 change 原字段名新字段名新字段類型;
alter table students change name stname char(20);
在stu表中添加qq列:
ALTER TABLE stu ADD qq VARCHAR(20) NOT NULL COMMENT ‘qq號’;
ALTER TABLE stu ADD num INT NOT NULL UNIQUE COMMENT ‘身份證’ FIRST ;
ALTER TABLE stu ADD wechat VARCHAR(64) NOT NULL UNIQUE COMMENT ‘微信號’ AFTER sname;
刪除id字段:
ALTER TABLE stu DROP id;
DCL應用
授權:
grant all on . to oldboy@‘10.0.0.%’ identified by ‘123’ with grant option;
with grant option:該用戶可以給其他人授權
all表示以下所有:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD,
SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT,
CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT,
TRIGGER, CREATE TABLESPACE
權限回收:
revoke 權限 on 庫.表 from 用戶;
DML應用
插入字段/記錄:
INSERT INTO stu(id,sname,age,sex,intime) VALUES (2,‘ls’,19,‘f’,NOW());
針對性的錄入數據:
INSERT INTO stu(sname,age,sex) VALUES (‘w5’,11,‘m’);
刪除記錄:
DELETE FROM stu WHERE id=9;(建議配合where條件使用)
更新記錄:
UPDATE stu SET sname=‘bb’ WHERE id=6;(建議配合where條件使用)
DQL應用
去重複查詢:
select distinct name,age from student;MySQL 的 distinct 可以對*使用
使用 and 和 or 進行多條件查詢: MySQL 查詢默認是不區分大小寫的,加binary可區分大小寫
select id,name,age from student where binary id>1 and age>24;
MySQL 查詢排序: 默認asc升序,desc降序
select distinct id from student order by id asc;
查詢端口:
select @@port;
select 通用語法(單表) :
select 列
from 表
where 條件
join 另一張表
on 表.列=另一張表.列
group by 條件
having 條件
order by 條件
limit 數字啊啥的 //limit Y offect X 跳過X行顯示Y行 //limit 3.3跳前3行顯示3行
union 和 union all
作用: 多個結果集合並查詢的功能
查詢中或者美國的城市信息:
SELECT * FROM city WHERE countrycode=‘CHN’ OR countrycode=‘USA’;
改寫爲:
SELECT * FROM city WHERE countrycode=‘CHN’
UNION ALL
SELECT * FROM city WHERE countrycode=‘USA’;
union 和 union all 的區別 ?
union all 不做去重複
union 會做去重操作