zoukankan      html  css  js  c++  java
  • MySQL中数据表和数据的操作

     一.数据库表的操作

    1.数据表的创建

    mysql> create table t_user(
        ->   id int unsigned not null auto_increment primary key,
        ->   name varchar(40) not null,
        ->   sex enum('man', 'woman', 'secret') default 'man',
        ->   age tinyint unsigned
        -> ) engine=innodb default charset=utf8mb4;
    Query OK, 0 rows affected (0.01 sec)

    not null:该字段不能为空
    auto_increment 自动增长
    primary key:主键,主键对应的列不能重复
    default :可以设置默认值,当插入时,如果没有插入该列对应的值,则会插入默认值
    engine :引擎
    default charset:默认编码

    2.数据表的查询

    use db_itheima;切换到db_itheima数据库下

    show tables:展示db_itheima数据库下的所有数据表

    mysql> use db_itheima;
    Database changed
    mysql> show tables;
    +----------------------+
    | Tables_in_db_itheima |
    +----------------------+
    | it_article           |
    | it_student           |
    | t_user               |
    +----------------------+
    3 rows in set (0.00 sec)

    show create table t_user:查看t_user数据表的创建语句

    mysql> show create table t_user;
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table  | Create Table                                                                                                                                                                                                                                                                                     |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | t_user | CREATE TABLE `t_user` (
      `  id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `  name` varchar(40) NOT NULL,
      `  sex` enum('man','woman','secret') DEFAULT 'man',
      `  age` tinyint(3) unsigned DEFAULT NULL,
      PRIMARY KEY (`  id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4           |
    +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    3.数据表的修改
    可以修改的内容
    (1)数据表的列(列名,数据类型)
    添加列
    # alter table t_user add birth date first; # 添加在最前面
    alter table t_user add birth date after age; #添加到age列后

    mysql> alter table t_user add birth date after age;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc t_user;
    +-------+------------------------------+------+-----+---------+----------------+
    | Field | Type                         | Null | Key | Default | Extra          |
    +-------+------------------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned             | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(40)                  | NO   |     | NULL    |                |
    | sex   | enum('man','woman','secret') | YES  |     | man     |                |
    | age   | tinyint(3) unsigned          | YES  |     | NULL    |                |
    | birth | date                         | YES  |     | NULL    |                |
    +-------+------------------------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)


    修改列名和数据类型
    alter table t_user change name NAME varchar(30);
    修改数据类型
    alter table t_user modify age int unsigned;
    删除列
    alter table t_user drop age;
    (2)数据表名
    alter table t_user rename it_user;


    (3)引擎
    alter table t_user engine=myisam;
    alter table t_user engine=innodb;
    (4)编码类型
    alter table t_user default charset=utf8;

    4.数据表的删除
    drop table t_user;


    二.数据的操作
    1.添加数据
    insert into t_user values(null,'xianqian','woman',23,'1996-09-23'); # 所有列的值都需要写
    insert into t_user(id,name) values(null, 'xiaoming'); # 只插入id和name值
    insert into t_user values (null, 'tom','man',34,'1985-03-24'),(null,'jack','man',10,'2009-03-20'); # 可以插入多条数据

    mysql> insert into t_user values(null,'xianqian','woman',23,'1996-09-23');# 所有列的值都需要写
    insert into t_user(id,name) values(null, 'xiaoming');   # 只插入id和name值
    insert into t_user values (null, 'tom','man',34,'1985-03-24'),(null,'jack','man',10,'2009-03-20');      # 可以插入多条数据      Query OK, 1 row affected (0.02 sec)
    
    mysql> insert into t_user(id,name) values(null, 'xiaoming');# 只插入id和name值
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into t_user values (null, 'tom','man',34,'1985-03-24'),(null,'jack','man',10,'2009-03-20');# 可以插入多条数据
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from t_user;
    +----+----------+-------+------+------------+
    | id | name     | sex   | age  | birth      |
    +----+----------+-------+------+------------+
    |  1 | xianqian | woman |   23 | 1996-09-23 |
    |  2 | xiaoming | man   | NULL | NULL       |
    |  3 | tom      | man   |   34 | 1985-03-24 |
    |  4 | jack     | man   |   10 | 2009-03-20 |
    +----+----------+-------+------+------------+
    4 rows in set (0.00 sec)


    2.查询数据
    select * from t_user; #查询所有列的内容
    3.修改数据
    update t_user set age=19; # 所有记录的age列都会被改为19
    update t_user set age=18,age=20 where name='jack'; # name=jack的记录的age列被改为18;
    update t_user set sex='man' where age =18 or name ='jack'; #所有name='jack'或age=18的记录的sex列被改为'man'
    4.删除数据
    delete from t_user where name='jack';
    delete from t_user where name='tom' and age=20;
    5.清空数据
    delete from t_user; # 删除所有数据
    truncate t_user;
    6.delete与truncate的区别
    delete:
    属于DML语句,删除所有数据
    执行时会被记录事务,可以执行rollback回滚操作
    删除大量数据时速度慢,并且不会回收高水位线
    可以带条件删除

    truncate:
    属于DDL语句,删除所有数据,实际上是重新创建表结构
    执行时不会记录事务,不能执行rollback回滚操作
    删除大量数据时速度快,可以回收高水位线
    不能带条件删除


    扩展知识
    1.整数类型后的括号里的数字什么含义?
    int(11),tinyint(3)
    括号中的数字通常都是无效的,要想让它有效,需要在定义时加上unsigned和zerofill
    create table it_int(
    id tinyint(3) unsigned zerofill
    );

  • 相关阅读:
    office 365 激活
    jdk 的 安装以及环境变量配置
    eclipse 创建maven项目失败
    一千行mysql笔记
    mysql 之 清空表中数据
    java 之 servlet
    java 之 javaBean
    java 之 jsp详解
    java 之 jsp tomcat启动失败问题
    npm install, npm install -g, npm install --save, npm install --save-dev之间的区别
  • 原文地址:https://www.cnblogs.com/golinux/p/10846783.html
Copyright © 2011-2022 走看看