二、數據庫和表的基本操作

操作數據庫

創建數據庫

//創建數據庫,並先檢查是否已經存在,可省略不檢查
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,...]]

//創建的條件
create_specification:
    [DEFAULT]CHARACTER SET charset_name指定數據庫採用的字符集
    [DEFAULT]COLLATE collation_name指定數據庫字符集的比較方式

例一:創建一個名爲mydb1的數據庫

CREATE DATABASE mydb1;

例二:創建一個使用gbk字符集的mydb2數據庫

CREATE DATABASE mydb2 CHARACTER SET gbk;

例三:創建一個使用utf-8字符集,並帶校對規則的mydb3數據庫【校對規則見MySQL文檔】

CREATE DATABASE mydb3 character set utf8 collate utf8_bin;

查看數據庫

//顯示數據庫語句
SHOW DATABASES
//顯示數據庫創建語句
SHOW CREATE DATABASE db_name

例一:查看當前數據庫服務器中的所有數據庫

show databases;

例二:查看mydb2數據庫的定義信息

show create database mydb2;

修改數據庫

ALTER DATABASE [IF NOT EXISTS] db_name [alter_specification [,...]]

alter_specifucation:
  [DEFAULT]CHARACTER SET charset_name
  [DEFAULT]COLLATE collation_name

例一:查看服務器中的數據庫,並把其中一個庫的字符集改爲utf8

show create database mydb2;  
alter database mydb2 character set utf8;

刪除數據庫

DROP DATABASE [IF EXISTS] db_name

例一:刪除mydb1

drop database mydb1;

選擇數據庫

USE db_name
SELECT DATABASE();查看數據庫

例一:選擇mydb1數據庫

use mydb1;

例二:查看當前選擇的數據庫

select database();

數據庫中表的操作

MySQL數據庫中的數據類型

整型數據

數據類型 字節數 無符號數的取值範圍 有符號數的取值範圍
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32768
MEDIUMINT 3 0~16777215 -8388608~8388608
INT 4 0~4294967295 -2147483648~2147483648
BIGINT 8 0~18446744073709551615 -9223372036854775808~9223372036854775808

浮點數類型和定點數類型

數據類型 字節數
FLOAT 4
DOUBLE 8
DECIMAL(M,D)【M表示數據長度,D表示小數點後的長度】 M+2

日期與時間類型

數據類型 字節數 日期格式 零值
YEAR 1 YYYY 0000
DATE 4 YYYY-MM-DD 0000-00-00
TIME 3 HH:MM:SS 00:00:00
DATETIME 8 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00

字符串和二進制類型

CHAR:固定長度字符串,char4),查詢速度快
VARCHAR:可變長度字符串,varchar4BINARYVARBINARY類型,同上
TEXT類型【存大文本】:TINYTEXTTEXTMEDIUMTEXTLONGTEXT
BLOB類型【存大二進制】:TINYBLOBBLOBMEDIUMBLOBLONGBLOB
ENUM類型:枚舉類型
SET類型:同枚舉,但存儲的是每個值的序號
BIT類型:表示二進制數,BIT(1)表示1位二進制

增加表

CREATE TABLE table_name
(
    field1 datatype,
    field2 datatype,
    field3 datatype,
)character set 字符集 collate
校對規則【一般不指定,使用數據庫默認的字符集和校對規則】
//field:指定列名,datatype:指定列類型
create table employee(
    id int,
    name varchar(20),
    gender char(1),
    birthday date,
    entry_date date,
    job varchar(50),
    salay double,
    resume text
);

查看錶

SHOW TABLES;查看所有表
DESC employee;查看employee表結構
SHOW CREATE TABLE employee;查看建表語句

修改表

//增加一列
ALTER TABLE table_name ADD(column datatype [DEFAULT expr][,column datatype]...);
//修改列屬性
ALTER TABLE table_name MODIFY(column datatype [DEFAULT expr][,column datatype]...);
//刪除列
ALTER TABLE table_name DROP(column);
//修改表名
REMANE TABLE 表名 TO 新表名;
//修改列的名稱
ALTER TABLE table_name change [column] old_name new_name datatype;
//修改表的字符集編碼
ALTER TABLE table_name CHARACTER SET utf8;

