MySQL數據庫基本語法


SQL

  • WHAT(SQL是什么?)
    Structured Query Language:結構化查詢語⾔
  • WHY(為何要使用SQL?)
    難道僅僅使用SQL Server Management Studio操作數據庫?
    應用程序如何與數據庫打交道?
  • WHEN(何時使用?)
    對SQL Server執⾏所有的操作都可以
    程序中的增刪改查
  • HOW(怎么使用?)
    ...

四大SQL語句

  1. 數據定義語句DDL:
    create、alter、drop、truncate(表結構)
  2. 數據操作語句DML:
    insert、delete、update、select(數據)
  3. 數據控制語句DCL:
    授權grant
    收回權限:revoke
  4. 事務控制語句TCL:
    開啟事務:begin
    提交:commit
    回滾:rollback

數據庫操作

創建數據庫

SQL語句:

create database 數據庫名;
create database stu_a;
-- 在建庫時指定字符集,避免中文數據亂碼的問題
create database stu_b default charset='utf8';

成功創建數據庫后,數據庫根目錄下會自動創建數據庫目錄。

顯示數據庫結構

SQL語句:

show create database 數據庫名;

可以查看數據庫的相關信息(例如默認字符集等信息)。

刪除數據庫

SQL語句:

drop database 數據庫名;

MySQL數據類型

MySQL提供的數據類型包括數值類型(整數類型和小數類型)、字符串類型、日期類型、復合類型(復合類型包括enum類型和set類型)以及⼆進制類型 。

decimal(length, precision)用於表示精度確定(小數點后數字的位數確定)的小數類型,length決定了該小數的最⼤位數,precision用於設置精度(小數點后數字的位數)。

例如:
decimal(5,2)表示小數取值范圍:-999.99∼999.99
decimal(5,0)表示: -99999∼99999的整數。

char()與varchar():
例如對於簡體中⽂字符集gbk的字符串⽽⾔,varchar(255)表示可以存儲255個漢字,⽽每個漢字占用兩個字節的存儲空間。假如這個字符串沒有那么多漢字,例如僅僅包含⼀個‘中’字,那么varchar(255)僅僅占用1個字符(兩個字節)的儲存空間;⽽char(255)則必須占用255個字符長度的存儲空間,哪怕里面只儲⼀個漢字。

表操作

創建數據庫表

注意:在創建表之前,需要選擇當前操作的數據庫

Use 數據庫名;

創建數據庫表SQL語句:

use student;
create table stu(id int,name varchar(20));

create table stuinfo(
    id int,
    name char(20),
    address char(50),
    city char(50),
    age int,
    love char(50)
)default charset='utf8';

顯示表結構

SQL語句:

desc 表名; -- 即可查看指定表的結構

SQL語句:

show create table 表名; -- 查看指定表的詳細信息

刪除表

SQL語句:

drop table 表名;

注意:刪除表后,MySQL服務實例會自動刪除該表結構定義的文件,以及數據、索引信息。該命令慎用!

刪除字段

alter table 表名 drop 字段名

添加新字段

alter table 表名 add 新字段名 新數據類型 [新約束條件]

修改字段名

alter table 表名 change 舊字段名 新字段名 新數據類型

修改數據類型

alter table 表名 modify 字段名 新數據類型

修改表名

rename table 舊表名 to 新表名

數據的增、刪、改、查

表記錄的插入

SQL語句:

insert into 表名(字段列表) values(值列表);

提示:當插入的數據值的個數與表字段個數相同時,可以省略字段列表

insert stu(id,name) values(1,'newdream');
insert stu values(2,'newdream1');

一次插入多條記錄

insert into 表名(字段列表) values (值列表1),(值列表2),...(值列表n);

insert into stu values(3,'new1'),(4,'new2'),(5,'new3');

使用insert...select插入結果

insert into 目標表名(字段列表1)
select(字段列表2) from 源表 where 條件表達式

insert into stu_bak(id,name)
select id,newname from stu where id>2;

注意:字段列表1與字段列表2的字段個數必須相同,且對應字段的數據類型盡量保持一致。
如果果源表與目標表的表結構完全相同,“(字段列表1)”可以省略。

復制表結構及數據到新表

create table 新表 select * from 舊表;

只復制表結構到新表

create table 新表 select * from 舊表 where 1=2;

修改表記錄

update 表名 set 字段名1=值1,字段名2=值2,...,字段名n=值n
[where 條件表達式]

update stu set newname='new5' where id=1;

where 子句指定了表中的哪些記錄需要修改。若省略了where子句,則表示修改表中的所有記錄。
set子句指定了要修改的字段以及該字段修改后的值。

使用delete刪除表記錄

delete from 表名 where 條件表達式;

說明:如果沒有指定wheree⼦句,那么該表的所有記錄都將被刪除,但表結構依然存在。

使用truncate清空表記錄

truncate table 表名;

delete和truncate的區別

Delete不加WHERE條件是刪除所有數據
Truncate不能夠加WHERE條件
Delete可以加WHERE條件
Truncate會重置AUTO_INCREMENT
Delete可以進⾏回滾操作

表記錄的查詢

select 字段列表 from 表名 
where條件表達式

表記錄的查詢—給列取別名

可以為字段列表中的字段名或表達式指定別名,中間使用as關鍵字分隔即可(as關鍵字可以省略)。多表查詢時,同名字段前必須添加表名前綴,中間使用“.”分
隔。

Select id as ’學⽣學號’,newname ‘學⽣姓名’ from stu;

使用source命令

測試⼈員經常會和MySQL打交道,備份和恢復應該是最常用的操作了,那么通過直接執⾏sql⽂件⽆疑是最快捷的⽅式。
我們會把寫好的sql語句保存成⼀個.sql⽂件進⾏備份;如果想在新的數據庫中執⾏時,可以使用source命令進⾏恢復;
例如:在D盤的new⽂件夾中保存了dream.sql⽂件
(此⽅法只用在命令提示窗⼝)

第⼀步:可以先新建⼀個數據庫;
第⼆步:use 新的數據庫
第三步:Source d:\www\dream.sql
如此就把之前的表數據在新的數據庫中進⾏恢復;之前的表及數據在新的數據庫中都是存在的;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM