SQL学习笔记——DDL语言

说明:Date Define Language数据定义语言,用于对数据库和表的管理和操作

1库的管理

一、创建数据库

CREATE DATABASE stuDB;

CREATE DATABASE IF NOT EXISTS stuDB;

二、删除数据库

DROP DATABASE stuDB;

DROP DATABASE IF EXISTS stuDB;

2表的管理

一、创建表

# 语法:

CREATE TABLE 【IF NOT EXISTS】表名(
            字段名 字段类型 【字段约束】,
            字段名 字段类型 【字段约束】,
            字段名 字段类型 【字段约束】,
            字段名 字段类型 【字段约束】
);


CREATE TABLE IF NOT EXISTS stuinfo(
	stuid INT,
	stuname VARCHAR(20),
	stugender CHAR,
	email VARCHAR(20),
	borndate DATETIME
	);
	
DESC stuinfo; # 获取表的信息

# 添加约束 

DROP TABLE IF EXISTS stuinfo;
CREATE TABLE IF NOT EXISTS stuinfo(
	stuid INT PRIMARY KEY, #添加了主键约束
	stuname VARCHAR(20) UNIQUE NOT NULL, # 添加了唯一约束+非空
	stugender CHAR DEFAULT '男', # 添加了默认约束
	email VARCHAR(20) NOT NULL,
	age INT CHECK( age BETWEEN 0 AND 100),#添加了检查约束,MySQL不支持
	majorid INT,
	CONSTRAINT fk_stuinfo_major FOREIGN KEY (majorid) REFERENCES major(id) # 添加了外键约束
	);

数据类型

  • 整型

    TINYINT    SMALLINT      INT      BIGINT
     
  • 浮点型

    FLOAT(m,n)
    DOUBLE(m,n)
    DECIMAL(m,n)
    m,n可选
     
  • 字符型

    CHAR(n):n可选
    VARCHAR(n):n必选
    TEXT
    n表示最多字符个数
     
  • 日期型

    DATE     TIME    DATETIME   TIMESTAMP
     
  • 二进制型

    BLOB   存储图片数据
  1. int:整型
  2. double/float:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
  3. decimal:浮点型,在表示钱方面使用该类型,因为不会出现精度缺失问题;
  4. char:固定长度字符串类型;char(4) 范围是0-255
  5. varchar:可变长度字符串类型;
  6. text:字符串类型;表示存储较长文本

 

意思

格式

n的解释

特点

效率

Char

固定长度字符

Char(n)

最大的字符个数,可选

默认:1

不管实际存储,开辟的空间都是n个字符

Varchar

可变长度字符

Varchar(n)

最大的字符个数,必选

根据实际存储决定开辟的空间

  1. blob:字节类型;//jpg mp3 avi
  2. date:日期类型,格式为:yyyy-MM-dd;
  3. time:时间类型,格式为:hh:mm:ss
  4. timestamp/datetime:时间戳类型;日期+时间 yyyyMMdd hhmmss

 

保存范围

所占字节

Datetime

1900-1-1~xxxx年

8

Timestamp

1970-1-1~2038-12-31

4

 


 常见约束

说明:用于限制表中字段的数据的,从而进一步保证数据表的数据是一致的、准确的、可靠的

  • NOT NULL  非空:用于限制该字段
  • DEFAULT    默认:用于限制该字段没有显式插入值,则直接显示默认值
  • PRIMARY KEY 主键:用于限制该字段值不能重复设置为主键列的字段默认不能为空
                                         一个表只能有一个主键,当然可以是组合主键
  • UNIQUE        唯一:用于限制该字段值不能重复 
      字段是否可以为空 一个表可以有几个
    主键 × 1个
    唯一 n个

                    
  • CHECK    检查:用于限制该字段值必须满足指定条件
                     CHECK(age BETWEEN 1 AND 100)
  • FOREIGN KEY   外键:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列
                                要求:主表的关联列和从表的关联列的类型必须一致,意思一样,名称无要求
                                           主表的关联列要求必须是主键

二、修改表【了解】

语法: ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段类型 【字段约束】;

  1. 修改表名
    ALTER TABLE stuinfo RENAME TO students;

     

  2. 添加字段
    ALTER TABLE students ADD COLUMN birthday TIMESTAMP NOT NULL;
    
    DESC students;

     

  3. 修改字段名
    ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL;

     

  4. 修改字段类型
    ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP;

     

  5. 删除字段
    ALTER TABLE students DROP COLUMN birthday;

     

三、删除表

DROP TABLE IF EXISTS students;

四、复制表

# 仅仅复制表的结构
CREATE TABLE newTable LIKE stuinfo;

# 复制表的结构+数据
CREATE TABLE newTable1 SELECT * FROM girls.`beauty`;

# 案例:复制employees表中的last_name,department_id,salary字段得到新表emp表,但不复制数据

CREATE TABLE emp 
SELECT last_name,department_id,salary 
FROM myemployees.`employees`
WHERE 1=2;

 

你可能感兴趣的:(SQL学习,mysql,sql)