MySQL学习笔记(一)
初学MySQL,感觉SQL语句还是有点多,在此做一些MySQL的基础笔记,以防忘记。
1. 连接数据库: mysql -h hostname -u username -p
默认情况下是连接本地的数据库,所以上面可以简写为:mysql -u root -p
2. 显示数据库:SHOW DATABASES;
3. 创建数据库:CREATE DATABASE db1;
4. 删除数据库:DROP DATABASE db1;
5. 使用某一数据库:USE db1;
6. 显示该数据库中所有的表:SHOW TABLES;
7. 创建表:CREATE TABLE <表名> (字段 数据类型 [约束条件] [默认值/其他属性] );
这里讲解常用的约束:
(1)主键约束,可以加快查询速度,要求主键列的数据唯一且不为空。一种是上面的设置方式,另为一种是在字段的最后加上:PRIMARY KEY [字段1,字段2,...]
(2)外键约束,建立两个数据表之间的链接,它是表中的一个字段,对应另一个表的主键,其作用是保持数据的一致性与完整性。涉及的主表与从表概念:主表(父表):相关联字段中主键所在的那个表;从表(子表):相关联字段中外键所在的那个表。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配。
语法规则如下:CONSTRAINT <外键名> FOREIGN KEY [字段1,字段2,...] REFERENCES <主键名> [主键列1,主键列2,...]
(3)非空约束:指定字段的值不为空,语法:NOT NULL
(4)唯一性约束:指明该列唯一,允许为空,但只能有一个空值,它与主键的区别是:一个表只允许存在一个主键,且主键列不许为空,而声明UNIQUE的字段可以有多个,且允许为空。它使用与主键一样,可以在数据类型后面加上,也可以在所有字段后面加上 CONSTRAINT <约束名> UNIQUE (字段名)
(5)默认约束:定义默认值,使用DEFAULT关键词。
当然还有一个设置自动增加的属性:AUTO_INCREMENT。一个表只允许有一个AUTO_INCREMENT,且它必须为主键的一部分。其字段的数据类型可以为任意整型类型(TINYINT、SMALLIN、INT、BIGINT等)。
8. 查看表结构:DESC tab1;
当需要查看创建表的详细信息时,可以使用:SHOW CREATE TABLE tab1\G;
9. 修改表名:ALTER TABLE <旧表名> RENAME <新表名>;
10. 修改字段名:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
11. 修改字段的数据结构:ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
12. 添加字段:ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [字段位置属性];
这里的字段位置属性是指新添加的字段在表中的顺序,可以指定为表的第一列:FIRST,也可以指定在某一列的后面:AFTER line。当然也可以使用下面的语句修改字段的排列位置。
13. 修改字段的排列位置:LATER TABLE <表名> MODIFY <字段1> <字段1数据类型> FIRST | AFTER <字段2>;
这里还加上了字段1数据类型,所以通过这种方法也可以修改字段1的数据类型。
14. 删除字段:ALTER TABLE <表名> DROP <字段名>;
15. 删除外键约束:ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
外键约束关联到其他的表,在这种情况下,如果直接删除父表会失败,所以可以先解除外键关联,再删除主表。
16. 删除表:DROP TABLE IF EXITS tab1;