一 系统数据库

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等

performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象

mysql:授权库,主要存储系统用户的权限信息

test:MySQL数据库系统自动创建的测试数据库

二 管理数据库

MySQL 用户设置

如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。

以下为添加用户的的实例,用户名为guest,密码为guest123,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限:

1 root@host#mysql -u root -p

2 Enter password:*******

3 mysql>use mysql;4 Database changed5

6 mysql>INSERT INTO user7 (host, user, password,8 select_priv, insert_priv, update_priv)9 VALUES ('localhost', 'guest',10 PASSWORD('guest123'), 'Y', 'Y', 'Y');11 Query OK, 1 row affected (0.20sec)12

13 mysql>FLUSH PRIVILEGES;14 Query OK, 1 row affected (0.01sec)15

16 mysql> SELECT host, user, password FROM user WHERE user = 'guest';17 +-----------+---------+------------------+

18 | host | user | password |

19 +-----------+---------+------------------+

20 | localhost | guest | 6f8c114b58f2ce9e |

21 +-----------+---------+------------------+

22 1 row in set (0.00 sec)

在添加用户时,请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密。 你可以在以上实例看到用户密码加密后为: 6f8c114b58f2ce9e.

注意:在 MySQL5.7 中 user 表的 password 已换成了authentication_string。

注意:在注意需要执行 FLUSH PRIVILEGES 语句。 这个命令执行后会重新载入授权表。

如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。

你可以在创建用户时,为用户指定权限,在对应的权限列中,在插入语句中设置为 'Y' 即可,用户权限列表如下:

Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv

另外一种添加用户的方法为通过SQL的 GRANT 命令,你下命令会给指定数据库TUTORIALS添加用户 zara ,密码为 zara123 。

root@host#mysql -u root -p password;

Enter password:*******mysql>use mysql;

Database changed

mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP-> ON TUTORIALS.*

-> TO 'zara'@'localhost'

-> IDENTIFIED BY 'zara123';

三 数据库相关操作

管理MySQL的命令

以下列出了使用Mysql数据库过程中常用的命令:

USE 数据库名 :选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。

SHOW DATABASES: 列出 MySQL 数据库管理系统的数据库列表。

SHOW TABLES: #显示指定数据库的所有表,使用该命令前需要使用 use命令来选择要操作的数据库。

SHOW COLUMNS FROM 数据表: #显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。

create database testdb charset "utf8"; #创建一个叫testdb的数据库,且让其支持中文

drop database testdb; #删除数据库

SHOW INDEX FROM 数据表:显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

创建数据库

CREATE DATABASE 数据库名 charset utf8;

View Code

数据库命名规则:

可以由字母、数字、下划线、@、#、$

区分大小写

唯一性

不能使用关键字如 create select

不能单独使用数字

最长128位

查看数据库

show databases;

showcreate databasedb1;select database();

选择数据库USE数据库名

删除数据库DROP DATABASE数据库名;

修改数据库alter database db1 charset utf8;

四 表操作

1、创建表

#语法:create table表名(

字段名1 类型[(宽度) 约束条件],

字段名2 类型[(宽度) 约束条件],

字段名3 类型[(宽度) 约束条件]);

#注意:1. 在同一张表中,字段名是不能相同2. 宽度和约束条件可选3. 字段名和类型是必须的

MariaDB [(none)]>create database db1 charset utf8;

MariaDB [(none)]>use db1;

MariaDB [db1]>create table t1(->id int,-> name varchar(50),-> sex enum('male','female'),-> age int(3)->);

MariaDB [db1]> show tables; #查看db1库下所有表名

MariaDB [db1]>desc t1;+-------+-----------------------+------+-----+---------+-------+

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

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

| id | int(11) | YES | | NULL | |

| name | varchar(50) | YES | | NULL | |

| sex | enum('male','female') | YES | | NULL | |

| age | int(3) | YES | | NULL | |

+-------+-----------------------+------+-----+---------+-------+MariaDB [db1]> select id,name,sex,age fromt1;

