常用SQL语句
我将由外到里进行编写(数据库到表再到数据)
库层:
1、SHOW DATABASES;//查看或显示数据库
2、CREATE DATABASE 数据库名;//创建数据库 的命令
3、DROP DABABASE 数据库名;//删除数据库
4、ALTER DATABASE 数据库名 set=新字符集 collate=新校对集;//修改数据库字符集
5、USE 数据库名;//选择数据库
6、SHOW CREATE DATABASE dbname;
表层:
1、创建表形式:
CREATE TABLE tabname
(
字段名1,数据类型 [列级别约束条件] [默认值],
字段名1,数据类型 [列级别约束条件] [默认值],
…
[表级别约束条件]
);
a、使用主键约束PRIMARY KEY
两个地方添加:1、列约束条件位置(PRIMARY KEY) 2、表级别约束条件位置([CONSTRAINT ] PRIMARY KEY [字段名])
b、使用唯一性约束UNIQUE
同上两个地方添加:1、UNIQUE 2、[CONSTRAINT ] UNIQUE()
与主键的区别,两者同样要求唯一,但是UNIQUE可以是NULL,主键不可以。且一个表中PRIMARY KEY只能是一个,UNIQUE可以存在多个。
c、使用外键约束(InnoDB) FOREIGN KEY
一个地方添加:1、表级别约束条件位置添加 [CONSTRAINT ] FOREIGN KEY 字段名1[,字段名2,…] REFERENCES 主键列 [,主键列2,….]
注意:两个表之间有了外键的联系,不能直接删除主表,否则会出错!若必须要删除主表,可以先删除外键,再来删除主表。
d、非空约束 NOT NULL
一个地发添加:1、列约束条件位置 NOT NULL
e、使用默认约束 DEFAULT
一个位置添加:1、列约束条件位置 DEFAULT 默认值
f、设置表的属性值自动增加 AUTO_INCREMENT
一个位置添加:1、列约束条件位置 AUTO_INCREMENT
注意:此时的列必须是主键或者唯一键!
索引问题:以下是普通索引、全文索引、空间索引。上面创建约束的同时也是创建相应的索引,主键索引、唯一索引等等。
g、普通索引 INDEX/KEY
一个位置添加:1、列约束条件位置 INDEX();
h、全文索引(MyISAM) FULLTEXT
一个位置添加:1、列约束条件位置 FULLTEXT KEY [‘名字’] (‘字段名’);
i、创建空间索引(MyISAM) SPATIAL
一个位置添加:1、列约束条件位置 SPATIAL KEY [‘名字’] (‘字段名’);
2、DESCRIBE/DESC tabname;
3、SHOW CREATE TABLE tabname;
4、DROP TABLE [IF EXISTS] ;
5、ALTER TABLE ENGINE=;
6、ALTER TABLE RENAME [TO] ;
7、ALTER TABLE MODIFY ;
8、ALTER TABLE CHANGE ;
9、ALTER TABLE ADD [约束条件] [FIRST|AFTER 已存在的字段名];
10、ALTER TABLE MODIFY FIRST|AFTER ;
11、ALTER TABLE DROP ;
#在已有的表上创建索引
12、ALTER TABLE ADD INDEX [索引名] (字段名);
13、ALTER TABLE ADD PRIMARY KEY (字段名);
14、ALTER TABLE ADD FOREIGN KEY (字段名) REFERENCES (主键字段);
15、ALTER TABLE ADD UNIQUE KEY (字段名);
16、ALTER TABLE ADD FULLTEXT KEY(字段名);
17、ALTER TABLE ADD SPATIAL KEY (字段名);
18、ALTER TABLE ALTER SET DEFAULT 默认值;
#删除索引
19、ALTER TABLE ALTER DROP DEFAULT;
20、ALTER TABLE DROP PRIMARY KEY;
21、ALTER TABLE DROP FOREIGN KEY 外键名;
22、ALTER TABLE DROP INDEX 索引名;
23、DROP INDEX index_name ON tabname;
数据层:
1、插入数据
INSERT INTO tabname (column_list) VALUES (value_list);
INSERT INTO tabname (column_list) VALUES (value_list1),(value_list2),….,(value_listn);
INSERT INTO tabname SET 字段名1=值1,字段名2=值2,…..,字段名n=值n;\
2、更新数据
UPDATE tabname SET column_name1=value1,column_name2=value2,…column_namen=valuen WHERE (condition);
3、删除数据
DELETE FROM tabname[WHERE ];
TRUNCATE [TABLE] tabname;
DELETE与TRUNCATE的区别:TRUNCATE直接删除整个表,再创建一个一模一样的表。
4、数据查询
(1)、SELECT {*|}
[
FROM ,,…,
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
]
(2)、SELECT [字段1,字段2,…,字段n] from [表|视图] WHERE [查询条件];
(3)、连接查询
a、内连接查询 SELECT tab1.* tab2.* FROM tab1 INNER JOIN tab2 ON ;
b、左连接查询 SELECT tab1.* tab2.* FROM tab1 LEFT [OUTER] JOIN tab2 ON ;
c、右连接查询 SELECT tab1.* tab2.* FROM tab1 RIGHT [OUTER] JOIN tab2 ON ;
(4)、合并查询结果
SELECT column,… FROM tab1
UNION [ALL]
SELECT column,…FROM tab2;