例一:在員工表中添加一列image列

alter table employee add image blob;

例二:修改job列,使其長度爲60

alter table employee modify job varchar(60);

例三:刪除gender列

alter table employee drop gender;

例四:表名改爲user

rename table employee to user;

例五:修改表的字符集爲utf8

alter table user character set utf8;

例六:列名name修改爲username

alter table user change name username varchar(20);

刪除表

DROP TABLLE table_name;

例一:刪除user表

drop table user;

表的約束

概述:爲了防止數據表中插入錯誤的數據,需要對錶定義一些規則,即表的約束。

約束條件 說明
PRIMARY KEY 主鍵約束,用於唯一標識對應的記錄
FOREIGN KEY 外鍵約束
NOT NULL 非空約束
UNIQUE 唯一性約束
DEFFAULT 默認值約束,用於設置字段的默認值

主鍵約束 PRIMARY KEY

//1.單字段主鍵
CREATE TABLE example1(id INT PRIMARY KEY,
                      name VARCHAR(20)
);
//多字段主鍵
CREATE TABLE example1(id INT,
                      name VARCHAR(20),
                      grade FLOAT,
                      PRIMARY KEY(id,name)
);

非空約束 NOT NULL

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT,
                      PRIMARY KEY(id,name)
);

唯一約束 UNIQUE

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT UNIQUE,
                      PRIMARY KEY(id,name)
);

默認約束 DEFAULT

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT,
                      job VARCHAR(20) DEFAULT 'sxs',
                      PRIMARY KEY(id,name)
);

設置表的字段值自動增加(AUTO_INCREMENT)

CREATE TABLE example1(id INT PRIMARY KEY AUTO_INCREMENT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT
);

索引

概述:在數據庫操作中,需要經常查詢其中一條記錄,比如,查詢id=1000的記錄,這時候就需要一種效率高的查詢方法,即索引。是對錶中的值進行排列後的一種結構。

普通索引:是由KEY或者INDEX定義的索引,可以創建在任何類型,其值是否唯一或者非空沒有要求。

唯一性索引:由UNIQUE定義的所以,該索引字段必須唯一

全文索引:由FULLTEXT定義的所以,只能創建在char、varchar或者text類型的字段上,並且只有MyISAM存儲引擎支持全文索引

單列索引:指在表中單個字段上創建索引,可以是普通索引,唯一索引或者全文索引

多列索引:指表中多個字段上創建索引,只有在查詢中使用了這些字段中的第一個字段時,該索引纔會被使用

空間索引:由SPATIAL定義的索引,只能創建在空間數據類型的字段上。只能在存儲引擎爲MyISAM的表中創建
空間數據類型:GEOMETRY,POINT,LINESTRING,POLYGON

創建索引
創建表的時候創建索引

CREATE TABLE 表名(
    字段名 數據類型 [完整性約束條件]
    ....
    [UNIQUE或FULLTEXT或SPATIAL] INDEXKEY [別名] (字段名1 [(長度)]) [ASC或者DESC]
);

例一:創建普通索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, INDEX (id));

例二:創建唯一索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, UNIQUE INDEX unique_id(id ASC););

例三:創建全文索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, FULLTEXT INDEX fulltext_name(name))ENGINE = MyISAM;

例四:創建多列索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, INDEX multi(id,name(20)));

例五:創建空間索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, space GEOMETRY NOT NULL, SPATIAL INDEX sp(space))ENGINE = MyISAM;

CREATE INDEX語句

CREATE [UNIQUE或者FULLTEXT或者SPATIAL] INDEX 索引名 ON 表名 (字段名 [(長度)] [ASC或者DESC]);

例一:對book表創建普通索引

CREATE INDEX index_id ON book (id)

例二:創建唯一索引

CREATE UNIQUE INDEX uniqueidx ON book (id);

使用ALTER TABLE語句創建索引

ALTER TABLE 表名 ADD [UNIQUE或者FULLTEXT或者SPATIAL] INDEX 索引名 (字段名 [(長度)] [ASE或者DESC])

例一:在book表上創建普通索引

ALTER TABLE book ADD INDEX indexone (id);

刪除索引

ALTER TABLE 表名 DROP INDEX 索引名;

DROP INDEX 索引名 ON 表名;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章