zoukankan      html  css  js  c++  java
  • 常用数据库语法

     

    常用数据库语法(以Mysql为基础)

    注:我们以XXX代表数据库名(database),aaa代表数据表名(table),id和name为列名(column)

    DOS下连接数据库:mysql -u用户名 -hIP -p密码

    备份(前提是以断开数据库连接):mysqldump -u用户名 -p密码 数据库名 >F:\XXX.txt

    恢复:mysql -u用户名 -p密码 数据库名 <F:\XXX.txt

    数据库操作:
    create database XXX;

    show databases;

    use XXX;

    drop database XXX;

    表操作:
    1.创建create
    ——————————————————————
    create table aaa(
    id int auto_increment primary key,
    name varchar(30) not null,
    );
    ——————————————————————
    2.查看show
    ——————————————————————
    show columns from aaa;
    show columns from aaa from XXX;
    describe aaa id;(只显示一列)简写为:desc aaa id;
    ——————————————————————
    3.修改alert
    ———————————————————————————————————————————
    alter table aaa add email varchar(30) not null,modify name varchar(40) not null;
    注意修改的最小单位为一列,不能单独修改一列中的某一个属性。例如修改name varchar(10) not null成varchar(30),如果用modify name varchar(30);就会出错,因为默认把not null也修改成null了。
    ———————————————————————————————————————————
    4.插入insert
    —————————————————————————————————————
    insert into aaa(user,password,email) values('zollty','123456','zollty@qq.com');
    —————————————————————————————————————
    5.#######表查询语句#####
    ————————————————————————————————

    select * from aaa
    where ……
    group by ……
    order by ……
    having ……
    limit ……
    ————————————————————————————————
    6.修改update
    —————————————————————————————
    update aaa set password='741951' where user='zollty';
    —————————————————————————————
    7.删除delete
    ———————————————————
    delete from aaa where user='tiger';
    ———————————————————

     

     特别案例分析:

    1.联合查询

    SELECT a . * , b.name, b.email, b.qq, c.revert, c.revert_time
    FROM post a
    LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b WHERE a.guest_id = b.id
    ORDER BY a.id DESC

    这是一个实际的案例,要求是:在guest(id,name,email),post(id,guest_id,post,post_time),

    revert(id,post_id,revert,revert_time) 三个表中找到guest中的name,email,qq以及revert中的revert,revert_time还有post中的所有信息。三个表的外键关系是guest.id = post.guest_id,post.id = revert.post_id。查询的入口是post表,根据post的id主键找到guest和revert表中的相应信息,然后删除。

    第三行代码是关键:

    LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b WHERE a.guest_id = b.id

    分析:左连接到revert表,revert化名为c,连接条件是a.id = c.post_id(即revert中的post_id要和post表中的id相同);左连接到guest表,guest化名为b,连接条件是a.guest_id = b.id(即guest表中的id要和post表中的guest_id相同)。显然这两个连接都是利用了上面的外键关系。


     

    实例:

    注意:/*……*/为注释内容。

    /*连接数据库:-u后接用户名,-p后接密码*/
    C:\Users\Administrator>mysql -uroot -hlocalhost -pzollty
    Welcome to the MySQL monitor.  Commands end with ; or \g.

    /*选择数据库,USE后加数据库的名称*/
    mysql> USE zollty;
    Database changed

    /*查看student表的所有列(columns)*/
    mysql> SHOW COLUMNS FROM student;
    +-------+----------------------+------+-----+---------+-------+
    | Field | Type                 | Null | Key | Default | Extra |
    +-------+----------------------+------+-----+---------+-------+
    | Sno   | char(9)              | NO   | PRI | NULL    |       |
    | Sname | char(20)             | NO   |     | NULL    |       |
    | Ssex  | char(4)              | NO   |     | NULL    |       |
    | Sage  | smallint(6) unsigned | YES  |     | NULL    |       |
    | Sdept | varchar(20)          | YES  |     | NULL    |       |
    +-------+----------------------+------+-----+---------+-------+
    5 rows in set (0.03 sec)

    /*向student表中插入数据*/
    mysql> INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) values('20215121','李

    勇','男','20','CS');
    Query OK, 1 row affected (0.03 sec)

    /*以同样的方法插入"王敏""张立"等,(略)………*/


    mysql> SHOW COLUMNS FROM course;
    +---------+-------------+------+-----+---------+-------+
    | Field   | Type        | Null | Key | Default | Extra |
    +---------+-------------+------+-----+---------+-------+
    | Cno     | char(4)     | NO   | PRI | NULL    |       |
    | Cname   | char(40)    | NO   |     | NULL    |       |
    | Cpno    | char(4)     | YES  | MUL | NULL    |       |
    | Ccredit | smallint(6) | YES  |     | NULL    |       |
    +---------+-------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)

    /*向course表中插入数据,此时还不能插入Cpno列,因为我设置了外键约束*/
    mysql> INSERT INTO course(Cno,Cname) VALUES ('1','数据库');
    Query OK, 1 row affected (0.04 sec)

    mysql> INSERT INTO course(Cno,Cname) VALUES ('2','数学');
    Query OK, 1 row affected (0.04 sec)

    (略)………
    mysql> INSERT INTO course(Cno,Cname) VALUES ('7','PASCAL语言');
    Query OK, 1 row affected (0.02 sec)

    /*更新数据,因为上面还没有指定列Cpno和Ccredit的值,此时可以设置了*/
    mysql> UPDATE course
        -> SET Cpno='5', Ccredit=4
        -> WHERE Cno='1';
    Query OK, 1 row affected (0.06 sec)
    Rows matched: 1  Changed: 1  Warnings: 0

    mysql> UPDATE course
        -> SET Cpno='1', Ccredit=4
        -> WHERE Cno='3';
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1  Changed: 1  Warnings: 0

    (略)………

    /*最基本的查询语句:查询course表中所有列的数据*/
    mysql> SELECT *
        -> FROM course;
    +-----+------------+------+---------+
    | Cno | Cname      | Cpno | Ccredit |
    +-----+------------+------+---------+
    | 1   | 数据库     | 5    |       4 |
    | 2   | 数学       | NULL |       2 |
    | 3   | 信息系统   | 1    |       4 |
    | 4   | 操作系统   | 6    |       3 |
    | 5   | 数据结构   | 7    |       4 |
    | 6   | 数据处理   | NULL |       2 |
    | 7   | PASCAL语言 | 6    |       4 |
    +-----+------------+------+---------+
    7 rows in set (0.00 sec)

    /*退出MySQL*/
    mysql> exit
    Bye

    /*备份数据库:将名为zollty的数据库备份到E:\zollty.txt*/
    C:\Users\Administrator>mysqldump -uroot -pmymima zollty >E:\zollty.txt


     end

  • 相关阅读:
    Java ExecutorService四种线程池的例子与说明
    当代中国社会划分为十大阶层
    各大公司Java面试题超详细总结
    浅谈Java中的hashcode方法
    Java 9的JDK中值得期待的:不仅仅是模块化
    整理Excel数据,10秒搞定别人半天的工作量
    零基础搭建Hadoop大数据处理-环境
    Java性能优化权威指南第三章虚拟机概览第一部分
    15个顶级Java多线程面试题及答案
    最全面的Java多线程用法解析
  • 原文地址:https://www.cnblogs.com/zollty/p/2879305.html
Copyright © 2011-2022 走看看