学习总结

MYSQL

操作数据库、表

1. 操作数据库:CRUD
    1. C(Create):创建
        * 创建数据库:
            * create database 数据库名称;
        * 创建数据库,判断不存在,再创建:
            * create database if not exists 数据库名称;
        * 创建数据库,并指定字符集
            * create database 数据库名称 character set 字符集名;

        * 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
            * create database if not exists db4 character set gbk;
    2. R(Retrieve):查询
        * 查询所有数据库的名称:
            * show databases;
        * 查询某个数据库的字符集:查询某个数据库的创建语句
            * show create database 数据库名称;
    3. U(Update):修改
        * 修改数据库的字符集
            * alter database 数据库名称 character set 字符集名称;
    4. D(Delete):删除
        * 删除数据库
            * drop database 数据库名称;
        * 判断数据库存在,存在再删除
            * drop database if exists 数据库名称;
    5. 使用数据库
        * 查询当前正在使用的数据库名称
            * select database();
        * 使用数据库
            * use 数据库名称;

 

 

2. 操作表
    1. C(Create):创建
        1. 语法:
            create table 表名(
                列名1 数据类型1,
                列名2 数据类型2,
                ....
                列名n 数据类型n
            );
            * 注意:最后一列,不需要加逗号(,)
            * 数据库类型:
                1. int:整数类型
                    * age int,
                2. double:小数类型
                    * score double(5,2)
                3. date:日期,只包含年月日,yyyy-MM-dd
                4. datetime:日期,包含年月日时分秒     yyyy-MM-dd HH:mm:ss
                5. timestamp:时间错类型    包含年月日时分秒     yyyy-MM-dd HH:mm:ss    
                    * 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值

                6. varchar:字符串
                    * name varchar(20):姓名最大20个字符
                    * zhangsan 8个字符  张三 2个字符

 

        * 创建表
            create table student(
                id int,
                name varchar(32),
                age int ,
                score double(4,1),
                birthday date,
                insert_time timestamp
            );
        * 复制表:
            * create table 表名 like 被复制的表名;          
    2. R(Retrieve):查询
        * 查询某个数据库中所有的表名称
            * show tables;
        * 查询表结构
            * desc 表名;
    3. U(Update):修改
        1. 修改表名
            alter table 表名 rename to 新的表名;
        2. 修改表的字符集
            alter table 表名 character set 字符集名称;
        3. 添加一列
            alter table 表名 add 列名 数据类型;
        4. 修改列名称 类型
            alter table 表名 change 列名 新列别 新数据类型;
            alter table 表名 modify 列名 新数据类型;
        5. 删除列
            alter table 表名 drop 列名;
    4. D(Delete):删除
        * drop table 表名;
        * drop table  if exists 表名 ;

 

三建(建库建表建约束)

  • 主键的作用

一个表只能有一个主键(主键一般由一个列组成,但是也可以有多个列组成,称为联合主键)

保证数据行的唯一性

主键是不能重复的

一般表的主键针对该表是没有任何意义

面试题:主键约束和唯一约束的区别

                  相同点: 保证数据的唯一性

                  不同点:   一个表中只能有一个主键 但是可以有多个 唯一约束

                            主键不能为空    唯一约束是可以为空

  • 建约束

约束的作用:保证数据库中数据的完整性(正确性和准确性)

常见的约束:主键约束,外键约束,默认约束,唯一约束,check约束(mysql中check约束非强制check,所以无效)

创建约束的语法

外键约束

那个表是从表就在那个表上面添加外键

       alter table 从表表名 add constraint 约束名(形如:FK_XX) foreign key 从表(外键字段)  references 主表(主键字段);

     注意:建立外键约束时主表所关联的列必须是主键,从表和主表关联对应的列的数据类型相符

alter table   result

add CONSTRAINT fk_stuno FOREIGN key result(stuno) references student(stuno)

默认约束

  1. 一般的默认约束

     alter table 表名

     alter 列名 set default 默认值;

#向学生表插入数据 如果没有添加地址 默认为 光谷

alter table student

ALTER  address set default '光谷'#字符串为单引号

  1. 设置默认时间

    时间默认为当前时间:

     alter table 表名

     change 列名    列名 timestamp  not null default now();

    #时间默认为当前时间:

    alter table student

     change borndate    borndate  timestamp  not null default now();

唯一约束

alter table 表名  add CONSTRAINT unique(列名);

#将科目表中的科目名称设置唯一约束

 alter table `subject`  add CONSTRAINT unique(subjectname);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值