柚子快報邀請碼778899分享:MySQL(一)——基礎命令
柚子快報邀請碼778899分享:MySQL(一)——基礎命令
文章目錄
MySQL基礎命令MySQL的特點有:SQL語句的分類在MySQL數(shù)據(jù)庫中,常用的字段類型如下:[數(shù)據(jù)類型]
【DDL】數(shù)據(jù)庫操作創(chuàng)建數(shù)據(jù)庫查看數(shù)據(jù)庫刪除數(shù)據(jù)庫切換數(shù)據(jù)庫
【DDL】數(shù)據(jù)表操作創(chuàng)建數(shù)據(jù)表查看數(shù)據(jù)表刪除數(shù)據(jù)表修改數(shù)據(jù)表(1)添加一列 :add(2)修改列類型:modify(3)修改列名:change(4)刪除一列:drop(5)修改表名:rename
【DML】數(shù)據(jù)操作插入數(shù)據(jù)更改數(shù)據(jù)刪除數(shù)據(jù)
MySQL基礎命令
本數(shù)據(jù)都在DataGrip軟件上操作。
MySQL的特點有:
(1)MySQL是開源的;
(2)MySQL支持大量數(shù)據(jù)處理,可以處理上千萬條的數(shù)據(jù)記錄;
(3)MySQL使用標準的SQL語言形式;
(4)MySQL可以安裝在不同的操作系統(tǒng),并且提供了多種編程語言的操作接口,包括Python、Java、PHP、C++、Ruby等;
(5)支持多種存儲引擎。
SQL語句的分類
數(shù)據(jù)定義語言: DDL (Data Definition Language):用來定義數(shù)據(jù)庫、數(shù)據(jù)表、列等。創(chuàng)建create、修改alter、刪除drop等。 數(shù)據(jù)操作語言: DML (Data Manipulation Language):用來更新數(shù)據(jù)表。插入數(shù)據(jù)insert、更新數(shù)據(jù)update、刪除數(shù)據(jù)delete等。 數(shù)據(jù)查詢語言: DQL (Data Query Language):用于查詢數(shù)據(jù)。查詢數(shù)據(jù)select、條件where等。 數(shù)據(jù)控制語言: DCL (Data Control Language):用來定義數(shù)據(jù)庫的訪問權限和安全級別,及創(chuàng)建用戶。
在MySQL數(shù)據(jù)庫中,常用的字段類型如下:[數(shù)據(jù)類型]
(1)整數(shù):int;
(2)小數(shù):double,注意:在編程開發(fā)中,一般把小數(shù)稱為浮點數(shù);
(3)字符串:varchar;
(4)時間日期:date、datetime。
【DDL】數(shù)據(jù)庫操作
創(chuàng)建數(shù)據(jù)庫
create database [其他] 數(shù)據(jù)庫名 [設置編碼格式];
==說明:==使用[ ]表示的內(nèi)容表示可選項。
例:
(1)創(chuàng)建一個班級user1數(shù)據(jù)庫,且使用默認編碼;
(2)創(chuàng)建一個班級user2數(shù)據(jù)庫,charset設置編碼為utf8。
(3)若再使用相同命令創(chuàng)建一個已有的數(shù)據(jù)庫:班級user1。
# (1)創(chuàng)建一個`班級`user1`數(shù)據(jù)庫,且使用默認編碼;
create database user1;
# (2)創(chuàng)建一個`班級`user2`數(shù)據(jù)庫,charset設置編碼為utf8。
create database user2 charset utf8;
# (3)若再使用相同命令創(chuàng)建一個已有的數(shù)據(jù)庫:班級`user1`。
create database if not exists user1 charset utf8;
查看數(shù)據(jù)庫
# 查看有哪些數(shù)據(jù)庫
show databases;
# 查看數(shù)據(jù)庫的創(chuàng)建語句
show create database 數(shù)據(jù)庫名;
刪除數(shù)據(jù)庫
drop database 數(shù)據(jù)庫名稱;
切換數(shù)據(jù)庫
use 數(shù)據(jù)庫名;
【DDL】數(shù)據(jù)表操作
創(chuàng)建數(shù)據(jù)表
create table 表名(
字段名1 數(shù)據(jù)類型(長度) [約束],
字段名2 數(shù)據(jù)類型(長度) [約束],
字段名3 數(shù)據(jù)類型(長度) [約束],
...
);
說明:
(1)常見類型有int、double、varchar(x);
(2)primary key表示主鍵,使用主鍵修飾的字段必須保證唯一且非空;
(3)auto_increment表示自動增長,通常為int型的值才能設置為自動增長。
特別注意:在創(chuàng)建數(shù)據(jù)表前,要先使用數(shù)據(jù)庫。
例:
# (1)創(chuàng)建一個數(shù)據(jù)庫`班級`user1,并在該庫中完成創(chuàng)建數(shù)據(jù)表的操作;
create database if not exists user1 charset utf8;
# (2)使用數(shù)據(jù)庫;
use user1;
# (3)新建一個用戶表user,字段有編號、用戶名、昵稱;
create table user(
id int primary key auto_increment, #添加主鍵且自增長
username varchar(20),
nickname varchar(20)
);
查看數(shù)據(jù)表
# 查看有哪些表
show tables;
# 查看數(shù)據(jù)表的創(chuàng)建語句
show create table 表名;
# 查看表結構
desc 表名;
刪除數(shù)據(jù)表
drop table 表名;
修改數(shù)據(jù)表
(1)添加一列 :add
alter table 表名 add 字段名 類型(長度) [first|after 其他字段名稱];
# first:把新添加字段放在第一位
# after 其他字段名稱:把新添加字段放在指定字段的后面
例:
(1)給用戶表添加一列信息展示information字段,長度為20;
(2)在用戶表的最開始處,添加一列最初名稱first_name,該怎么做呢?
(3)在用戶表的信息字段后,添加一列年齡age字段,該怎么做?
# 1.創(chuàng)建一個數(shù)據(jù)庫`班級`user1,并在該庫中完成創(chuàng)建數(shù)據(jù)表的操作;
create database if not exists user1 charset utf8;
# 2.使用數(shù)據(jù)庫;
use user1;
# 3.新建一個用戶表user,字段有編號、用戶名、昵稱;
create table user(
id int primary key auto_increment, #添加主鍵且自增長
username varchar(20),
nickname varchar(20)
);
# 4.添加一列
alter table user add information varchar(20);
desc user;
# 5.開始處添加一列
alter table user add first_name varchar(20) first;
# 6.某個字段后添加一列
alter table user add age int after information;
(2)修改列類型:modify
alter table 表名 modify 要修改的字段名 類型(長度);
alter table 表名 modify 要修改的字段名 類型(長度) [約束]; # 不為空
說明:非空約束可寫成not null,表示不能為空值,必須進行設定數(shù)據(jù)。
例:
(1)給用戶表的information 字段類型修改為char,長度修改為10;
(2)將用戶名字段修改長度為16,且添加不為空約束。
# 修改信息字段 char(10)
alter table user modify information char(10);
# 修改姓名字段 16 not null
alter table user modify username varchar(16) not null;
(3)修改列名:change
alter table 表名 change 舊列名 新列名 類型(長度) [約束];
例:
(1)把用戶表的用戶名修改為name,字符串類型、長度為18;
(2)把用戶表的性別字段列名修改為sex,類型修改為varchar,長度為100。
# 修改用戶名為name varchar(18)
alter table user change username name varchar(18);
# 修改信息為info varchar(100)
alter table user change information info varchar(100);
(4)刪除一列:drop
alter table 表名 drop 列名;
例:
(1)刪除用戶表中的年齡這一列;
(2)使用命令查看表結構。
# 刪除一列
alter table user drop age;
#查看表結構
desc user;
(5)修改表名:rename
rename table 表名 to 新表名;
例:
(1)把用戶表的表名更改為table_user;
# 修改表名
rename table user to table_user;
【DML】數(shù)據(jù)操作
插入數(shù)據(jù)
#插入一條數(shù)據(jù)
insert into 表名[(字段名1,字段名2,字段名3,...)] values(值1,值2,值3,...);
# 插入多條數(shù)據(jù)
insert into 表名[(字段名1,字段名2,字段名3,...)] values (值1,值2,值3,...),(值1,值2,值3,...),...;
例:
(1)創(chuàng)建一個shopping庫,并在該庫下新建一個用戶表user;
(2)用戶表的字段信息有編號、人物名、性別、住址等;[不添加任何約束條件]
(3)使用插入數(shù)據(jù)的語法分別插入一條數(shù)據(jù);
(4)思考1:給所有字段名一次性插入2條數(shù)據(jù)信息,該怎么做?
(5)思考2:給用戶表一次性插入僅包含人物名、年齡、性別字段的3條數(shù)據(jù),該怎么做?
(6)若發(fā)現(xiàn)在性別字段后,還缺少了年齡字段,該怎么處理呢?
#####################插入數(shù)據(jù)###############################
# 1.新建庫、使用庫
create database if not exists shopping charset utf8;
use shopping;
show tables;
# 2.創(chuàng)建表
create table if not exists user(
id int,
name varchar(20),
sex varchar(10),
address varchar(255)
);
show tables;
# 3.不加()與加()依次插入數(shù)據(jù)
insert into user values(1,'李自豪','男','山東青島');
insert into user(id,name,sex,address) values(2,'呂春偉','男','山東濟南');
# 4.一次性插入多條數(shù)據(jù)
insert into user values(3,'周媛','女','山西太原'),(4,'周鈺哲','女','廣東湛江');
insert into user(id,name,sex,address) values(5,'周媛2','女','山西太原'),(6,'周鈺哲2','女','廣東湛江');
# 5.一次插入僅包含部分字段的數(shù)據(jù)
insert into user(name,sex,address) values('劉志遠','男','河南新鄉(xiāng)'),('劉志遠2','男','河南新鄉(xiāng)'),('劉志遠3','男','河南新鄉(xiāng)');
# 6.缺少年齡字段,該怎么修改?
alter table user add age int after sex;
更改數(shù)據(jù)
#更改數(shù)據(jù)表內(nèi)所有的數(shù)據(jù)
update 表名 set 字段名1=值1, 字段名2=值2, 字段名3=值3,...;
#按條件修改數(shù)據(jù)
update 表名 set 字段名1=值1, 字段名2=值2, 字段名3=值3,…… where 條件;
例:
(1)將用戶表內(nèi)所有用戶性別一次性設置為男;
(2)將用戶表內(nèi)所有用戶的性別修改為女、年齡修改為18;
(3)將用戶表內(nèi)編號為2的用戶性別設置為男;
(4)將用戶表內(nèi)編號為3的用戶年齡更新為22,且住址更新為河南省鄭州市;
(5)思考:去年存儲的用戶數(shù)據(jù)到今年了,那么存儲在user數(shù)據(jù)表里的用戶年齡都要增加1歲,該怎么處理呢?
######################更新數(shù)據(jù)################################
# 使用庫
use shopping;
show tables;
# 1
update user set sex='男';
# 2
update user set sex='女',age=18;
# 3
update user set sex='男' where id=2;
# 4
update user set age=22,address='河南省鄭州市' where id=3;
# 5
update user set age=age+1;
刪除數(shù)據(jù)
#刪除所有的數(shù)據(jù)
delete from 表名;
#按條件刪除數(shù)據(jù)
delete from 表名 where 條件;
例:
(1)在數(shù)據(jù)庫中shopping創(chuàng)建一個用戶表user2,表字段有編號、用戶名、密碼,再增加3條數(shù)據(jù);
(2)刪除表內(nèi)編號為1的這條數(shù)據(jù),再刪除用戶名為Andy的這條數(shù)據(jù);
(3)使用命令刪除表內(nèi)所有數(shù)據(jù),觀察效果。
###################刪除數(shù)據(jù)########################
# 使用庫
use shopping;
# 創(chuàng)建表
create table if not exists user2(
id int,
username varchar(20),
password varchar(20)
);
show tables;
# 新增數(shù)據(jù)
insert into user2(id,username,password) values (1,'Andy','123456'),(2,'Jerry','666777'),(3,'Marry','888999');
# 刪除一條數(shù)據(jù)
delete from user2 where id=1;
delete from user2 where username='Andy';
# 清空所有數(shù)據(jù)
delete from user2;
# 或用truncate清空數(shù)據(jù)
truncate table user2;
問題: 思考delete和truncate刪除數(shù)據(jù)的區(qū)別?
delete是逐條的刪除數(shù)據(jù),刪除數(shù)據(jù)后仍然占用空間,且下次插入數(shù)據(jù)時,不是從1開始;而truncate是直接刪除整個表的內(nèi)容
柚子快報邀請碼778899分享:MySQL(一)——基礎命令
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。