目录

1、数据类型

MySQL类型大致分为三大类:数值、日期/时间和字符串(字符)类型

1.字符类型:Char定长  Varchar  text  blob   'abc'
2.数值类型:int  bigint  float  decimal

decimal(p,a)  p为精度    a为小数位数   decimal(5,2)  例如 999.99

注意:建表时 整数部分超出会报错,小数部分超出,会四舍五入

3.日期类型:Date                  yyyy-MM-dd HH:mm:ss.SSS 例如:1970-1-1 0:0:0.000 
                     time                   HH:mm:ss.SSS
                     datetime            yyyy-MM-dd
                     timestamp         长整数   545445454523  

2、建表和约束

1.约束

1.1 主键约束(PRIMARY KEY)

主键约束:唯一、不重复、不为空;每一个表只能有一个主键。

1.2 外键约束

 外键约束:外键创建在从表(副表)中,从表中的FOREIGN KEY指向主表中的PRIMARY KEY。

外键:
1、要求在从表设置外键关系
2、从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
3、主表的关联列必须是一个key(一般是主键或唯一)
4、插入数据时,先插入主表,再插入从表
删除数据时,先删除从表,再删除主表

删除表外键:
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;

1.3 非空值约束

非空值约束:用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

语法:CREATE TABLE 表名称(
         列名称 数据类型 NOT NULL,
         ...
     );

   

1.4 唯一约束(UNIQUE)

新增唯一约束:
  ALTER TABLE 表名 ADD UNIQUE INDEX(列名称1[,列名称2,..]);

删除唯一约束:其实就是删除指定的唯一约束的索引名称
  ALTER TABLE 表名 DROP INDEX 唯一约束缩影名称;

1.5 默认约束(DEFAULT)

默认值约束:指定列的默认值。
     语法:CREATE TABLE 表名称(
         列名称1 数据类型 DEFAULT '默认值',
         列名称2 数据类型,
         列名称3 数据类型,
         ...
     );

         

3、修改表结构

1.新增语法:alter table 表名称 add column 列名 数据类型(约束);
2.删除语法:alter table 表名称 drop column 列名;
3.修改语法:alter table 表名称 modify column 列名 数据类型;    

1修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;

2修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;

3添加新列
ALTER TABLE author ADD COLUMN annual (字段类型);

4删除列
ALTER TABLE book_author DROP COLUMN annual;

5修改表名
ALTER TABLE author RENAME TO book_author;
 

6查询表结构
DESC book;

7查看t_student中的所有索引,包括主键、外键、唯一
SHOW INDEX FROM t_student;

4、数据库四大语言

ddl  数据库结构定义语言  alert  creat
dml 数据库数据操作语言  insert update delete
dql 数据库数据查询语言   select
dcl  数据库事务语言  rollback commit 

5、表的复制

1.仅仅复制表的结构
CREATE TABLE copy LIKE author;

2.复制表的结构+数据
CREATE TABLE copy2
SELECT * FROM author;

3.只复制部分数据
CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE nation='中国';


4.仅仅复制某些字段
CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0=1;