金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > 金沙棋牌app手机下载:mysql基本指令,管理数据库

金沙棋牌app手机下载:mysql基本指令,管理数据库

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-29 12:48

船停在港湾是很安全的,但那不是造船的目的!

1、数据库(database)管理

数据库:存放数据的仓库;

 

1.1 create 创建数据库

硬盘  运行内存

用户

1.2 show 查看所有数据库

mysql 现在被oracle收购了

  1. 创建用户
    1. mysql>grant 权限(select,insert,update,delete) on  数据库.数据表  to  用户名@电脑的地址  identified by "用户的密码" 
      1. 权限  【有四种权限】
        1. select      查询
        2. insert      插入
        3. update    修改
        4. delete  删除 
      2. 数据库.数据表 【有四种写法】  
        1. *.*           表示所有数据库与所有数据表          所有
        2. *.user          表示所有数据库的user表               某个表的数据库
        3. mysql.*        表示数据库mysql的所有数据表       某个数据库
        4. mysql.user  表示数据库mysql的数据库user表  某个数据库的某个数据表
      3. 用户名@电脑的地址
        1. 用户名          要创建的用户名称,不能跟原先的用户名相同
        2. 电脑的地址   mysql软件所在的电脑连接
          1. 在自己电脑使用时,用 127.0.0.1
          2. 与服务器的mysql交互时,用服务器的IP  
    2. mysql> grant select,insert,update,delete on mysql.* to ceosows@127.0.0.1 identif ied by "ceosows";
      Query OK, 0 rows affected (0.01 sec)
    3. mysql> grant select,insert,update,delete on *.* to ceosows@127.0.0.1 identif ied by "ceosows";
      Query OK, 0 rows affected (0.01 sec)
  2. 查看用户
    1. select * from 数据库.数据表
    2. select * from mysql.user            

1.3 alter 修改数据库

oracle  oracle公司

 

1.4 use 使用数据库

sqlServer 微软的

数据库常用的指令:

1.5 查看当前使用的数据库

一般都是关系型数据库管理软件

  1. 创建数据库
    1. mysql>create database 数据库名 ;
  2. 显示数据库
    1. mysql>show databases;
    2. +--------------------+
      | Database                |
      +--------------------+
      | information_schema   |
      | mysql                       |
      | performance_schema |
      | test                         |
      | twwq                       |
      | xhkdb                      |
      +--------------------+
      6 rows in set (0.02 sec) 
  3. 删除数据库
    1. drop database 数据库名;
    2. mysql> drop database twwq;
      Query OK, 0 rows affected (0.05 sec)
  4. 连接数据库
    1. use 数据库名;
    2. mysql>use twwq;
      Database changed
  5. 查看 当前连接的数据库
    1. mysql>select database();
      +------------+
      | database()  |
      +------------+
      | twwq          |
      +------------+
      1 row in set (0.00 sec)

1.6 drop 删除数据库

mysql(数据库管理软件)--数据库--表---行

数据表的常用指令

2、数据表(table)管理

