前言:各種版本的數(shù)據(jù)庫中,有一種通用的語言用于管理數(shù)據(jù)庫中的數(shù)據(jù),它就是SQL,本章我們將學(xué)習(xí)基本的SQL語句。 SQL的概述 Structured Query Language 結(jié)構(gòu)化查詢語言,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。 各種主流的數(shù)據(jù)庫系統(tǒng)都對SQL規(guī)范作了某些編改和擴(kuò)充。所以,實(shí)際上不同數(shù)據(jù)庫系統(tǒng)之間的SQL不能完全相互通用,但大部分是相同的,后面我們學(xué)習(xí)的是MySQL的版本,掌握SQL主要語法之后,要遷移到其它數(shù)據(jù)庫也是比較容易的。 結(jié)構(gòu)化查詢語言包含6個(gè)部分: 一:數(shù)據(jù)查詢語言(DQL:Data Query Language): 其語句,也稱為“數(shù)據(jù)檢索語句”,用以從表中獲得數(shù)據(jù),確定數(shù)據(jù)怎樣在應(yīng)用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動(dòng)詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。 二:數(shù)據(jù)操作語言(DML:Data Manipulation Language): 其語句包括動(dòng)詞INSERT,UPDATE和DELETE。它們分別用于添加,修改和刪除表中的行。也稱為動(dòng)作查詢語言。 三:事務(wù)處理語言(TPL): 它的語句能確保被DML語句影響的表的所有行及時(shí)得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。 四:數(shù)據(jù)控制語言(DCL): 它的語句通過GRANT或REVOKE獲得許可,確定單個(gè)用戶和用戶組對數(shù)據(jù)庫對象的訪問。某些RDBMS可用GRANT或REVOKE控制對表單個(gè)列的訪問。 五:數(shù)據(jù)定義語言(DDL): 其語句包括動(dòng)詞CREATE和DROP。在數(shù)據(jù)庫中創(chuàng)建新表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。DDL包括許多與人數(shù)據(jù)庫目錄中獲得數(shù)據(jù)有關(guān)的保留字。它也是動(dòng)作查詢的一部分。 六:指針控制語言(CCL): 它的語句,像DECLARE CURSOR,F(xiàn)ETCH INTO和UPDATE WHERE CURRENT用于對一個(gè)或多個(gè)表單獨(dú)行的操作。 本章我們主要介紹的是DDL和DML。 MySQL數(shù)據(jù)庫的操作 創(chuàng)建數(shù)據(jù)庫的基本語法是: create database 數(shù)據(jù)庫名; 還可以給數(shù)據(jù)庫指定默認(rèn)的字符集以及排序規(guī)則: create database 數(shù)據(jù)庫名 default character set 字符集 collate 排序規(guī)則; 選擇數(shù)據(jù)庫 use 數(shù)據(jù)庫名; 修改數(shù)據(jù)庫的字符集和排序規(guī)則: alter database 數(shù)據(jù)庫名 default character set 字符集 collate 排序規(guī)則; 刪除數(shù)據(jù)庫: drop database 數(shù)據(jù)庫名; 刪除時(shí)檢查數(shù)據(jù)庫是否存在: drop database if exists 數(shù)據(jù)庫名; 代碼示例: 1.-- 刪除數(shù)據(jù)庫 2.drop database if exists java1903; 3.-- 創(chuàng)建數(shù)據(jù)庫 4.create database java1903 5.default character set utf8mb4 6.collate utf8mb4_general_ci; 7.-- 使用數(shù)據(jù)庫 8.use java1903; MySQL常見的數(shù)據(jù)類型 創(chuàng)建好數(shù)據(jù)庫后,我們就需要建表,建表我們需要設(shè)置字段的數(shù)據(jù)類型,我們先來了解MySQL中常見的數(shù)據(jù)類型。
2)小數(shù)類型
3) 日期/時(shí)間類型
3) 字符串類型
4) 二進(jìn)制類型
表的操作 創(chuàng)建表: create table 表名 ( 字段名 數(shù)據(jù)類型 [約束], 字段名 數(shù)據(jù)類型 [約束], .... ) 主要的約束類型有: primary key 主鍵,表中只能有一個(gè),不能重復(fù),不能為空 not null 非空,必須填寫 unique 唯一,不能重復(fù) auto_increment 自動(dòng)增長,必須是整數(shù)類型,不需要手動(dòng)插入 foreign key 外鍵,建立表之間的引用關(guān)系 刪除表: drop table 表名; 刪除表時(shí)進(jìn)行檢查: drop table if exists 表名; 修改表,添加字段: alter table 表名 add column 字段名 數(shù)據(jù)類型; 修改表,刪除字段: alter table 表名 drop column 字段名; 查看表結(jié)構(gòu): desc 表名; 代碼示例: 9.-- 刪除表 10.drop table if exists tb_student; 11.-- 創(chuàng)建學(xué)生表 12.create table tb_student 13.( 14. stu_id int primary key auto_increment, 15. stu_name varchar(20) not null, 16. stu_age int not null, 17. stu_gender varchar(1) not null, 18. stu_address varchar(200) 19.); 數(shù)據(jù)操作語言DML 數(shù)據(jù)操作語言有插入、刪除和更新語句組成。 單行插入: insert into 表名(字段名,字段名,字段名..) values(值,值,值..); 多行插入 insert into 表名(字段名,字段名,字段名..) values(值,值,值..),(值,值,值..),(值,值,值..); 將一張表數(shù)據(jù)插入另一張表 insert into 表1(字段名,字段名,字段名..) select 字段名,字段名,字段名 from 表2; 刪除所有數(shù)據(jù) delete from 表名; 清空表 truncate table 表名; 帶條件的刪除 delete from 表名 [where 條件]; 更新 update 表名 set 字段 = 值,字段 = 值... [where 條件]; 代碼示例: 20.-- 插入一行學(xué)生記錄 21.insert into tb_student(stu_name,stu_age,stu_gender,stu_address) 22.values('趙六',30,'男','上海'); 23.-- 插入多行學(xué)生 24.insert into tb_student(stu_name,stu_age,stu_gender,stu_address) 25.values('陳七',20,'男','武漢'),('陳大七',28,'男','上海'),('陳小七',18,'男','北京'); 26.-- 刪除學(xué)號為3的學(xué)生 27.delete from tb_student where stu_id = 3; 28.-- 全部刪除 29.delete from tb_student; 30.-- 清空表 31.truncate table tb_student; 32.-- 更新陳七的年齡為23,性別為女 33.update tb_student set stu_age = 23,stu_gender = '女' 34.where stu_name = '陳七'; 總結(jié) 本章我們學(xué)習(xí)了SQL語言中的DDL和DML,能實(shí)現(xiàn)建表建表和數(shù)據(jù)的增刪改操作,還有一個(gè)重要的查詢操作,也就是DQL,會在下章介紹。 |
|