博客 / 詳情

返回

SQL常用語句(基礎)大全

SQL語句的類型

  • 1.DDL
    • 1.庫
  • 2.表
  • 2.DML
    • 1.插入數據 insert inot
  • 2.刪除數據 delete / truncate
  • 3.修改數據 update set
  • 3.DQL
    • 1.無條件查詢
  • 2.查詢 什麼開始 到什麼結束
  • 3.指定條件查詢
    • 1.單個條件 ro in
  • 2.多個條件 and
  • 4.查詢不為NULL值 is not null ,為NULL值 is null
  • 5.模糊查詢 like
  • 6.去除重複記錄查詢 distinct
  • 7.排序查詢 order by
    • 1.單條件
  • 2.多條件
  • 8.聚合函數
    • 1.計算和 sum
  • 2.計算最大值 max
  • 3.計算最小值 min
  • 4.計算平均值 avg
  • 5.計算個數 count
  • 9.分組查詢 group by
  • 10.分頁查詢
  • 11.內連接查詢
  • 12.外連接查詢​
  • 13.子查詢
  • 4.DCL
    • 1.管理用户
    • 1.添加用户
  • 2.刪除用户
  • 3.修改密碼
  • 4.查詢所有用户
  • 2.權限管理
    • 1.權限管理
  • 2.授予權限
  • 3.撤銷權限

1.DDL

DDL是數據定義語言,主要是對數據庫和數據表的操作

1.庫

--創建庫
create database 庫名;
--創建庫時判斷庫是否存在,不存在則創建
create database if not exists 庫名;
--查看所有數據庫
show databases;
--使用指定數據庫
use 庫名;
--查看當前指定數據庫包含的數據表
show tables;
--查看數據庫的結構定義信息
show create database 庫名;
--刪除數據庫
drop database 庫名;
--修改數據庫的字符集為utf8
alter database 庫名 character set utf8;

2.表

--創建表
create table 表名(
字段1 類型1,
字段2 類型2,
字段3 類型3,
...........
);
--查看錶結構
desc 表名;
--查看創建表的SQL語句
show create table 表名;
--修改表名
alter table 表名 rename to 新的表名;
--添加一個新的字段
alter table 表名 add 字段; 字段類型;
--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;
--修改字段類型(注意類型修改前後數據是否兼容)
alter table 表名 modify column 字段名 新的字段類型;
--刪除一個字段
alter table 表名 drop 字段名;
--刪除表
drop table 表名;
--刪除表時判斷表是否存在,若存在則刪除
drop table if exists 表名;

2.DML

DML是數據操作語言,主要是對數據表的操作

1.插入數據 insert inot

--有多少個字段,就要寫多少個值一一對應的
insert into 表名 values(值1,值2,值3...值n);
--此方法需要寫出所有字段,並一一對應插入值
insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);

2.刪除數據 delete / truncate

--刪除表中所有數據
delete from 表名;
--刪除表中指定的數據
delete from 表名 where 字段 = 值;
--刪除表中所有數據(先刪除整張表,然後創建一張一樣的空表,此方法更高效)
truncate table 表名;

3.修改數據 update set

--無限制條件的修改,會修改整張表
update 表名 set 字段 = 值;
--有限制條件的修改,只修改特定數據
update 表名 set 字段 = 值 where 條件(字段 = 值);

3.DQL

DQL是數據查詢語言,主要就是select配合其他限制條件的關鍵字進行查詢

1.無條件查詢

--查詢表中所有數據
select *from 表名;

2.查詢 什麼開始 到什麼結束

--查詢users表中年齡在18~30歲之間的記錄
--方式1 between..and..
select * from users where age between 18 and 30;
--方式2 &&
select * from users where age>=18 && age<=30;
--方式3 and
select * from users where age>=18 and age<=30;

3.指定條件查詢

1.單個條件 ro in

--查詢users表中年齡為18,20,30歲的記錄
--方式1 or
select *from users where age=18 or age=20 or age=30;
--方式2 in
select *from users where age in(18,20,30);

2.多個條件 and

--查詢users表中年齡為17,性別為男,名字為王冬的記錄
select * from users where age=17 and sex='男' and name='王冬';

4.查詢不為NULL值 is not null ,為NULL值 is null

--查詢users表中序號不為空的記錄
select * from users where id is not null;
--查詢user表中序號為空的記錄
select *from users where id is null;

5.模糊查詢 like

--查詢users表中姓名第一個字為李的記錄
select *from users where name like '李%';