Empty set (0.00sec)

MariaDB [db1]> select * fromt1;

Empty set (0.00sec)

MariaDB [db1]> select id,name fromt1;

Empty set (0.00 sec)

View Code

2、 插入数据

语法

INSERT INTO table_name ( field1, field2,...fieldN )

VALUES

( value1, value2,...valueN );

插入数据

1 mysql> insert into student (name,age,register_date) values ("alex li",22,"2016-03-4")2 ->;3 Query OK, 1 row affected (0.00sec)4

5 mysql> select * fromstudent;6 +--------+---------+-----+---------------+

7 | stu_id | name | age | register_date |

8 +--------+---------+-----+---------------+

9 | 1 | alex li | 22 | 2016-03-04 |

10 +--------+---------+-----+---------------+

11 1 row in set (0.00 sec)

3、查看表结构

1 MariaDB [db1]> describe t1; #查看表结构,可简写为desc 表名

2 +-------+-----------------------+------+-----+---------+-------+

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

4 +-------+-----------------------+------+-----+---------+-------+

5 | id | int(11) | YES | | NULL | |

6 | name | varchar(50) | YES | | NULL | |

7 | sex | enum('male','female') | YES | | NULL | |

8 | age | int(3) | YES | | NULL | |

9 +-------+-----------------------+------+-----+---------+-------+

10

11

12 MariaDB [db1]> show create table t1\G; #查看表详细结构,可加\G

4、数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。

MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

MySQL支持所有标准SQL数值数据类型。

这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型 大小 范围(有符号) 范围(无符号) 用途

TINYINT1 字节 (-128,127) (0,255) 小整数值

SMALLINT2 字节 (-32 768,32 767) (0,65 535) 大整数值

MEDIUMINT3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值

INT或INTEGER4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值

BIGINT8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

FLOAT4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度

浮点数值

DOUBLE8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度

浮点数值

DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值 依赖于M和D的值 小数值

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP类型有专有的自动更新特性,将在后面描述。

类型 大小

(字节) 范围 格式 用途

DATE3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值

TIME3 '-838:59:59'/'838:59:59'HH:MM:SS 时间值或持续时间

YEAR1 1901/2155YYYY 年份值

DATETIME8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值

TIMESTAMP4 1970-01-01 00:00:00/2037年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

类型 大小 用途

CHAR 0-255字节 定长字符串

VARCHAR 0-65535字节 变长字符串

TINYBLOB 0-255字节 不超过 255个字符的二进制字符串

TINYTEXT 0-255字节 短文本字符串

BLOB 0-65535字节 二进制形式的长文本数据

TEXT 0-65535字节 长文本数据

MEDIUMBLOB 0-16 777215字节 二进制形式的中等长度文本数据

MEDIUMTEXT 0-16 777215字节 中等长度文本数据

LONGBLOB 0-4 294 967295字节 二进制形式的极大文本数据

LONGTEXT 0-4 294 967295字节 极大文本数据

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

View Code

5、约束条件

约束条件与数据类型的宽度一样,都是可选参数

作用:用于保证数据的完整性和一致性

主要分为:

PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录

FOREIGN KEY (FK) 标识该字段为该表的外键

NOT NULL 标识该字段不能为空

UNIQUE KEY (UK) 标识该字段的值是唯一的

AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)

DEFAULT 为该字段设置默认值

UNSIGNED 无符号

ZEROFILL 使用0填充

说明:

1. 是否允许为空,默认NULL,可设置NOT NULL,字段不允许为空,必须赋值

2. 字段是否有默认值,缺省的默认值是NULL,如果插入记录时不给字段赋值,此字段使用默认值

sex enum('male','female') not null default 'male'

age int unsigned NOT NULL default 20 必须为正值(无符号) 不允许为空 默认是20

3. 是否是key

主键 primary key

外键 foreign key

索引 (index,unique...)

primary key

从约束角度看primary key字段的值不为空且唯一,那我们直接使用not null+unique不就可以了吗,要它干什么?

