SQL結構化查詢語言 (SQL)及Mysql基本操作,結構化查詢語言 (SQL)sql
SQL結構化查詢語言 (SQL)
資料操作(管理)語言(DML,DataManipulationLanguage)(DQL+DML)
DQL 查詢:獲得資料。
DML 管理:增加,刪除,修改資料。
資料定義語言 (Data Definition Language)(DDL,DataDefinitionLanguage)對儲存資料的格式進行定義。
資料庫控制語言(DCL,DataBaseControlLanguage)針對資料庫軟體服務進行操作。
SQL=DDL,DML(DQL+DML),DCL
**資料庫操作:**DDL
建立資料庫
create database [if not exists] 資料庫名 [資料庫選項] ;eg:create database liguodong;create database `1234`; 特殊字元串create database `create`; 關鍵字set names GBK;create database `成都`;
資料庫名:可以是任一字元(目錄可以建立成功),但特殊的字元需要使用反引號包裹。標識符的大小寫區別於作業系統的大小寫特徵。
If not exists 表示在資料庫不存在時建立。
資料庫選項中,可以設定資料庫字元集(character set utf8)和校對集(collate utf8_general_ci)。
註:
語句要求要使用語句結束符 ;
標識符(資料庫)命名規則:
大小寫取決於當前作業系統(認為是區分的)
見名知意。推薦使用底線方式。
標識符的字元:
使用任一字元,數字,符號甚至是中文。但是一些特殊的組合,例如純數字組合,特殊符號,包括mysql是內部關鍵字,應該使用標識符限定符來包裹。
限定符:反引號。
中文可以,但是不建議使用。(字元集編碼要正確)set names GBK;
每當我們建立一個資料庫,在mysql的資料目錄,形成一個目錄,目錄名是資料庫名(如果是特殊字元,則使用編碼的形式儲存)。目錄內,存在一個檔案,用於儲存資料庫的選項資訊。db.opt
查詢資料庫
查詢已經存在的資料庫:
show databases [like 'pattern']show databases;
like pattern
指的是顯示符合哪些命名規則的。不存在指的是所有的資料庫。
查詢建立資料庫的語句:show create database db_name;
注意:並不是只有使用者可以建立資料庫,還有mysql內部維護自己的資料庫。
刪除資料庫
drop database [if exists] db_name; 慎用drop database test;
If exists
表示資料庫存在才刪除。
當刪除一個資料庫時,同時刪除該資料庫相關的目錄及其目錄內容。
修改資料庫
alter database db_name [修改指令]alter database test character set gbk;
指令:資料庫屬性的修改。
修改名字:
方式一、簡單的可以直接修改目錄名。(並不適用所用方式)
方式二、將資料庫內容匯出,建立一個資料庫,將內容匯入,刪除舊資料庫。
表操作
資料庫是表的容器。
表必須資料某個資料庫。
可以通過.
文法指明所屬的資料庫。eg: 庫.表 database.table。如果任何的標識符,出現的特殊字元,需要使用反引號包裹。不同的標識符需要分別包裹。
進行表操作時,都會指定當前的預設資料庫。
use db_name;
注意:選擇了預設的資料庫,只會影響預設行為。可以操作任何的資料庫。
建立表
create table [if not exists] tbl_name (列定義) [表選項] create table [if not exists] tbl_name like old_tbl_name; create table [if not exists] tbl_name select 語句; eg:create table liguodong.classroom(stu_id varchar(20),stu_name varchar(20),stu_data date);
每當建立一個表,會在資料目錄建立對應的檔案儲存表資訊。
先分析,需要儲存的實體資料,擁有哪些屬性,這些屬性應該如何儲存。
例如:學生資訊
學號,姓名,出生日期
列定義:
列名:列的資料類型[列的屬性 (約束)]
查看錶
show tables [from db_name] [like ‘pattern’]; 如果沒有資料庫名,則採用當前資料庫,如果沒有like,則獲得所有表。eg:use liguodong;show tables;show tables from liguodong;
表名首碼:
為了區分相同邏輯表名的不同應用,給邏輯表名,增加首碼,形成真實表名。
/*學生管理系統*/create table info_student(stu_name varchar(20),stu_no varchar(20));/*線上考試系統*/create table exam_student(stu_name varchar(20),stu_no varchar(20));
show tables like 'exam_%';%稱之為萬用字元,表示任一字元的任意個數的組合。
show create table exam_student;
當一個資料非常多的時候,可以使用\G作為語句結束符。
describe liguodong.exam_student;
資料庫對應目錄,而資料庫中的內容對應目錄的內容,檔案。
刪除表
drop table [if exists] tbl_name;eg:drop table exam_student;表不存在,不能刪除,會報告錯誤。drop table if exists exam_student;不會報錯,因為已經做了一次判斷。
修改表
重新命名表名:rename table tbl_name to new_tbl_name;
。可以同時針對多個表進行重新命名,甚至可以跨資料庫。
修改表結構:alter table
。可以提供對錶選項和列定義的修改。
重名名相當於剪下操作eg:rename table classroom to stu_class;支援同時修改多個表名。rename table classroom to stu_class,info_student to exam_user;支援跨資料庫重新命名。rename table exam_user to `1234`.user;重新命名資料庫(資料庫不支援rename)建立一個新的資料庫,就的資料庫內的表,都rename到新的資料庫內,刪除舊的資料庫。
修改列定義:
add 增加 可以同時增加多個列,使用括弧括起來多個列的定義。modify 修改change 重新命名drop 刪除
修改表結構:
alter table exam [add|drop|change|modify]eg:添加:alter table info_student add age int;desc info_student; 刪除:alter table info_student drop age;desc info_student;修改:alter table info_student modify stu_no varchar(40);desc info_student;重新命名:alter table info_student change age stu_age int;desc info_student;
修改表選項
alter table info_student character set gbk;