当前位置:网站首页>MySQL必須掌握4種語言!
MySQL必須掌握4種語言!
2022-06-26 02:15:00 【俊紅的數據分析之路】
本篇文章主要給大家介紹的是MySQL中常用的4種語言:

一、DDL
DDL,data defination language,指的是數據定義語言,其主要作用是創建數據庫,對庫錶的結構進行删除和修改等操作。
進入數據庫
mysql -uroot -p -- 使用這種方式,接下來需要輸入密碼。密碼是暗文
mysql -uroot -p123456 -- 可以直接將密碼123456放在參數p的後面,不安全參數解釋:
u:指定用戶
p:指定密碼

全部命令
1. 數據庫操作
show databases; // 顯示所有的數據庫
use school; // 使用school數據庫
create database school; // 創建數據庫
drop database school; // 删除某個數據庫
2. 錶操作
-- 創建錶
create table user(字段1,字段2,...,字段n);
-- 查看創建錶的SQL語句
show create table user;
-- 查看錶的結構
desc user;
-- 删除錶
drop table user;
-- 修改錶名
alter table user rename to users;數據庫操作
show databases; // 顯示所有的數據庫
use school; // 使用school數據庫
create database school; // 創建數據庫
drop database school; // 删除某個數據庫
mysql> show databases; // 顯示數據庫
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| peter |
| school |
| sys |
+--------------------+
6 rows in set (0.04 sec)
mysql> use school; // 選擇使用數據庫
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A錶操作
// 1、創建錶
create table user(字段1,
字段2,
...,
字段n
); // 最後的分號不能忘記
// 2、查看所有的錶
show tables;
// 3、查看錶的結構
desc user;
// 4、查看創建錶的SQL語句
show create table user;
// 5、删除錶
drop table user;
// 6、修改錶名
alter table user rename to users; # 錶名改為users;to可省略最後的分號不能忘記
mysql> use school; // 使用一個數據庫
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; // 查看數據庫下的所有錶
+------------------+
| Tables_in_school |
+------------------+
| course |
| score |
| student |
| teacher |
| total |
+------------------+
5 rows in set (0.00 sec)創建錶
主鍵
primary key和auto_increment必須連在一起使用書寫規範:每個字段的語句最好分行寫,容易檢查
最後的分號不能忘記
# 創建user錶:6種字段+1個主鍵
create table user( id int(10) unsigned not null auto_increment comment "user_id", //將id作為主鍵
name varchar(20) not null comment "user_name",
email varchar(50) not null comment "user_email",
age tinyint unsigned not null comment "user_age",
fee decimal(10,2) not null default 0.00 comment "user_fee",
createTime timestamp not null comment "user_time",
primary key(id)
); // 記得分號
查看錶結構
mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.02 sec)查看創建錶的SQL語句
show create table user;
字段操作
關鍵詞是alter,先選中需要操作的錶。
modify:修改change:改變名字add:添加字段
默認是末尾
指定比特置添加
// 修改字段信息
alter table user modify name varchar(50) not null; # 將字段name 從20改為50個字符
// 修改字段名字
alter table user change email user_email varchar(50) not null; # 將email改成user_email
// 末尾添加字段
alter table user add password char(30) not null comment "user_password"; # 增加password字段
// 指定比特置添加字段
alter table user add password1 char(30) not null comment "user_password1" after user_name; # 在name後面增加password1字段
// 删除字段
alter table user drop password1; #删除字段password1
// 原來的錶格信息
mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)
# 修改字段信息
mysql> alter table user modify name varchar(50);
# 修改字段名字
mysql> alter table user change email user_email varchar(50) not null;
# 添加字段,末尾
mysql> alter table user add password char(30) not null comment "user_password";
# 指定比特置添加字段
mysql> alter table user add password1 char(30) not null comment "user_password1" after name;
mysql> desc user;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| password1 | char(30) | NO | | NULL | |
| user_email | varchar(50) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | NULL | |
| fee | decimal(10,2) | NO | | 0.00 | |
| createTime | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| password | char(30) | NO | | NULL | |
+------------+---------------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.00 sec)二、DML
DML,data manipulation language,指的是數據操作語言。主要是對數據庫中的錶記錄進行操作的語言,包含往錶中插入數據、錶中數據的更新、錶的删除等
錶中插入數據
錶中數據更新
删除錶
錶中插入數據
-- 將字段名和字段的值一一對應起來,可以只插入部分字段
-- 省略了id和createtime字段
mysql> insert into user(
name,
email,
age,
fee,
password)
values("xiaoming",
"[email protected]",
20,
56.56,
Password("xiaoming") // 密碼這裏要用函數Password()
);
-- 包含所有字段信息
insert into user values(10, "nanan", "[email protected]", 38, 89.19, 2019-10-02, Password("nanan"));字符串字段必須用引號括起來
密碼需要使用函數
Password()語句末尾加分號
利用只插入部分字段
可以省去字段名,此時需要加上
id,而且必須填寫所有的字段信息,不能只添加部分數據