主键primary key是innodb存储引擎组织数据的依据,innodb称之为索引组织表,一张表中必须有且只有一个主键。

一个表中可以:

单列做主键

============单列做主键===============

#方法一:not null+unique

create table department1(

id intnot null unique, #主键

name varchar(20) notnull unique,

comment varchar(100)

);

mysql>desc department1;+---------+--------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(20) | NO | UNI | NULL | |

| comment | varchar(100) | YES | | NULL | |

+---------+--------------+------+-----+---------+-------+rowsin set (0.01sec)#方法二:在某一个字段后用primary key

create table department2(

id int primary key,#主键

name varchar(20),

comment varchar(100)

);

mysql>desc department2;+---------+--------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(20) | YES | | NULL | |

| comment | varchar(100) | YES | | NULL | |

+---------+--------------+------+-----+---------+-------+rowsin set (0.00sec)#方法三:在所有字段后单独定义primary key

create table department3(

id int,

name varchar(20),

comment varchar(100),

constraint pk_name primary key(id);#创建主键并为其命名pk_name

mysql>desc department3;+---------+--------------+------+-----+---------+-------+

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

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

| id | int(11) | NO | PRI | NULL | |

| name | varchar(20) | YES | | NULL | |

| comment | varchar(100) | YES | | NULL | |

+---------+--------------+------+-----+---------+-------+rowsin set (0.01sec)

单列主键

单列主键

多列做主键(复合主键)

==================多列做主键================create table service(

ip varchar(15),

port char(5),

service_name varchar(10) notnull,

primary key(ip,port)

);

mysql>desc service;+--------------+-------------+------+-----+---------+-------+

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

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

| ip | varchar(15) | NO | PRI | NULL | |

| port | char(5) | NO | PRI | NULL | |

| service_name | varchar(10) | NO | | NULL | |

+--------------+-------------+------+-----+---------+-------+rowsin set (0.00sec)

mysql>insert into service values-> ('172.16.45.10','3306','mysqld'),-> ('172.16.45.11','3306','mariadb')->;

Query OK,2 rows affected (0.00sec)

Records:2Duplicates: 0 Warnings: 0

mysql> insert into service values ('172.16.45.10','3306','nginx');

ERROR1062 (23000): Duplicate entry '172.16.45.10-3306' for key 'PRIMARY'多列主键

多列主键

auto_increment

#不指定id,则自动增长

create table student(

id int primary key auto_increment,

name varchar(20),

sex enum('male','female') default 'male');

mysql>desc student;+-------+-----------------------+------+-----+---------+----------------+

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

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

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

| name | varchar(20) | YES | | NULL | |

| sex | enum('male','female') | YES | | male | |

+-------+-----------------------+------+-----+---------+----------------+mysql>insert into student(name) values-> ('egon'),-> ('alex')->;

mysql> select * fromstudent;+----+------+------+

| id | name | sex |

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

| 1 | egon | male |

| 2 | alex | male |

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

#也可以指定id

mysql> insert into student values(4,'asb','female');

Query OK,1 row affected (0.00sec)

mysql> insert into student values(7,'wsb','female');

Query OK,1 row affected (0.00sec)

mysql> select * fromstudent;+----+------+--------+

| id | name | sex |

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

| 1 | egon | male |

| 2 | alex | male |

| 4 | asb | female |

| 7 | wsb | female |

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

#对于自增的字段,在用delete删除后,再插入值,该字段仍按照删除前的位置继续增长

mysql> delete fromstudent;

Query OK,4 rows affected (0.00sec)

mysql> select * fromstudent;

Empty set (0.00sec)

mysql> insert into student(name) values('ysb');

mysql> select * fromstudent;+----+------+------+

| id | name | sex |

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

| 8 | ysb | male |

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

#应该用truncate清空表,比起delete一条一条地删除记录,truncate是直接清空表,在删除大表时用它

mysql>truncate student;

Query OK, 0 rows affected (0.01sec)

mysql> insert into student(name) values('egon');

Query OK,1 row affected (0.01sec)

mysql> select * fromstudent;+----+------+------+

| id | name | sex |

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

| 1 | egon | male |

+----+------+------+rowin set (0.00 sec)

View Code

foreign key

#表类型必须是innodb存储引擎,且被关联的字段,即references指定的另外一个表的字段,必须保证唯一

create table department(

id int primary key,

name varchar(20) notnull

)engine=innodb;#dpt_id外键,关联父表(department主键id),同步更新,同步删除

create table employee(

id int primary key,

name varchar(20) notnull,

dpt_id int,

constraint fk_name foreign key(dpt_id)

references department(id)

on delete cascade

on update cascade

)engine=innodb;#先往父表department中插入记录

insert into department values

(1,'欧德博爱技术有限事业部'),

(2,'艾利克斯人力资源部'),

(3,'销售部');#再往子表employee中插入记录

insert into employee values

(1,'egon',1),

(2,'alex1',2),

(3,'alex2',2),

(4,'alex3',2),

(5,'李坦克',3),

(6,'刘飞机',3),

(7,'张火箭',3),

(8,'林子弹',3),

(9,'加特林',3)

;#删父表department,子表employee中对应的记录跟着删

mysql> delete from department where id=3;

mysql> select * fromemployee;+----+-------+--------+

| id | name | dpt_id |

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

| 1 | egon | 1 |

| 2 | alex1 | 2 |

| 3 | alex2 | 2 |

| 4 | alex3 | 2 |

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

#更新父表department,子表employee中对应的记录跟着改

mysql> update department set id=22222 where id=2;

mysql> select * fromemployee;+----+-------+--------+

| id | name | dpt_id |

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

| 1 | egon | 1 |

| 3 | alex2 | 22222 |

| 4 | alex3 | 22222 |

| 5 | alex1 | 22222 |

+----+-------+--------+示范

View Code

如何找出两张表之间的关系

分析步骤:#1、先站在左表的角度去找

是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id)#2、再站在右表的角度去找

