MySQL中模式就是數據庫
SHOW DATABASES;
show databases;
羅列所有數據庫名稱
CREATE DATABASE <數據庫名>
create database TEST;
創建名為TEST的數據庫
DROP DATABASE <數據庫名>
drop database TEST;
刪除名為TEST的數據庫
USE <數據庫名>
use TEST;
使用名為TEST的數據庫
SHOW TABLES
show tables;
顯示當前數據庫所有表格
SHOW [FULL] COLUMNS FROM <表名>
show [full] columns from <表名>
在MySQL數據庫中顯示表的結構,如果加上full則更加詳細
DESC <表名>
desc TEST;
查看表TEST的結構,同show columns from TEST
SHOW CREATE TABLE <表名>
show create table TEST;
查看表TEST的所有信息,包括建表語句
創建基本表:
CREATE TABLE <表名>
(<列名> <數據類型>[列級完整性約束條件],
<列名> <數據類型>[列級完整性約束條件],
………………
);
create table STUDENT
(
studentId int(30) primary key,
name varchar(255),
address varchar(255)
);
創建名為STUDENT的表格,有屬性studentId,name,address,其中studentId為主鍵
create table TEACHER
(
teacherId int(30),
name varchar(255),
age int(20),
studentId int(30),
primary key (teacherId),
foreign key (studentId) references STUDENT(studentId)
);
創建名為TEACHER的表格,其中teacherId為主鍵,studentId為外鍵,引用STUDENT表的主鍵studentId
修改基本表:
ALTER TABLE <表名> RENAME <修改后表名>
alter table TEACHER rename S;
將TEACHER表的表名改為S
ALTER TABLE <表名> ADD COLUMN <列名> <屬性類型>
alter table TEACHER add column ADDRESS varchar(255);
在表名為TEACHER的表中加入名為ADDRESS的列
ALTER TABLE <表名> CHANGE COLUMN <列名> <修改后列名> <屬性類型>
alter table TEACHER change column ADDRESS address varchar(230);
修改TEACHER表中的列,將ADDRESS的列名改為address
ALTER TABLE <表名> DROP [COLUMN] <列名>
alter table TEACHER drop [column] address;
刪除列名為address的列,column可有可無
刪除基本表:
DROP TABLE <表名> [RESTRICT|CASCADE]
刪除表格
drop table STUDENT restrict;
刪除STUDENT表。受限制的刪除,欲刪除的基本表不能被其他表的約束所引用(如check,foreign key等約束),
不能有視圖,不能有觸發器,不能有存儲過程或函數等。
drop table STUDENT cascade;
若選擇cascade,則該表刪除沒有限制。在刪除基本表的同時,相關的依賴對象,例如視圖,都將被一起刪除。
但是我在MySQL測試的時候給錯誤提示Cannot delete or update a parent row: a foreign key constraint fails,不予以刪除,不知道是什么原因。
關于完整約束性:
參考文章:完整性約束的SQL定義
ALTER TABLE <表名> ADD CONSTRAINT <約束名> <約束條件>
alter table teacher add constraint pk_teacher_id primary key teacher(id);
在teacher表中增加名為pk_teacher_id的主鍵約束。
ALTER TABLE <表名> DROP <約束條件>
alter table teacher drop primary key;
刪除teacher表的主鍵約束。
alter table student add constraint fk_student_teacher foreign key student(teacherId) references teacher(id);
在student表中增加名為fk_student_teacher的約束條件,約束條件為外鍵約束。
索引的建立與刪除:
索引的建立:
CREATE [UNIQUE]|[CLUSTER] INDEX <索引名> ON <表名>(<列名> [次序][,<列名> [次序]]……);
UNIQUE 表明此索引的每一個索引值只對應唯一的數據記錄。
CLUSTER 表示要建立的索引是聚簇索引。
create unique index id_index on teacher(id asc);
對teacher表的id列建立unique索引,索引名為id_index
索引的刪除:
DROP INDEX <索引名> ON <表名>
drop index id_index on teacher;
在teacher表中刪除索引,索引名為id_index
另外的方法:
新建索引:
ALTER TABLE <表名> ADD [UNIQUE]|[CLUSTER] INDEX [<索引名>](<列名> [<次序>],[<列名> [<次序>]]……)
alter table teacher add unique index id_index(id asc);
在teacher表中對id列升序建立unique索引,索引的名字為id_index
刪除索引:
ALTER TABLE <表名> DROP INDEX <索引名>
alter table teacher drop index id_index;
刪除teacher表名為id_index的索引
數據庫索引的建立有利也有弊,參考文章:
數據庫索引的作用和優點缺點(一)數據庫索引的作用和優點缺點(二)數據庫建立索引的原則數據查詢:
SELECT [ALL|DISTINCT] <目標列表達式> [,<目標列表達式>]……
FROM <表名或視圖名> [<表名或視圖名>]……
[WHERE <條件表達式>]
[GROUP BY <列名1> [HAVING <條件表達式>]]
[ORDER BY <列名2> [ASC|DESC] [,<列名3> [ASC|DESC]]……];
查詢經過計算的值:
select teacherId as id,salary - 100 as S from teacher;
查詢經過計算的值,從teacher表中查詢出teacherId字段,別名為id,并且查詢出salary字段減去100后的字段,別名為S
使用函數和字符串:
select teacherid as id,'birth',salary - 20 as SA, lower(name) from teacher;
<目標表達式>可以是字符串常量和函數等,'birth' 為字符串常量,lower(name)為函數,將name字段以小寫字母形式輸出
消除取值重復的行:
select distinct name from teacher;
如果沒有指定DISTINCT關鍵詞,則缺省為ALL.
查詢滿足條件的元組:
WHERE子句常用的查詢條件:
查詢條件
謂詞
比較
=, >, <, >=, <=, !=, <>, !>, !<
確定范圍
BETWEEN AND, NOT BETWEEN AND
確定集合
IN, NOT IN
字符匹配
LIKE, NOT LIKE
空值
IS NULL, IS NOT NULL
新聞熱點
疑難解答