數據更新
數據更新update使用最多的是where語句,指定某個條件下執行;如果不加where,則所有的字段都會被更改(慎重)
指定
id號指定字段的具體值
字段允許有多個,用逗號隔開
mysql> update user set name="nangying" where id=6; // 通過id指定
mysql> update user set fee=88.76 where fee=56.90; // 通過字段名直接指定
mysql> update user set email="[email protected]", age=54 where id=7; // 同時修改多個值
mysql> update user set fee=88.88 where id in(2,4,6); // in的用法
mysql> update user set fee=66.66 where id between 2 and 6; // between ... and ...删除
删除錶有兩種情况:
delete:删除錶,插入數據從上一次結束的id號開始繼續插入;删除的記錄仍存在truncate:清空錶,重新插入數據id從1開始;不占內存空間
delete table user;
truncate table user;删除
delete錶中的某條記錄
delete from user where id=7; // 删除記錄
insert into user (name,email,age,fee,password) values("lisi","[email protected]", 36, 81.17, Password("lisi")); // id是從原來的基礎上遞增

關於truncate
# 删除數據
mysql> truncate table user;
Query OK, 0 rows affected (0.05 sec)
mysql> select * from user;
Empty set (0.00 sec)
# 重新插入數據
mysql> insert into user (user_name, user_email, user_age, password, fee) values ("peter", "[email protected]", 27, password("101010"), 28.87);
Query OK, 1 row affected, 2 warnings (0.01 sec)
mysql> select * from user;
+----+-----------+-----------------+----------+--------------------------------+-------+
| id | user_name | user_email | user_age | password | fee |
+----+-----------+-----------------+----------+--------------------------------+-------+
| 1 | peter | [email protected] | 27 | *C3BC3E91915DCAE22014892F9827D | 28.87 |
+----+-----------+-----------------+----------+--------------------------------+-------+
1 row in set (0.00 sec)三、DCL
data control language,DCL,指的是數據控制語言,主要是對數據庫中的登錄和用戶的權限進行控制的語言,包含
用戶登錄
MySQL數據庫修改用戶密碼及忘記密碼如何解决
創建普通用戶及授權
撤銷權限
revoke查看權限及删除用戶
全部命令
1. 查看數據庫中的用戶及信息
mysql -uroot -p
show databases;
use mysql;
show tables;
select user, host, passord from user; # 所有的用戶都在user錶中
2. 創建新用戶、授權、撤銷權限和删除
-- 創建
create user "test"@"192.168.2.10" identified by"password"; # 指定用戶test、ip和密碼password
flush privileges; # 刷新權限
mysql -utest -h192.168.2.10 -p # 用test用戶登錄
-- 授權
grant select, insert, delete on shop.* to "test"@"192.168.2.10"; # shop 是數據庫,test是數據庫中的錶
flush privileges; # 刷新權限
systemctl restart mysql; # 重啟mysql
-- 創建用戶的同時進行授權
grant select, insert, delete on shop.* to "test"@"192.168.2.10" identified by"password";
-- 查看權限
show grants for "test"@"192.168.2.10"\G # \G參數是為了輸出好看
-- 撤銷權限
revoke delete on shop.* to "test"@"192.168.2.10"; # 撤銷shop數據庫中test用戶的delete權限
flush privileges; # 刷新權限
systemctl restart mysql; # 重啟mysql
-- 删除用戶
drop user "test"@"192.168.2.10";
-- 謹慎操作
grant all privileges on *.* to "test"@"192.168.2.10" # 將所有的權限給所有數據庫
3. 修改用戶密碼
-- 已知用戶原密碼,能够進行登錄
mysql -uroot -p
show databases;
use mysql;
show tables;
select user, host, password from user; # 所有的用戶都在user錶中
update user set password=PASSWORD("123456admin") where user="test"; # 將test用戶的密碼改成123456admin
flush privileges;
-- 忘記原來的密碼:借助跳躍權限錶,重啟守護進程
mysql skip-grant-tables # 跳躍權限錶
mysql # 重新進入mysql
show databases;use mysql;show tables;
select user, host, password from user; # 所有的用戶都在user錶中
update user set password=PASSWORD("123456admin") where user="test"; # 將test用戶的密碼改成123456admin
flush privileges;
4. 查看mysql服務
-- window
直接去任務管理器
-- linux
netstat -an # 找到3306端口關於root賬戶
默認情况下,MySQL數據庫是指允許root賬戶登錄並且在本機上登錄的。
-uroot錶示root賬戶-p錶示需要密碼沒有
-h錶示默認是本機localhost或者127.0.0.1登錄

登錄查看賬戶
MySQL數據庫的服務端口號是3306,通過在mysql數據庫的user錶中查看登錄數據庫用戶信息:
mysql> show databases; # 查看所有的數據庫
mysql> use mysql; # 選擇mysql數據庫
mysql> show tables; # 查錶數據庫中的所有錶
mysql> select user, host from user; # 查看這個錶中的user和host信息
删除用戶
需要注意的是删除了某個用戶之後必須進行權限的刷新:
mysql> delete from user where host="%"; # 删除host為%的用戶
Query OK, 1 row affected (0.01 sec)
mysql> flush privileges; # 刷新權限
Query OK, 0 rows affected (0.00 sec)注意:當在實際的開發項目中,項目和數據庫服務器不在同一個地方,可以指定ip連接進行訪問
mysql> update user set host="192.168.1.10" where user="root";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select user,host from user;
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
當退出mysql重新進入,需要指定IP地址,就是上面設置的IP:

密碼問題
1、修改密碼
同樣需要進入mysql數據庫的user錶中
mysql>update user set password=PASSWORD("admin") where user="root"; # 將root賬戶的密碼改為admin
mysql> flush privileges; # 更新操作
Query OK, 0 rows affected (0.00 sec)2、忘記密碼
如果忘記了密碼,需要進入配置文件中
[email protected]:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf找到下圖中的
skip-grant-tables,將前面的#去掉,就是取消注釋:取消權限認證,後臺開啟新的進程免密進入MySQL
重啟
MySQL服務:systemctl restart mysql通過
MySQL直接進入:

然後按照上面的步驟重新設置密碼即可
mysql> show databases;
mysql> use mysql;
mysql> select user, password from user;
# 接下來重新設置密碼即可
四、DQL
DQL(data query language),指的是數據查詢語言,主要的作用是對數據庫中的數據進行查詢的操作,也是最常見和最重要的功能。
查詢的方法也是多種多樣:聯合查詢、分組查詢、內連查詢、子查詢等,還可以限制查詢的條數等,下面介紹幾種常見的查詢
格式:
select
column1,
column2,... # 需要查詢的字段
from table_name # 錶名
where 條件簡單查詢
select
name,
age
from user
where id=4;
where id in(1,3,5,7);
where name = "xiaoming";過濾查詢
過濾查詢的關鍵字是distinct,去掉字段中的重複值
-- 過濾重複字段
select distinct(password) from user; # password是重複項
select distinct password from user; # 括號可以不用
連接查詢
連接查詢的關鍵字是concat
直接使用系統默認的連接方式,將原來的字段通過下劃線進行連接
使用
concat...as...,as後面自己指定連接的新字段名帶上連接符號的查詢
concat_ws("+", 列名1,列名2);其中"+"就是指定連接符
select concat(name, email) from user; # 結果中顯示concat(name_email)
select concat(name, email) as nameEmail from user; # 將新的字段名用nameEmail來錶示


模糊查詢
模糊查詢的關鍵字是like,中文翻譯成像:
mysql> select user_name from student where user_name like "peter"; # 像peter
mysql> select user_name from student where user_name like "%e"; # %錶示任意,錶示名字以e結尾
mysql> select user_name from student where user_name like "%e%"; # 錶示名字中含有e排序查詢
對錶中的記錄進行昇序asc或者降序desc的排列,默認的是昇序asc,同時需要使用order by關鍵字:
昇序:
asc,默認情况降序:
desc
select * from student order by user_age asc; # 年齡的昇序
select * from student order by user_age desc; # 年齡的降序
聚合函數
select count(*) from student; # 總記錄
select sum(列名) from student; # 總和
select avg(列名) from student; # 平均值
select max/min(列名) from student; # 最大/小值限制查詢結果
限制查詢的條數使用的是limit關鍵字
直接使用
limit使用
limit ... offset ...:指定從哪裏開始顯示,顯示多少行簡寫:
limit 5, 4:錶示從第5行開始,顯示4行數據
select name, age from user limit 5; -- 只顯示5行數據
select name, age from user limit 5 offset 4; -- 從第4(offset)行開始顯示5(limit)行數據
select name, age from user limit 4, 5 ; -- 效果同上:逗號之前是offset的內容,逗號之後是limit內容- END -边栏推荐
- How to use commands to write file names (including paths) in folders to txt files
- Simplex method (1)
- Shell learning record (II)
- Breadth first traversal based on adjacency matrix
- 如何使用命令将文件夹中的文件名(包括路径)写入到txt文件中
- SDRAM controller -- implementation of arbitration module
- Two indicators for determining the value of points to the business
- Shell learning record (I)
- shell学习记录(四)
- 表达式的动态解析和计算,Flee用起来真香
猜你喜欢

-- EGFR FISH probe solution

Markov decision process (MDP): gambler problem

深度好文:什么是超网 Supernetting?

SDRAM Controller - add read / write FIFO

MySQL必须掌握4种语言!
![[JS] free API to judge holidays, working days, Saturdays and Sundays](/img/e1/8b742082385bb5e60f74beb3b81c7d.png)
[JS] free API to judge holidays, working days, Saturdays and Sundays

Ndk20b ffmpeg4.2.2 compilation and integration

SDRAM控制器——仲裁模块的实现

基于邻接表的广度优先遍历

接口测试用例设计
随机推荐
A solution to cross domain problems
二分查找
购买了fastadmin小程序助手但是问题工单中无法发布工单
win32
Ndk20b ffmpeg4.2.2 compilation and integration
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) D. Felicity‘s Big Secret Revealed
Shell learning record (I)
启牛推荐的证券账户安全吗?
Raspberry pie + AWS IOT Greengrass
Breadth first traversal based on adjacency table
Snake game
ROS2+DDS+RTPS
SDRAM controller -- implementation of arbitration module
其他代码,,vt,,,k
Record a weird picture upload problem
Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) C. Felicity is Coming!
Tab switch
-- EGFR FISH probe solution
微服务之consul
Connecting the projector