是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)#3、总结:#多对一:

如果只有步骤1成立,则是左表多对一右表

如果只有步骤2成立,则是右表多对一左表#多对多

如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系#一对一:

如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可

建立表之间的关系

三张表:出版社,作者信息,书

一对多(或多对一):一个出版社可以出版多本书

关联方式:foreign key

=====================多对一=====================create table press(

id int primary key auto_increment,

name varchar(20)

);

create table book(

id int primary key auto_increment,

name varchar(20),

press_id intnotnull,

foreign key(press_id) references press(id)

on delete cascade

on update cascade

);

insert into press(name) values

('北京工业地雷出版社'),

('人民音乐不好听出版社'),

('知识产权没有用出版社')

;

insert into book(name,press_id) values

('九阳神功',1),

('九阴真经',2),

('九阴白骨爪',2),

('独孤九剑',3),

('降龙十巴掌',2),

('葵花宝典',3)

;

View Code

三张表:出版社,作者信息,书

多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多

关联方式:foreign key+一张新的表

=====================多对多=====================create table author(

id int primary key auto_increment,

name varchar(20)

);#这张表就存放作者表与书表的关系,即查询二者的关系查这表就可以了

create table author2book(

id intnotnull unique auto_increment,

author_id intnotnull,

book_id intnotnull,

constraint fk_author foreign key(author_id) references author(id)

on delete cascade

on update cascade,

constraint fk_book foreign key(book_id) references book(id)

on delete cascade

on update cascade,

primary key(author_id,book_id)

);#插入四个作者,id依次排开

insert into author(name) values('egon'),('alex'),('yuanhao'),('wpq');#每个作者与自己的代表作如下

egon:

九阳神功

九阴真经

九阴白骨爪

独孤九剑

降龙十巴掌

葵花宝典

alex:

九阳神功

葵花宝典

yuanhao:

独孤九剑

降龙十巴掌

葵花宝典

wpq:

