MySQL之DDL(数据库定义语言)

MySQL之DDL(数据库定义语言)

  1. 操作数据库

    定义数据库:

    create {database|schema} [if not exists] db_name [create_specification [,create_specification ]...]
    create_specification :
    	[default] character set charset_name //指定字符集
    	| [default] collate collation_name //指定数据字符集的比较方式
    

    例子:
    create database mysql1; //创建一个名称为mysql1的数据库
    create database mysql2 character set gbk; //创建一个使用gbk字符集的mysql2数据库
    create database mysql3 character set gbk collate gbk_chinese_ci; //创建一个使用gbk字符集,并带校验规则的mysql3数据库

    相关语句:

    show databases;	//查看当前所有数据库
    show create database db_name;	//查看数据库的创建信息
    use db_name;	//切换数据库
    select database();	//查看当前使用的数据库
    

    删除数据库:

    drop  {database|schema}  [if exists] db_name;
    

    修改数据库:

    alter database db_name  [alter _specification [,alter _specification ]...] 
    alter _specification :
    		[default] character set charset_name //指定字符集
    		| [default] collate collation_name //指定数据字符集的比较方式
    

    例子:
    alter database mysql2 character set utf8; //把mysql2 的字符集修改成utf8

  2. 数据类型

    整型:
    tinyint 有符号值:-128~127 1字节
    无符号值:0~255
    smallint 2字节
    mediumint 3字节
    int 4字节
    bigint 8字节

    浮点型:
    float[(M,D)] M为数字总位数,D为小数点后面位数
    double[(M,D)]
    double(5,2) 表示最多5位,其中必须有2位小数

    日期时间型
    year 年份
    time 时间类型 hh:mm:ss
    date 日期类型 yyyy-mm-dd
    datetime 日期时间类型 yyyy-mm-dd hh:mm:ss
    timestamp 时间戳

    字符型
    char(m) M个字节,0<=M<=255
    varchar(m) L+1个字节,L<=M,0<=M<=65535
    enum(‘value1’,‘value2’,…) 1或2个字节,取决于枚举值的个数(65535)
    set(‘value1’,‘value2’,…) 1、2、3、4或8个字节,取决于set成员个数(最多64个)

    char和varchar的区别:
    char(m)定义的长度是固定的,当保存char值时,在它们的右边填充空格已达到指定长度,当检索到char值时,尾部空格被删掉,在检索或删除过程中不进行大小写转换。
    varchar(m)定义的长度是可变的,保存时不进行填充,当检索到varchar时,尾部空格不删除,varchar的实际长度是它的长度+1,这一字节用于保存实际使用了多大的长度。
    如果分配给char和varchar的值超过了最大长度,则会进行裁剪以适合,如果被裁减掉的不是空格,则发出一条警告。

  3. 操作数据表

    定义数据表:

    create table [if not exists] table_name (
    	column_name		data_type;
    	...
    );
    

    例子:
    create table emp(
    id int;
    name varchar(20),
    job varchar(100),
    birthday date,
    salary double
    );

    修改数据表:
    1)添加单列

    alter table table_name add [column]  column_name  column_definition [first|after column_name ]  
    

    例子:
    alter table emp add age tinyint unsigned not null defult 10; //增加一个age列,不能为空,默认值为10
    alter table emp add password varchar(32) not null after age; //在age列后面增加一个password 列

    2)添加多列

    alter table table_name add [column]  (column_name  column_definition , ...)
    

    3)删除列

    alter table table_name drop[column]  column_name  
    

    4)修改列定义

    alter table table_name modify[column]  column_name  column_definition [first|after column_name ]  
    

    例子:
    alter table emp modify job varchar(50); //修改job列,使其长度为50

    5)修改列定义和列名称

    alter table table_name change[column]  old_column_name  new_column_name   column_definition [first|after column_name ]  
    

    例子:
    alter table emp change job j_ob varchar(40) first; //修改job列,使其长度为40,改名为j_ob,位于所有列之前

    6)修改表名称

    alter table table_name rename [to|as]   new_table_name 
    rename table table_name to   new_table_name [,table_name1  to   new_table_name1...]
    

    例子:
    alter table t2 rename to t3;

    插入记录:

    insert  into table_name  (列名1,列名2,...) values (列值1,列值2,...)
    

    列值和列名的类型、个数、顺序要一一对应
    列值不要超过列定义的长度
    如果插入空值,用null
    插入字符类型和日期类型要用单引号括起来

    删除记录:

    delete from table_name [where 列名=值]
    

    例子:
    delete from provinces where id=3; //删除表中id=3的记录
    delete from provinces; //删除表中i所有记录

你可能感兴趣的:(MySQL之DDL(数据库定义语言))