数据库学习之数据库常用操作(一)

数据库常用操作

 

 

数据库操作(DDL)

1.创建数据库(在磁盘上创建一个对应的文件夹)
create database [if not exists] db_name [character set xxx] 

  

2.查看数据库
show databases;查看所有数据库
show create database db_name; 查看数据库的创建方式

 

3.修改数据库
alter database db_name [character set xxx] 

  

4.删除数据库
drop database [if exists] db_name;

  

5.使用数据库
切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
查看当前使用的数据库 select database();

  

 

数据库数据类型

 

数值类型

 

 

 

日期和时间类型

 

 

 

字符串类型

 

 

 


数据表操作

 

 1.创建表

 

(类似于一个excel表)

id 姓名 性别  生日 入职时间 职务部门 薪水

  

创建表语法格式

create table tab_name(
            field1 type [完整性约束条件],
            field2 type,
            ...
            fieldn type
        )[character set xxx];

  

创建一个员工表employee

create table employee(
  id int primary key auto_increment ,
  name varchar(20),
  gender bit default 1, -- gender char(1) default 1 ----- 或者 TINYINT(1) 
  birthday date,
  entry_date date,
  job varchar(20),
  salary double(4,2) unsigned
);

  

约束的作用
约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。
约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表。
下面是 SQL 中常用的约束,这些约束虽然已经在关系型数据库管理系统一章中讨论过了,但是仍然值得在这里回顾一遍。
NOT NULL 约束:保证列中数据不能有 NULL 值
DEFAULT 约束:提供该列数据未指定时所采用的默认值
UNIQUE 约束:保证列中的所有数据各不相同
主键约束:唯一标识数据表中的行/记录
外键约束:唯一标识其他表中的一条行/记录
CHECK 约束:此约束保证列中的所有值满足某一条件
索引:用于在数据库中快速创建或检索数据
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。


创建约束
当使用CREATE TABLE语句创建表时,或者在使用ALTER TABLE语句创建表之后,可以指定约束。
语法
CREATE TABLE table_name 
( 
column_name1 data_type(size) constraint_name, 
column_name2 data_type(size) constraint_name, 
column_name3 data_type(size) constraint_name, 
.... 
)

删除约束
任何现有约束都可以通过在 ALTER TABLE 命令中指定 DROP CONSTRAINT 选项的方法删除掉。
例如,要去除 EMPLOYEES 表中的主键约束,可以使用下述命令:
ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;
一些数据库实现可能提供了删除特定约束的快捷方法。例如,要在 Oracle 中删除一张表的主键约束,可以使用如下命令:
ALTER TABLE EMPLOYEES DROP PRIMARY KEY;
某些数据库实现允许禁用约束。这样与其从数据库中永久删除约束,你可以只是临时禁用掉它,过一段时间后再重新启用。

完整性约束
完整性约束用于保证关系型数据库中数据的精确性和一致性。对于关系型数据库来说,数据完整性由参照完整性(referential integrity,RI)来保证。
有很多种约束可以起到参照完整性的作用,这些约束包括主键约束(Primary Key)、外键约束(Foreign Key)、唯一性约束(Unique Constraint)以及上面提到的其他约束。

批注
约束的种类有很多,通过约束我们可以让进入数据库的数据更加规范,虽然这样做会很麻烦,有时候甚至还可能影响用户体验,但是还是建议尽量让你的数据库设计的更加规范,只有数据规范了,在之后的数据处理过程中或数据查询分析过程中才会更加高效。本节主要介绍语法部分,下一节会着重介绍各个约束的使用方法。

更多约束的示例

 

 

2.查看表信息

 desc tab_name 查看表结构
 show columns from tab_name  查看表结构
 show tables 查看当前数据库中的所有的表
 show create table tab_name    查看当前数据库表建表语句 

  

 

3.修改表结构

(1)增加列(字段)
      alter table tab_name add  列名 类型[完整性约束条件][first|after 字段名];
      alter table user add addr varchar(20) not null unique first/after username;
#添加多个字段
      alter table users2 
            add addr varchar(20),
            add age  int first,
            add birth varchar(20) after name;

  

 

(2)修改一列类型
      alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 modify age tinyint default 20;
      alter table users2 modify age int  after id;

  

 

(3)修改列名
      alter table tab_name change  列名 新列名 类型 [完整性约束条件][first|after 字段名];
      alter table users2 change age Age int default 28 first;

  

 

(4)删除一列
      alter table tab_name drop 列名;
      -- 思考:删除多列呢?删一个填一个呢?
      alter table users2 
            add salary float(6,2) unsigned not null after name,
            drop addr;

  

 

(5)修改表名
      rename table 表名 to 新表名;

  

 

(6)修该表所用的字符集    
      alter table student character set utf8;

  

 

4.删除表

drop table tab_name;

  

 

5 添加主键,删除主键

alter table tab_name add primary key(字段名称,...) 
    alter table users drop primary key;

    eg:
    mysql> create table test5(num int auto_increment);
    ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
    create table test(num int primary key auto_increment);
    -- 思考,如何删除主键?
    alter table test modify id int;   -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句
    alter table test drop primary key;-- 仅仅用这句也无法直接删除主键

  

 

6.索引

   alter table tab_name add unique [index|key] [索引名称](字段名称,...) 

    alter table users add unique(name)-- 索引值默认为字段名show create table users;
    alter table users add unique key user_name(name);-- 索引值为user_name

    -- 添加联合索引
    alter table users add unique index name_age(name,age);#show create table users;

    -- 删除唯一索引
    alter table tab_name drop {index|key} index_name

  

 

posted @ 2019-02-03 12:34  -零  阅读(467)  评论(0编辑  收藏  举报