九阳神功

insert into author2book(author_id,book_id) values

(1,1),

(1,2),

(1,3),

(1,4),

(1,5),

(1,6),

(2,1),

(2,6),

(3,4),

(3,5),

(3,6),

(4,1)

;

View Code

#一对一

两张表:学生表和客户表

一对一:一个学生是一个客户,一个客户有可能变成一个学校,即一对一的关系

关联方式:foreign key+unique

#一定是student来foreign key表customer,这样就保证了:#1 学生一定是一个客户,#2 客户不一定是学生,但有可能成为一个学生

create table customer(

id int primary key auto_increment,

name varchar(20) notnull,

qq varchar(10) notnull,

phone char(16) notnull

);

create table student(

id int primary key auto_increment,

class_name varchar(20) notnull,

customer_id int unique,#该字段一定要是唯一的

foreign key(customer_id) references customer(id) #外键的字段一定要保证unique

on delete cascade

on update cascade

);#增加客户

insert into customer(name,qq,phone) values

('李飞机','31811231',13811341220),

('王大炮','123123123',15213146809),

('守榴弹','283818181',1867141331),

('吴坦克','283818181',1851143312),

('赢火箭','888818181',1861243314),

('战地雷','112312312',18811431230)

;#增加学生

insert into student(class_name,customer_id) values

('脱产3班',3),

('周末19期',4),

('周末19期',5)

;

View Code

6、修改表ALTER TABLE

语法:1. 修改表名

ALTER TABLE 表名

RENAME 新表名;2. 增加字段

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…],

ADD 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] FIRST;

ALTER TABLE 表名

ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;3. 删除字段

ALTER TABLE 表名

DROP 字段名;4. 修改字段

ALTER TABLE 表名

MODIFY 字段名 数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];

ALTER TABLE 表名

CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

示例:1. 修改存储引擎

mysql>alter table service-> engine=innodb;2. 添加字段

mysql>alter table student10-> add name varchar(20) notnull,-> add age int(3) not null default 22;

mysql>alter table student10-> add stu_num varchar(10) not null after name; //添加name字段之后

mysql>alter table student10-> add sex enum('male','female') default 'male' first; //添加到最前面3. 删除字段

mysql>alter table student10->drop sex;

mysql>alter table service->drop mac;4. 修改字段类型modify

mysql>alter table student10-> modify age int(3);

mysql>alter table student10-> modify id int(11) not null primary key auto_increment; //修改为主键5. 增加约束(针对已有的主键增加auto_increment)

mysql> alter table student10 modify id int(11) notnull primary key auto_increment;

ERROR1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) notnull auto_increment;

Query OK, 0 rows affected (0.01sec)

Records: 0 Duplicates: 0 Warnings: 06. 对已经存在的表增加复合主键

mysql>alter table service2->add primary key(host_ip,port);7. 增加主键

mysql>alter table student1-> modify name varchar(10) notnull primary key;8. 增加主键和自动增长

mysql>alter table student1-> modify id int notnull primary key auto_increment;9. 删除主键

a. 删除自增约束

mysql> alter table student10 modify id int(11) notnull;

b. 删除主键

mysql>alter table student10->drop primary key;

示例

View Code

7、复制表

复制表结构+记录 (key不会复制: 主键、外键和索引)

mysql> create table new_service select * fromservice;

只复制表结构

mysql> select * from service where 1=2; //条件为假,查不到任何记录

Empty set (0.00sec)

mysql> create table new1_service select * from service where 1=2;

Query OK, 0 rows affected (0.00sec)

Records: 0 Duplicates: 0 Warnings: 0

mysql> create table t4 like employees;

8、删除表

DROP TABLE 表名;