sql语言:structured query language  结构化查询语言

  1. 创建表
    1. create table 表名(<字段名1> <类型1> [,..<字段名n> <类型n>]);        //警告:没有给表填加字段,会出错
    2. mysql> create table registered(id int(8) not null primary key auto_increment,
          -> username char(20) not nul
          -> password char(20) not null,
          -> repassword char(20) not null);
      Query OK, 0 rows affected (0.19 sec)
  2. 查看表
    1. mysql>desc 表名 ; (方式一)      mysql> show columns from 表名; (方式二)
    2. mysql>desc registered; (方式一)      mysql> show columns from registered;(方式二 )
      +------------+----------+------+-----+---------+----------------+
      | Field        | Type       | Null   | Key  | Default   | Extra               |
      +------------+----------+------+-----+---------+----------------+
      | id               | int(8)       | NO   | PRI   | NULL      | auto_increment |
      | username    | char(20)  | NO    |        | NULL      |                        |
      | password    | char(20)  | NO    |        | NULL      |                        |
      | repassword | char(20)  | NO    |        | NULL      |                        |
      +------------+----------+------+-----+---------+----------------+
      4 rows in set (0.01 sec)
  3. 修改表
    1. rename table (原先的)表名  to (修改后的)表;
    2. mysql> rename table registered to sows;
      Query OK, 0 rows affected (0.06 sec)
    3. 查看效果
      1. mysql> desc sows;
        +------------+----------+------+-----+---------+----------------+
        | Field        | Type       | Null   | Key  | Default   | Extra              |
        +------------+----------+------+-----+---------+----------------+
        | id               | int(8)      | NO    | PRI   | NULL     | auto_increment |
        | name          | char(20)  | YES  |         | NULL     |                        |
        | password    | char(20)  | NO    |        | NULL     |                        |
        | repassword | char(20)  | NO    |        | NULL     |                        |
        +------------+----------+------+-----+---------+----------------+
        4 rows in set (0.01 sec)      
  4. 删除表
    1. mysql>drop table 表名;            //警告:永久性删除数据表,慎用
    2. mysql>drop table registered;
      Query OK, 0 rows affected (0.05 sec)  
  5. 增加    alter add命令用来增加表的字段。
    1. 增添字段
      1. alter table 数据表 add 字段 参数 其他;
      2. mysql> alter table registered add sex char(2);
        Query OK, 0 rows affected (0.33 sec)
        Records: 0  Duplicates: 0  Warnings: 0
      3. 查看效果
        1. mysql> desc registered;
          +------------+----------+------+-----+---------+----------------+
          | Field           | Type        | Null   | Key | Default | Extra                 |
          +------------+----------+------+-----+---------+----------------+
          | id               | int(8)       | NO    | PRI | NULL    | auto_increment   |
          | username    | char(20)   | NO    |      | NULL    |                          |
          | password    | char(20)   | NO    |      | NULL    |                          |
          | repassword | char(20)   | NO    |      | NULL    |                          |
          | sex             | char(2)    | YES   |      | NULL    |                          |        //增加sex 字段
          +------------+----------+------+-----+---------+----------------+
          5 rows in set (0.01 sec) 
        2. mysql> desc registered;   
          ERROR 1146 (42S02): Table 'twwq.registered' doesn't exist   //原因表名被修改,因此原先的表名,无法使用了
    2. 修改字段
      1. alter table 数据表 change (要被修改的)字段  (修改后的)字段  参数;
      2. mysql> alter table registered change username name char(20);
        Query OK, 0 rows affected (0.33 sec)
        Records: 0  Duplicates: 0  Warnings: 0  
      3. 查看效果
        1. mysql> desc registered;
          +------------+----------+------+-----+---------+----------------+
          | Field           | Type       | Null    | Key  | Default  | Extra               |
          +------------+----------+------+-----+---------+----------------+
          | id               | int(8)      | NO     | PRI  | NULL     | auto_increment |
          | name          | char(20)  | YES   |        | NULL     |                        |        // username   修改成  name
          | password    | char(20)  | NO     |        | NULL     |                       |
          | repassword | char(20)  | NO     |         | NULL     |                      |
          | sex            | char(2)    | YES    |         | NULL     |                      |
          +------------+----------+------+-----+---------+----------------+
          5 rows in set (0.01 sec)   
    3. 删除字段
      1. alter table 数据表 drop 字段;
      2. mysql> alter table registered drop sex;
        Query OK, 0 rows affected (0.31 sec)
        Records: 0  Duplicates: 0  Warnings: 0
      3. 查看效果
        1. mysql> desc registered;
          +------------+----------+------+-----+---------+----------------+
          | Field           | Type       | Null    | Key  | Default  | Extra               |
          +------------+----------+------+-----+---------+----------------+
          | id               | int(8)      | NO    | PRI   | NULL     | auto_increment |
          | name          | char(20)  | YES  |        | NULL      |                        |
          | password    | char(20)  | NO    |        | NULL     |                        |
          | repassword | char(20)  | NO    |        | NULL      |                       |
          +------------+----------+------+-----+---------+----------------+   //sex 字段 已经被删除
          4 rows in set (0.01 sec)             
    4. 加索引  
      1. alter table 数据表 add index 索引名(【已经存在于表的】字段名);
      2. mysql> alter table registered add index sows_name(username);
        Query OK, 0 rows affected (0.17 sec)
        Records: 0  Duplicates: 0  Warnings: 0 
      3. 查看效果
        1. mysql> desc registered;
          +------------+----------+------+-----+---------+----------------+
          | Field           | Type       | Null    | Key | Default | Extra                 |
          +------------+----------+------+-----+---------+----------------+
          | id               | int(8)      | NO    | PRI   | NULL    | auto_increment  |
          | username    | char(20)  | NO    | MUL | NULL     |                        |   //Key 字段出现 MUL
          | password    | char(20)  | NO    |        | NULL     |                        |
          | repassword | char(20)  | NO    |        | NULL     |                        |
          | sex            | char(2)    | YES   |        | NULL     |                        |
          +------------+----------+------+-----+---------+----------------+
          5 rows in set (0.01 sec)  
    5. 删除索引
      1. alter table 数据表 drop index 索引名;
      2. mysql> alter table registered drop index sows_name;
        Query OK, 0 rows affected (0.15 sec)
        Records: 0  Duplicates: 0  Warnings: 0
      3. 查看效果
        1. mysql> desc registered;
          +------------+----------+------+-----+---------+----------------+
          | Field           | Type       | Null    | Key | Default   | Extra               |
          +------------+----------+------+-----+---------+----------------+
          | id               | int(8)      | NO    | PRI   | NULL     | auto_increment |
          | username    | char(20)  | NO    |        | NULL     |                        |  //key 字段的内容消失
          | password    | char(20)  | NO    |        | NULL     |                        |
          | repassword | char(20)  | NO    |        | NULL     |                        |
          | sex            | char(2)    | YES   |        | NULL     |                        |
          +------------+----------+------+-----+---------+----------------+
          5 rows in set (0.01 sec)                
  6. 插入数据
    1. mysql>insert into 数据表(字段  //如果已经实现步骤1,则不用再写字段) values (根据字段的数量,变量类型、变量长度要求、是否允许为空,来进行填写内容)
    2. mysql> insert into registered values (1,'sows','asqw1234','asqw1234'),(2,'ceo','
      aswe1322','aswe1322'),(3,'jk','qazxsw12','qazxsw12');
      Query OK, 3 rows affected (0.01 sec)
      Records: 3  Duplicates: 0  Warnings: 0      // 成功插入 3条数据
  7. 查看表中的数据    //准确性的查询所需数据
    1. mysql>select * from 数据表;                         //获取表中所有数据
      1. mysql>select * from  registered;
        +----+----------+----------+--------------+
        | id    | username | password | repassword |
        +----+----------+----------+--------------+
        |  1   | sows        | asqw1234 | asqw1234   |
        |  2   | ceo          | aswe1322  | aswe1322   |
        |  3   | jk            | qazxsw12  | qazxsw12   |
        +----+----------+----------+--------------+
        3 rows in set (0.00 sec)      //获取到3条数据

2.1 create 创建表

我们学的是标准sql  ,sql的方言被各个数据库软件单独使用;

2.  mysql&gt;select * from 数据表 order by id limit
    从哪个位置开始,一共几条;
    1.  mysql&gt; select * from registered order by id limit 1,2;  
        +----+----------+----------+------------+  
        | id | username | password | repassword  |  
        +----+----------+----------+------------+  
        |  2 | ceo      | aswe1322 | aswe1322       |  
        |  3 | jk       | qazxsw12 | qazxsw12        |  
        +----+----------+----------+------------+  
        2 rows in set (0.00 sec)     //获取两条数据

2.2 show 显示表

1.登录mysql数据库:

  1. 删除表中的数据
    1. mysql>delect from 数据表  where 条件限制 ;  
    2. mysql> delete from registered where id=1;
      Query OK, 1 row affected (0.01 sec)  //删除成功
    3. 使用5,查看删除的效果
      1. mysql> select * from registered;
        +----+----------+----------+------------+
        | id    | username | password | repassword |
        +----+----------+----------+------------+
        |  2    | ceo         | aswe1322 | aswe1322   |
        |  3    | jk           | qazxsw12 | qazxsw12   |
        +----+----------+----------+------------+
        2 rows in set (0.00 sec)   //id为1的数据被成功删除了  
  2. 修改表中的数据
    1. mysql>update 数据表 set (要修改数据的)字段=修改后的数据   where  条件限制
      1. mysql> update registered set username='sowsceo' where id=2;
        Query OK, 1 row affected (0.01 sec)                          //修改成功
        Rows matched: 1  Changed: 1  Warnings: 0     //修改的数量
      2. 查看修改后的效果
        1. mysql> select * from registered;
          +----+----------+----------+------------+
          | id | username | password | repassword |
          +----+----------+----------+------------+
          |  2 | sowsceo  | aswe1322 | aswe1322   |      //username 从ceo 变成 sowsceo
          |  3 | jk       | qazxsw12 | qazxsw12   |
          +----+----------+----------+------------+
          2 rows in set (0.00 sec)   

2.3 desc 查看表结构

方式1:mysql -uroot -proot

2.4 alter 修改表结构(增、删、改)

方式2:

2.4.1 insert 在表中添加列(字段)

C:UsersAdministrator>mysql -uroot -p

2.4.2 alter 修改表(列)字段

Enter password: ****

2.4.3 delete 删除表(列)字段

退出数据库:quit;  或者exit;

2.4.4 rename 重命名表名

2.查看所有数据库:mysql> show databases;

2.5 create 利用已有数据创建新表

3.选择要使用的数据库:mysql> use 数据库名;

3、数据的操作及管理

4.查看所有表:mysql> show tables;

3.1 增加数据(增)

5.创建数据库:mysql> create database; 新数据库名;

3.2 删除数据(删)

6.删除数据库:mysql> drop database; 被删除的数据库名;

3.3 修改数据(改)

7.新建一个表:mysql> create table student(sid int,sname varchar(10));

3.4 查询数据(查)

8.查看表结构:mysql> desc student;

4、管理视图

数据类型:

1、数据库(database)管理

文本:

1.1 create 创建数据库

char(10):固定长度的字符串; char(10);开辟10个字符的内存空间;

createdatabasefirstDB;

varchar(n):可变长度的字符串,最多可以存n个字符,若实际存的不到n个那么就只开辟实际存储的个数的大小;

1.2 show 查看所有数据库

n的最大值为255;

mysql> show databases;

要用引号引起来

+--------------------+

数字:

| Database           |

int:整数;

+--------------------+

float(m,n):单精度小数,m表示总共有多少位,n表示小数有几位;

| information_schema |

double(m,n):双精度小数,m表示总共有多少位,n表示小数有几位;

| firstDB            |

decimal(m,n):比double更精确,m表示总共有多少位,n表示小数有几位;

| mysql              |

日期:

| performance_schema |

date:日期。格式:YYYY-MM-DD  注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

+--------------------+

所有的日期都用引号引起来

4 rows in set (0.00 sec)

DATETIME:*日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

1.3 alter 修改数据库

注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

alter 命令修改数据库编码:

创建表格:

默认创建的数据库默认不支持中文字符,如果我们需要它支持中文字符,则将它的编码设置为utf8格式:

mysql> create table student2(sid int ,sname varchar(10),birthday date,

mysql> ALTER DATABASE testDB CHARACTER SET UTF8;

-> score double(5,2));

Query OK, 1 row affected (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

1.4 use 使用数据库

插入数据:mysql> insert into student2 (sid,sname,birthday,score) values(1001,'tom','2000-01-11',99.99);

mysql> use firstDB;

查看表中的所有数据:mysql> select * from student2;

Database changed

+------+-------+------------+-------+

1.5 查看当前使用的数据库

| sid  | sname | birthday  | score |

mysql> select database();

+------+-------+------------+-------+

+------------+

| 1001 | tom  | 2000-01-11 | 99.99 |

| database() |

| 1001 | bob  | 2000-01-11 | 99.99 |

+------------+

| 1001 | lucy  | 2000-01-11 | 99.99 |

| firstdb    |

+------+-------+------------+-------+

+------------+

3 rows in set (0.00 sec)

1 row in set (0.00 sec)

mysql Day2

1.6 drop 删除数据库

设置命令行显示时的编码格式:

mysql> drop database firstDB;

命令行窗口是windows自带的,它的编码是gbk;

Query OK, 0 rows affected (0.00 sec)

执行set names gbk;告诉mysql把数据显示到命令行的时候用gbk显示;

2、数据表(table)管理

这个语句在命令行关闭后失效,下次重新设置;

我们首先创建一个数据库,提供我们往后的使用:

一、对表结构的操作:

mysql> create database testDB;

1.增加一个字段

Query OK, 1 row affected (0.00 sec)

语法:alter table 表名  add  column 新字段名 字段类型;

创建后记得用use命令进入(使用)数据库,不然后面的操作都会不成功的。

mysql> alter table student2 add column sex varchar(10);

2.1 create 创建表

2.修改一个字段

mysql> create table PEOPLE (

语法: alter table  表名 modify 列名  新数据类型;

-> ID int AUTO_INCREMENT PRIMARY KEY,

mysql> alter table student2 modify sex int;

-> NAME varchar(20) not null,

3.更改字段名

-> AGE int not null,

语法:alter table 表名 change 原列名  新列名  数据类型;

-> BIRTHDAY datetime);

mysql> alter table student2 change  sex gender varchar(10) ;

Query OK, 0 rows affected (0.01 sec)

  1. 删除表的字段

2.2 show 显示表

语法: alter table  表名 drop  列名;

显示当前数据库所有的数据表

mysql> alter table student2 drop gender;

mysql> show tables;

5.重命名表

+------------------+

语法:alter table  表名 rename to 新表名;

| Tables_in_testdb |

mysql> alter table student2 rename to stu;

+------------------+

6.复制表

| PEOPLE           |

6.1复制表结构及数据

+------------------+

语法:create table 新表 select * from  旧表;

1 row in set (0.00 sec)

mysql> update student set sal=120 where sal is null;

2.3 desc 查看表结构

mysql> select * from student;

mysql> desc PEOPLE

6.2 只复制表结构

-> ;

语法:create table 新表 select * from  旧表  where  1=0;

+----------+-------------+------+-----+---------+----------------+

mysql> create table stu3 select * from stu where 1>9;

| Field    | Type        | Null | Key | Default | Extra          |

7.删除表

+----------+-------------+------+-----+---------+----------------+

语法: drop table  表名;

| ID       | int(11)     | NO   | PRI | NULL    | auto_increment |

mysql> drop table student;

| NAME     | varchar(20) | NO   |     | NULL    |                |

8.索引:查询快,增删慢;不可滥用;

| AGE      | int(11)     | NO   |     | NULL    |                |

创建索引:

| BIRTHDAY | datetime    | YES  |     | NULL    |                |

语法:create index 索引名  on 表名(字段名);

+----------+-------------+------+-----+---------+----------------+

mysql> create index  my_index1 on stu2(sname);

4 rows in set (0.01 sec)

查看索引:

2.4 alter 修改表结构(增、删、改)

mysql> show index from stu2;

默认创建的表不支持中文字符,所以需将表编码设置为utf8:

删除索引:

mysql> ALTER TABLE KEYCHAIN CONVERT TO CHARACTER SET UTF8;

mysql> drop index my_index1 on stu2;

Query OK, 1 row affected (0.02 sec)

二、mysql约束:

Records: 1  Duplicates: 0  Warnings: 0

1.非空约束  not null:限制某一列的值不能为null;

2.4.1 insert 在表中添加列(字段)

方式1:在建表语句中字段类型的后面加上 not null;

mysql> alter table PEOPLE add star BOOL;

mysql> create table emp2(empno int ,ename varchar(10) not null );

Query OK, 0 rows affected (0.02 sec)

方式2:

Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table emp2 modify empno int not null;

提示:在MySQL里,布尔类型会自动转换为tinyint(1)类型。

删除非空约束:

我们不妨使用desc去查看一下PEOPLE表结构:

mysql> alter table emp2 modify empno int null;

mysql> desc PEOPLE;

2.默认值 default:给某一列设置默认值;

+----------+-------------+------+-----+---------+----------------+

默认情况下的默认值为null;

| Field    | Type        | Null | Key | Default | Extra          |

方式1:

+----------+-------------+------+-----+---------+----------------+

mysql> alter table emp modify empno int default 0;

| ID       | int(11)     | NO   | PRI | NULL    | auto_increment |

方式2:在建表语句中字段类型的后面加上 default 默认值;

| NAME     | varchar(20) | NO   |     | NULL    |                |

mysql> create table emp2(empno int ,ename varchar(10) default '张三');

| AGE      | int(11)     | NO   |     | NULL    |                |

mysql> alter table emp2 modify ename varchar(10) default null;

| BIRTHDAY | datetime    | YES  |     | NULL    |                |

3.唯一约束 unique:限制列里面的值不能重复;

| star     | tinyint(1)  | YES  |     | NULL    |                |

方式1:

+----------+-------------+------+-----+---------+----------------+

mysql> alter table emp2 modify empno int  unique;

5 rows in set (0.00 sec)

方式2:在建表语句中字段类型的后面加上 unique

现在,你该相信我了吧?

mysql> create table emp3(empno int unique);

2.4.2 alter 修改表(列)字段

方式3:自定义名字的

mysql> alter table PEOPLE MODIFY star int;

mysql> alter table emp3 add constraint my_unique unique(empno);

Query OK, 0 rows affected (0.01 sec)

删除唯一约束:

Records: 0  Duplicates: 0  Warnings: 0

语法:alter  table 表名  drop index 唯一约束的索引名(默认为所在的字段名);

也可以指定 int(n) 的长度,比如 int(2)。

mysql> alter  table emp3  drop index empno;

我们再次使用desc查看PEOPLE表结构:

4.主键约束 primary key(非空+唯一)

mysql> desc PEOPLE;

方式1:

+----------+-------------+------+-----+---------+----------------+

mysql> alter table emp modify empno int primary key;

| Field    | Type        | Null | Key | Default | Extra          |

方式2:在建表语句中字段类型的后面加上 primary key;

+----------+-------------+------+-----+---------+----------------+

mysql> create table emp10(empno int primary key,ename varchar(10));

| ID       | int(11)     | NO   | PRI | NULL    | auto_increment |

方式3:自定义名字的

| NAME     | varchar(20) | NO   |     | NULL    |                |

mysql> create table emp11(empno int ,ename char(10),constraint my_key primary key(empno));

| AGE      | int(11)     | NO   |     | NULL    |                |

删除主键约束:

| BIRTHDAY | datetime    | YES  |     | NULL    |                |

方式1:mysql> alter table emp11 drop primary key;

| star     | int(11)     | YES  |     | NULL    |                |

5.主键自增长auto_increment

+----------+-------------+------+-----+---------+----------------+

方式1:在建表语句中字段类型的后面加上 primary key auto_increment;

5 rows in set (0.00 sec)

方式2:mysql> alter table  emp12 modify empno int primary key auto_increment;

2.4.3 delete 删除表(列)字段

删除自增长: alter table emp modify empno int;

mysql> alter table PEOPLE DROP column star;

6.外键约束 foreign key 不可滥用

Query OK, 0 rows affected (0.02 sec)

方式1:

Records: 0  Duplicates: 0  Warnings: 0

alter table 表名 add constraint 自定义外键名 foreign key(本表字段)  references 被参考的表名(被参考的字段);

删除后,再次查看PEOPLE表结构:

mysql> alter table emp add constraint fk_deptno foreign key(deptno)  references dept(deptno);

mysql> desc PEOPLE;

方式2:

+----------+-------------+------+-----+---------+----------------+

在建表语句最后一个字段的后面 constraint 自定义外键名 foreign key(本表字段)  references 被参考的表名(被参考的字段)

| Field    | Type        | Null | Key | Default | Extra          |

删除外键:

+----------+-------------+------+-----+---------+----------------+

语法:alter table emp drop foreign 外键名;

| ID       | int(11)     | NO   | PRI | NULL    | auto_increment |

mysql> alter table emp drop foreign key fk_deptno;

| NAME     | varchar(20) | NO   |     | NULL    |                |

mysql Day2 作业:

| AGE      | int(11)     | NO   |     | NULL    |                |

1.创建学生表student:学生编号sid 主键自增长,姓名sname 非空,性别sex  非空,生日birthday ,年龄age ,班级编号cid ;

| BIRTHDAY | datetime    | YES  |     | NULL    |                |

mysql> create table student(sid int primary key auto_increment,sname varchar(10)

+----------+-------------+------+-----+---------+----------------+

not null,sex varchar(10) not null,birthday date,age int,cid int);

4 rows in set (0.00 sec)

Query OK, 0 rows affected (0.03 sec)

删除字段成功,现在我们已经不能看到star的字段了。

这是学生表student:

2.4.4 rename 重命名表名

+----------+-------------+------+-----+---------+----------------+

mysql> RENAME TABLE PEOPLE TO NEW_PEOPLE;

| Field    | Type        | Null | Key | Default | Extra          |

Query OK, 0 rows affected (0.00 sec)

+----------+-------------+------+-----+---------+----------------+

2.4.5 null or not null

| sid      | int(11)    | NO  | PRI | NULL    | auto_increment |

修改表字段允许为空或不允许为空:

| sname    | varchar(10) | NO  |    |        |                |

mysql> ALTER TABLE PEOPLE MODIFY AGE INT(3) NULL;

| sex      | varchar(10) | NO  |    |        |                |

Query OK, 0 rows affected (0.01 sec)

| birthday | date        | YES  |    | NULL    |                |

Records: 0  Duplicates: 0  Warnings: 0

| age      | int(11)    | YES  |    | NULL    |                |

把 PEOPLE 表的 AGE 字段设置成“允许为空”,即插入记录时这个字段可以不录入。否则相反。

| cid      | int(11)    | YES  |    | NULL    |                |

它的格式为:ALTER TABLE MODIFY  

+----------+-------------+------+-----+---------+----------------+

2.5 create 利用已有数据创建新表

2.创建班级表class: 班级编号 cid 主键 ,班级名称cname 非空;

mysql> create table newTable select * from PEOPLE;

mysql> create table class(cid int primary key,cname varchar(10) not null);

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Records: 0  Duplicates: 0  Warnings: 0

mysql> desc class;

我们查看一下目前数据库存在的表:

+-------+-------------+------+-----+---------+-------+

mysql> show tables;

| Field | Type        | Null | Key | Default | Extra |

+------------------+

+-------+-------------+------+-----+---------+-------+

| Tables_in_testdb |

| cid  | int(11)    | NO  | PRI |        |      |

+------------------+

| cname | varchar(10) | NO  |    |        |      |

| PEOPLE           |

+-------+-------------+------+-----+---------+-------+

| newTable         |

3.给学生表添加一个字段:住址address;

+------------------+

mysql> alter table student add column address varchar(10);

2 rows in set (0.00 sec)

Query OK, 0 rows affected (0.09 sec)

3、数据的操作及管理

Records: 0  Duplicates: 0  Warnings: 0

数据表的基本操作,包含增、删、改、查数据。

这是增加的字段address:

以下命令均在PEOPLE表上操作。

mysql> desc student;

3.1 增加数据(增)

+----------+-------------+------+-----+---------+----------------+

PEOPLE表目前是没有数据的,它是空的数据表,我们现在先添加一些数据。

| Field    | Type        | Null | Key | Default | Extra          |

insert into 命令添加数据:

+----------+-------------+------+-----+---------+----------------+

mysql> insert into PEOPLE VALUES (null, 'Anny', 22, '1992-05-22');

| sid      | int(11)    | NO  | PRI | NULL    | auto_increment |

Query OK, 1 row affected (0.00 sec)

| sname    | varchar(10) | NO  |    |        |                |

使用select命令查看表(会在后面介绍),现在我们查看PEOPLE数据表的数据:

| sex      | varchar(10) | NO  |    |        |                |

mysql> select * from PEOPLE;

| birthday | date        | YES  |    | NULL    |                |

+----+------+-----+---------------------+

| age      | int(11)    | YES  |    | NULL    |                |

| ID | NAME | AGE | BIRTHDAY            |

| cid      | int(11)    | YES  |    | NULL    |                |

+----+------+-----+---------------------+

| address  | varchar(10) | YES  |    | NULL    |                |

|  1 | Anny |  22 | 1992-05-22 00:00:00 |

+----------+-------------+------+-----+---------+----------------+

+----+------+-----+---------------------+

7 rows in set (0.01 sec)

1 row in set (0.00 sec)

4.修改学生表性别字段为gender;

数据表现在有一条数据。

mysql> alter table student change sex gender varchar(10);

我们多添加几条数据,如:

Query OK, 0 rows affected (0.02 sec)

mysql> select * from PEOPLE;

Records: 0  Duplicates: 0  Warnings: 0

+----+--------+-----+---------------------+

修改后的student表:

| ID | NAME   | AGE | BIRTHDAY            |

mysql> desc student;

+----+--------+-----+---------------------+

+----------+-------------+------+-----+---------+----------------+

|  1 | Anny   |  22 | 1992-05-22 00:00:00 |

| Field    | Type        | Null | Key | Default | Extra          |

|  2 | Garvey |  23 | 1991-05-22 00:00:00 |

+----------+-------------+------+-----+---------+----------------+

|  3 | Lisa   |  25 | 1989-05-22 00:00:00 |

| sid      | int(11)    | NO  | PRI | NULL    | auto_increment |

|  4 | Nick   |  24 | 1990-05-22 00:00:00 |

| sname    | varchar(10) | NO  |    |        |                |

|  5 | Rick   |  24 | 1991-05-22 00:00:00 |

| gender  | varchar(10) | YES  |    | NULL    |                |

+----+--------+-----+---------------------+

| birthday | date        | YES  |    | NULL    |                |

5 rows in set (0.00 sec)

| age      | int(11)    | YES  |    | NULL    |                |

3.2 删除数据(删)

| cid      | int(11)    | YES  |    | NULL    |                |

delete 命令删除数据:

| address  | varchar(10) | YES  |    | NULL    |                |

mysql> delete from PEOPLE where name = 'Lisa';

+----------+-------------+------+-----+---------+----------------+

Query OK, 1 row affected (0.01 sec)

7 rows in set (0.01 sec)

再次查询PEOPLE表:

5.给birthday添加默认值为2000-01-01;

mysql> select * from PEOPLE;

mysql> alter table student modify birthday date default '2000-01-01';

+----+--------+-----+---------------------+

Query OK, 0 rows affected (0.03 sec)

| ID | NAME   | AGE | BIRTHDAY            |

Records: 0  Duplicates: 0  Warnings: 0

+----+--------+-----+---------------------+

改变birthday的默认值:

|  1 | Anny   |  22 | 1992-05-22 00:00:00 |

mysql> desc student;

|  2 | Garvey |  23 | 1991-05-22 00:00:00 |

+----------+-------------+------+-----+------------+----------------+

|  4 | Nick   |  24 | 1990-05-22 00:00:00 |

| Field    | Type        | Null | Key | Default    | Extra          |

|  5 | Rick   |  24 | 1991-05-22 00:00:00 |

+----------+-------------+------+-----+------------+----------------+

+----+--------+-----+---------------------+

| sid      | int(11)    | NO  | PRI | NULL      | auto_increment |

4 rows in set (0.00 sec)

| sname    | varchar(10) | NO  |    |            |                |

已经看不到名为“Lisa”的数据了。

| gender  | varchar(10) | YES  |    | NULL      |                |

3.3 修改数据(改)

| birthday | date        | YES  |    | 2000-01-01 |                |

update 命令修改数据:

| age      | int(11)    | YES  |    | NULL      |                |

mysql> update PEOPLE set name='Calvin' where name = 'Garvey';

| cid      | int(11)    | YES  |    | NULL      |                |

Query OK, 1 row affected (0.00 sec)

| address  | varchar(10) | YES  |    | NULL      |                |

Rows matched: 1  Changed: 1  Warnings: 0

+----------+-------------+------+-----+------------+----------------+

查询PEOPLE表内容:

6.给性别字段添加默认值为男;

mysql> select * from PEOPLE;

mysql> set names gbk;

+----+--------+-----+---------------------+

Query OK, 0 rows affected (0.02 sec)

| ID | NAME   | AGE | BIRTHDAY            |

mysql> alter table student modify gender varchar(10) default '男';

+----+--------+-----+---------------------+

Query OK, 0 rows affected (0.04 sec)

|  1 | Anny   |  22 | 1992-05-22 00:00:00 |

Records: 0  Duplicates: 0  Warnings: 0

|  2 | Calvin |  23 | 1991-05-22 00:00:00 |

mysql> desc student;

|  4 | Nick   |  24 | 1990-05-22 00:00:00 |

+----------+-------------+------+-----+------------+----------------+

|  5 | Rick   |  24 | 1991-05-22 00:00:00 |

| Field    | Type        | Null | Key | Default    | Extra          |

+----+--------+-----+---------------------+

+----------+-------------+------+-----+------------+----------------+

4 rows in set (0.00 sec)

| sid      | int(11)    | NO  | PRI | NULL      | auto_increment |

名为“Garvey”的记录已经修改为“Calvin”。

| sname    | varchar(10) | NO  |    |            |                |

3.4 查询数据(查)

| gender  | varchar(10) | YES  |    | 男          |                |

select 命令查询数据,最简单的就是查询表的所有数据,也就是我们最初使用到的那条命令:

| birthday | date        | YES  |    | 2000-01-01 |                |

mysql> select * from PEOPLE;

| age      | int(11)    | YES  |    | NULL      |                |

+----+--------+-----+---------------------+

| cid      | int(11)    | YES  |    | NULL      |                |

| ID | NAME   | AGE | BIRTHDAY            |

| address  | varchar(10) | YES  |    | NULL      |                |

+----+--------+-----+---------------------+

+----------+-------------+------+-----+------------+----------------+

|  1 | Anny   |  22 | 1992-05-22 00:00:00 |

7.删除age字段;

|  2 | Calvin |  23 | 1991-05-22 00:00:00 |

mysql> alter table student drop age;

|  4 | Nick   |  24 | 1990-05-22 00:00:00 |

Query OK, 0 rows affected (0.01 sec)

|  5 | Rick   |  24 | 1991-05-22 00:00:00 |

mysql> desc student;

+----+--------+-----+---------------------+

+----------+-------------+------+-----+------------+----------------+

4 rows in set (0.00 sec)

| Field    | Type        | Null | Key | Default    | Extra          |

格式:select * from <表名>,*代表所有字段。

+----------+-------------+------+-----+------------+----------------+

查询数据时也可指定显示的(列)字段:

| sid      | int(11)    | NO  | PRI | NULL      | auto_increment |

mysql> select NAME, AGE, BIRTHDAY from PEOPLE;

| sname    | varchar(10) | NO  |    |            |                |

+--------+-----+---------------------+

| gender  | varchar(10) | YES  |    | 男          |                |

| NAME   | AGE | BIRTHDAY            |

| birthday | date        | YES  |    | 2000-01-01 |                |

+--------+-----+---------------------+

| cid      | int(11)    | YES  |    | NULL      |                |

| Anny   |  22 | 1992-05-22 00:00:00 |

| address  | varchar(10) | YES  |    | NULL      |                |

| Calvin |  23 | 1991-05-22 00:00:00 |

+----------+-------------+------+-----+------------+----------------+

| Nick   |  24 | 1990-05-22 00:00:00 |

9.给班级表插入3个班级;

| Rick   |  24 | 1991-05-22 00:00:00 |

mysql> insert into class values(1001,'一班');

+--------+-----+---------------------+

Query OK, 1 row affected (0.03 sec)

4 rows in set (0.00 sec)

mysql> insert into class values(1002,'二班');

格式:select <字段名,字段名,...> from <表名>。

Query OK, 1 row affected (0.00 sec)

select查询命令还有很多的高级用法,比如用来查找不重复(distinct)的数据,使数据按条件排序(order by),按查询条件显示数据(where)等等。这些都会在下一篇文章作重点介绍,请大家继续留意我的博客,谢谢。

mysql> insert into class values(1003,'三班');

4、管理视图

Query OK, 1 row affected (0.00 sec)

创建视图

mysql> select * from class;

视图是从数据库里导出一个或多个表的虚拟表,是用来方便用户对数据的操作。

+------+-------+

mysql> CREATE VIEW PEOPLE_VIEW (

| cid  | cname |

-> NAME, AGE)

+------+-------+

-> AS SELECT NAME, AGE FROM PEOPLE;

| 1001 | 一班    |

创建成功后查看视图。

| 1002 | 二班      |

PEOPLE          PEOPLE.AGE      PEOPLE.BIRTHDAY PEOPLE.ID       PEOPLE.NAME

| 1003 | 三班      |

mysql> SELECT * FROM PEOPLE_VIEW

+------+-------+

-> ;

10.在学生表中给每个班级添加3名学生信息;

+--------+-----+

mysql> insert into student values(1,'张三','男','2012-01-02',1001,'cq');

| NAME   | AGE |

Query OK, 1 row affected (0.00 sec)

+--------+-----+

mysql> insert into student values(null,'李四','女','2009-03-22',1002,'cq');

| Anny   |  22 |

Query OK, 1 row affected (0.00 sec)

| Calvin |  23 |

mysql> insert into student values(null,'王五','男','2009-03-25',1003,'cq');

| Nick   |  24 |

Query OK, 1 row affected (0.00 sec)

| Rick   |  24 |

mysql> select *from student;

+--------+-----+

+-----+-------+--------+------------+------+---------+

4 rows in set (0.00 sec)

| sid | sname | gender | birthday  | cid  | address |

我们也可以使用 DESC 命令查看视图的结构。

+-----+-------+--------+------------+------+---------+

mysql> DESC PEOPLE_VIEW;

|  1 | 张三      | 男      | 2012-01-02 | 1001 | cq      |

+-------+---------+------+-----+---------+-------+

|  2 | 李四      | 女      | 2009-03-22 | 1002 | cq      |

| Field | Type    | Null | Key | Default | Extra |

|  3 | 王五      | 男      | 2009-03-25 | 1003 | cq      |

+-------+---------+------+-----+---------+-------+

+-----+-------+--------+------------+------+---------+

| ID    | int(11) | NO   |     | 0       |       |

8.给学生表的cid上添加外键约束,以参考class表中的cid字段;

+-------+---------+------+-----+---------+-------+

mysql> alter table student add constraint fk_cid foreign key(cid) references class(cid);

1 row in set (0.01 sec)

Query OK, 3 rows affected (0.02 sec)

替换视图

Records: 3  Duplicates: 0  Warnings: 0

创建或替换原有视图。

受到约束报错:

mysql> CREATE OR REPLACE VIEW PEOPLE_VIEW(PEOPLE_ID,PEOPLE_NAME,PEOPLE_AGE) AS SELECT ID,NAME,AGE FROM PEOPLE;

mysql>  insert into student values(null,'王五','男','2009-03-25',1004,'cq');

Query OK, 0 rows affected (0.00 sec)

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint f

创建或替换后查看视图。

ails (`c17/student`, CONSTRAINT `fk_cid` FOREIGN KEY (`cid`) REFERENCES `class`

mysql> SELECT * FROM PEOPLE_VIEW;

(`cid`))

+-----------+-------------+------------+

11.删除外键;

| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |

mysql> alter table student drop foreign  key fk_cid;

+-----------+-------------+------------+

Query OK, 3 rows affected (0.02 sec)

|         1 | Anny        |         22 |

Records: 3  Duplicates: 0  Warnings: 0

|         2 | Calvin      |         23 |

删除后可以往student继续添加学生信息:

|         4 | Nick        |         24 |

mysql>  insert into student values(null,'王五','男','2009-03-25',1004,'cq');

|         5 | Rick        |         24 |

Query OK, 1 row affected (0.00 sec)

+-----------+-------------+------------+

mysql> select *from student;

4 rows in set (0.00 sec)

+-----+-------+--------+------------+------+---------+

操作视图

| sid | sname | gender | birthday  | cid  | address |

当视图数据有变化时(增、删、改),真实的表数据也会随着改变。也就是说,对视图的操作就是对表的数据,所以我们可以把视图当作表。

+-----+-------+--------+------------+------+---------+

例:往视图插入一条数据。

|  1 | 张三      | 男      | 2012-01-02 | 1001 | cq      |

mysql> INSERT INTO PEOPLE_VIEW VALUES(NULL, 'Kerry', '33');

|  2 | 李四      | 女      | 2009-03-22 | 1002 | cq      |

Query OK, 1 row affected (0.00 sec)

|  3 | 王五      | 男      | 2009-03-25 | 1003 | cq      |

插入数据成功后查看视图。

|  4 | 王五      | 男      | 2009-03-25 | 1004 | cq      |

mysql> SELECT * FROM PEOPLE_VIEW ;

+-----+-------+--------+------------+------+---------+

+-----------+-------------+------------+

4 rows in set (0.00 sec)

| PEOPLE_ID | PEOPLE_NAME | PEOPLE_AGE |

12.复制student表到student2;

+-----------+-------------+------------+

mysql> create table student2 select * from student;

|         1 | Anny        |         22 |

Query OK, 4 rows affected (0.01 sec)

|         2 | Calvin      |         23 |

Records: 4  Duplicates: 0  Warnings: 0

|         4 | Nick        |         24 |

mysql> select *from student2;

|         5 | Rick        |         24 |

+-----+-------+--------+------------+------+---------+

|         6 | Kerry       |         33 |

| sid | sname | gender | birthday  | cid  | address |

+-----------+-------------+------------+

+-----+-------+--------+------------+------+---------+

5 rows in set (0.00 sec)

|  1 | 张三      | 男      | 2012-01-02 | 1001 | cq      |

可以在视图上看到我们刚刚插入的数据,现在我们就来验证一下真实的表是否也会作出变化。

|  2 | 李四      | 女      | 2009-03-22 | 1002 | cq      |

mysql> SELECT * FROM PEOPLE;

|  3 | 王五      | 男      | 2009-03-25 | 1003 | cq      |

+----+--------+-----+---------------------+

|  4 | 王五      | 男      | 2009-03-25 | 1004 | cq      |

| ID | NAME   | AGE | BIRTHDAY            |

+-----+-------+--------+------------+------+---------+

+----+--------+-----+---------------------+

13.将表student2的名字改为stu;

|  1 | Anny   |  22 | 1992-05-22 00:00:00 |

改前所有的表:

|  2 | Calvin |  23 | 1991-05-22 00:00:00 |

mysql> show tables;

|  4 | Nick   |  24 | 1990-05-22 00:00:00 |

+---------------+

|  5 | Rick   |  24 | 1991-05-22 00:00:00 |

| Tables_in_c17 |

|  6 | Kerry  |  33 | NULL                |

+---------------+

+----+--------+-----+---------------------+

| class        |

5 rows in set (0.00 sec)

| student      |

可见,真实的表数据也已经有所改变,刚刚往视图里插入的那一条数据存在于真实表中,真理便是:对视图的操作就是对表的数据。

| student2      |

删除视图

+---------------+

mysql> DROP VIEW PEOPLE_VIEW;

改后所有的表:

Query OK, 0 rows affected (0.00 sec)

mysql> show tables;

+---------------+

| Tables_in_c17 |

+---------------+

| class        |

| stu          |

| student      |

+---------------+

14.删除stu表中sid的自增长;

mysql> desc stu;

+----------+-------------+------+-----+------------+----------------+

| Field    | Type        | Null | Key | Default    | Extra          |

+----------+-------------+------+-----+------------+----------------+

| sid      | int(11)    | NO  | PRI | NULL      | auto_increment |

| sname    | varchar(10) | NO  |    |            |                |

| gender  | varchar(10) | YES  |    | 男          |                |

| birthday | date        | YES  |    | 2000-01-01 |                |

| cid      | int(11)    | YES  |    | NULL      |                |

| address  | varchar(10) | YES  |    | NULL      |                |

+----------+-------------+------+-----+------------+----------------+

mysql> alter table stu modify sid int;

Query OK, 3 rows affected (0.02 sec)

Records: 3  Duplicates: 0  Warnings: 0

mysql> desc stu;

+----------+-------------+------+-----+------------+-------+

| Field    | Type        | Null | Key | Default    | Extra |

+----------+-------------+------+-----+------------+-------+

| sid      | int(11)    | NO  | PRI | 0          |      |

| sname    | varchar(10) | NO  |    |            |      |

| gender  | varchar(10) | YES  |    | 男          |      |

| birthday | date        | YES  |    | 2000-01-01 |      |

| cid      | int(11)    | YES  |    | NULL      |      |

| address  | varchar(10) | YES  |    | NULL      |      |

+----------+-------------+------+-----+------------+-------+

15.删除stu表;

删除前:

mysql> show tables;

+---------------+

| Tables_in_c17 |

+---------------+

| class        |

| stu          |

| student      |

+---------------+

mysql> drop table stu;

Query OK, 0 rows affected (0.01 sec)

删除后:

mysql> show tables;

+---------------+

| Tables_in_c17 |

+---------------+

| class        |

| student      |

+---------------+

2 rows in set (0.00 sec)

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:金沙棋牌app手机下载:mysql基本指令,管理数据库

关键词:

上一篇:没有了

下一篇:没有了