--查詢users表中姓名第二個字為李的記錄
select *from users where name like '_李%';

--查詢users表中姓名含有李字的記錄
select *from users where name like '%李%';

--查詢users表中姓名是兩個字的記錄
select *from users where name like '__';

6.去除重複記錄查詢 distinct

--查詢users表中所在城市不相同的記錄
--select distinct 字段 from 表名;

select distinct city from users;

7.排序查詢 order by

1.單條件
--查詢users表中記錄,並以年齡升序排序
select * from users order by age; 默認升序

--查詢users表中記錄,並以年齡降序排序 desc降序
select * from users
order by age desc;
2.多條件

只有當第一個排序條件值一樣,才會執行第二個排序條件

--查詢users表中記錄,並體育成績降序,年齡降序
select *from users order by PE desc,age desc;

8.聚合函數

1.計算和 sum
select sum(字段) as sum from 表名;
2.計算最大值 max
select max(字段) as max from 表名;
3.計算最小值 min
select min(字段) as min from 表名;
4.計算平均值 avg
select avg(字段) as avg from 表名;
5.計算個數 count
select count(字段) as count from 表名;

9.分組查詢 group by

--查詢users表中的記錄,按照性別分組,查詢男,女的考試成績平均分

select sex,avg(result) from users group by sex;

--查詢users表中的記錄,按照性別分組,分別查詢男、女的考試成績平均分,人數

select sex, avg(result),count(id) from users group by sex;

--查詢users表中的記錄, 按照性別分組,分別查詢男、女的成績成績平均分,人數 要求:分數低於60分的人,不參與分組
select sex, avg(result),count(id) from users where result> 60 group by sex;

--查詢users表中的記錄,按照性別分組,分別查詢男、女的考試成績平均分,人數 要求:分數低於60分的人,不參與分組,分組之後,人數要大於2個人

select sex,avg(result),count(id) from users where result > 60 group by sex having count(id)>2;

10.分頁查詢

--查詢users表中的前10行條記錄
select * from users limit 10;
--查詢users表中第2~11條記錄 (從第5條記錄開始累加10條記錄)
select * from users limit 4,10;
--查詢users表中第5~17條記錄 (從第5條記錄開始累加13條記錄)
select * from users limit 4,13;

11.內連接查詢

如果查詢數據的來源來自多張表,則必須對這些表進行連接查詢

--語法1 (隱式內連接)
select 字段1,字段2...
from 表1,表2...
where 過濾條件;

--語法2 (顯式內連接)
select 字段1,字段2...
from 表1 inner join 表2 ...
on 過濾條件;

12.外連接查詢​

左外連接:是表1和表2的交集再並上表1的其他數據

右外連接:是表1和表2的交集再並上表2的其他數據

--左外連接
select 字段1,字段2..
from 表1 left (outer) join 表2 on 過濾條件;
--右外連接
select 字段1,字段2..
from 表1 right (outer) join 表2 on 過濾條件;

13.子查詢

查詢語句中嵌套查詢語句

-- 查詢最大的年齡,左邊條件是什麼右邊必須返回一樣的
select * from user where age=(select max(age) from user);

4.DCL

數據控制語言:用來授權或回收訪問數據庫的某種特權,並控制數據庫操縱事務發生的時間及效果,能夠對數據庫進行監視

1.管理用户

1.添加用户

create user '用户名'@'主機名' identified by '密碼';

2.刪除用户

drop user '用户名'@'主機名';

3.修改密碼

USE mysql;
UPDATE USER SET PASSWORD=PASSWORD(‘密碼’) WHERE User=’用户名’ and Host=’IP’;
FLUSH PRIVILEGES;
--將root的密碼改為root
update user set password=password('root') where user='root' and host=’localhost’;
FLUSH PRIVILEGES;

4.查詢所有用户

-- 查詢用户
-- 1、切換到mysql數據庫
USE mysql;
-- 2、查詢user表
SELECT *FROM USER;

2.權限管理

1.權限管理

show grants for '用户名'@'主機名';

2.授予權限

--語法
grant 權限列表 on 數據庫名.表名 to '用户名'@'主機名';

--授予faker用户所有權限,在任意數據庫任意表上
grant all on *.* to 'faker'@'localhost';

3.撤銷權限

--語法
revoke 權限列表 on 數據庫名.表名 from '用户名'@'主機名';
--撤銷faker用户對tests數據庫中city數據表的權限
revoke update on tests.city from 'faker'@'localhost';

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.