manage key mysql_mysql相关操作相关推荐

  1. 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 HBase的相关操作-客户端命令式 1.进入HBase ...

  2. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法

    //二叉平衡树的相关运算 #include<stdio.h> #include<malloc.h> #include<string.h>typedef char I ...

  3. hibernate_day03_一对多相关操作

    hibernate_day03_MySQL数据库-表与表之间的多对多关系-实例 hibernate_day03_一对多相关操作 [1]一对多关系只保存一边是否可以 :不可以,会报错(瞬时对象异常). ...

  4. Spark Streaming介绍,DStream,DStream相关操作(来自学习资料)

    一. Spark Streaming介绍 1. SparkStreaming概述 1.1. 什么是Spark Streaming Spark Streaming类似于Apache Storm,用于流式 ...

  5. JQuery属性、事件相关操作

    JQuery属性相关操作 文章目录 JQuery属性相关操作 一.尺寸相关.滚动事件 1.获取和设置元素的尺寸 2.获取元素相对页面的绝对位置 3.获取浏览器可视区宽度高度 4.获取页面文档的宽度高度 ...

  6. Spark DStream相关操作

    DStream上的操作与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的操作,如:updateStateByK ...

  7. php aes 128位加密,php实现AES 128位加密的相关操作技巧分享

    php实现AES 128位加密的相关操作技巧是什么?这篇文章主要介绍了PHP实现的AES 128位加密算法,结合实例形式分析了AES 128位加密的相关概念.原理及php实现AES 128位加密的相关 ...

  8. 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类...

    俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程相关类,本篇 ...

  9. git登录相关操作梳理

    git登录相关操作梳理 本文主要基于 Linux/Mac ,Windows下未经测试,不过估计差不多,在 git bash 内操作即可. 创建ssh key并关联github等账号 因为本地Git仓库 ...

  10. mysql显示表已存在_MySQL数据库与数据表的相关操作

    数据库相关操作: 显示数据库:show databases; 如果是0.00秒并不代表没有花费时间,而是时间非常短,小于0.01秒. 创建数据库: Query OK表示创建成功,1行受到影响,处理时间 ...

最新文章

  1. SWTBOK測试实践系列(1) -- 測试在项眼下期的评审投入划算吗?
  2. 谷歌升级Android分析应用程序
  3. java 获取资源,Java资源获取
  4. Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)
  5. Java中sum和Sum相同吗,Java认为变量Sum 和sum相同。
  6. 微信支付,银联支付,支付宝支付——三大支付总结
  7. 最近wampserver总是开不开,一直离线,重启就好,各位有何看法?
  8. vb FindwindowEx的用法实例
  9. linux设置activemq开机启动,Activemq(centos7)开机自启动服务
  10. 桥式整流以及电容作用
  11. 使用POI读写word doc文件
  12. Go语言之高级篇beego框架之view
  13. 【随便搞搞】自己写了一个用于炒股软件的自动选股分析代码 0603更新 天齐锂业两个板出局
  14. 手把手教你从零搭建深度学习项目(附链接)
  15. 分区数据恢复之ubuntu13.10格式化整个硬盘
  16. 人物角色(Persona)
  17. Linux 命令学习 -重置root密码
  18. 对设备的控制和远程控制方式
  19. CAD中如何给文本自动编号呢?
  20. Qcom_Sensor(一)--- 之 Android简单的计步器应用实现

热门文章

  1. visual studio code快捷键整理成图片
  2. mysql ansi unicode_Ansi 与 Unicode 字符串类型的互相转换
  3. 好用的代理服务器工具_secscanauthcheck越权检查工具
  4. 通过释放cache内存解决ubuntu死机问题
  5. linux定时器时间来源,linux 时间定时器 介绍
  6. 法斗几个月长鼻筋_带锯罢工了,木工小哥检查问题出在哪里?分享带锯使用九个月感受...
  7. w3wp oracle连接数高,分析案例:應用服務器W3WP進程CPU持續超過百分之九十(Oracle客戶端Bug)...
  8. centos 修改root密码_Vultr 修改 Root 密码的方法
  9. python传大文件如何检查遗漏,如何使用Python获取大文件的实时复制进度?
  10. 审查元素找不到创建的元素_面试被问:Selenium元素定位不到问题,如何回答?...