MySQL数据库创建和表操作
2013-10-30 07:42
253 查看
MySQL数据库创建和表操作
简要:
1.显示所所有的库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| csdn |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.15 sec)
2.创建库
mysql> create database news;
Query OK, 1 row affected (0.20 sec)
3.使用某个库
mysql> use news;
Database changed
4.创建表
新闻类型:类型的名称 父类型 自关联
电器
风扇
笔记本
hp类型
hp6325
mysql> create table newType(id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.41 sec)
5.插入语句
mysql> insert into newType(name) values('guojixinwen');
Query OK, 1 row affected (0.09 sec)
6.更新语句
mysql> update newType set name='guojixinwens' where id=1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0
7.查询语句
mysql> select id,name from newType;
+----+--------------+
| id | name |
+----+--------------+
| 1 | guojixinwens |
+----+--------------+
1 row in set (0.00 sec)
8.删除语句
mysql> delete from newType where id=1;
Query OK, 1 row affected (0.57 sec)
9.删除表
mysql> drop table newType;
Query OK, 0 rows affected (0.12 sec)
10.删除库
mysql> DROP DATABASE NEWS;
Query OK, 0 rows affected (0.40 sec)
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN `rid` int,INOUT `rname` varchar(50))
BEGIN
#Routine body goes here...
select name into rname from admin where id=rid;
END
详细:
1、MySQL数据库的创建
(1)创建数据库:CREATE DATABASE或CREATE SCHEMA
语法格式:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification [, create_specification] ...]
其中create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
说明:语句中“[ ]”内为可选项。
● db_name:数据库名。在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。因此,命令中的数据库名字必须符合操作系统文件夹命名规则。值得注意的是:在MySQL中是不区分大小写的。
● IF NOT EXISTS:在建数据库前进行判断,只有该数据库目前尚不存在时才执行CREATE DATABASE操作。用此选项可以避免出现数据库已经存在而再新建的错误。
例如:create database studentdb;
(2)显示数据库信息:Show databases;
(3)修改数据库:ALTER DATABASE
数据库创建后,如果需要修改数据库的参数,可以使用ALTER DATABASE命令。
语法格式:
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification [, alter_specification] ...
其中alter_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
说明:
ALTER DATABASE用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用 ALTER DATABASE。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。
ALTER DATABASE studentdb;
DEFAULT CHARACTER SET gb2312
DEFAULT COLLATE gb2312_chinese_ci;
修改编码也可用:set names gb2312;相当于:
set character_set_client=gb2312;
set character_set_results=gb2312;
set character_set_connection=gb2312;
(4)删除数据库:DROP DATABASE
已经创建的数据库需要删除,使用DROP DATABASE命令。
语法格式:
DROP DATABASE [IF EXISTS] db_name
其中,db_name是要删除的数据库名。可以使用IF EXISTS子句以避免删除不存在的数据库时出现的MySQL错误信息。
例如:
drop table studentdb;
(5)打开数据库为当前数据库:use db_name;
说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用CREATE DATABASE语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定
2.MySQL表的创建和修改
(1)创建表:CREATE TABLE
语法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[ ( [column_definition] , ... | [index_definition] ) ]
[table_option] [select_statement];
说明:
● TEMPORARY:该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。
● IF NOT EXISTS:在建表前加上一个判断,只有该表目前尚不存在时才执行CREATE TABLE操作。用此选项可以避免出现表已经存在无法再新建的错误。
● table_name:要创建的表的表名。该表名必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。
● column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
● index_definition:表索引项定义,主要定义表的索引、主键、外键等 table_option:用于描述表的选项。
● select_statement:可以在CREATE TABLE语句的末尾添加一个SELECT语句,在一个表的基础上创建表。
列定义column_definition格式如下:
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string'] [reference_definition]
说明:
● col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。
● type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。
● AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。
● NOT NULL | NULL:指定该列是否允许为空。如果不指定,则默认为NULL。
● DEFAULT default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOT NULL,默认值取决于列类型:
(1)对于没有声明AUTO_INCREMENT属性的数字类型,默认值是0。对于一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。
(2)对于除TIMESTAMP以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个TIMESTAMP列,默认值是当前的日期和时间。
(3)对于除ENUM的字符串类型,默认值是空字符串。对于ENUM,默认值是第一个枚举值。
● UNIQUE KEY | PRIMARY KEY:PRIMARY KEY和UNIQUE KEY都表示字段中的值是唯一的。PRIMARY KEY表示设置为主键,一个表只能定义一个主键,主键一定要为NOT NULL。
● COMMENT 'string':对于列的描述,string是描述的内容。
● reference_definition:指定参照的表和列,具体定义在第5章参照完整性中介绍。
type定义如下:
例题:
create table student
(
学号 int NOT NULL PRIMARY KEY AUTO_INCREMENT,
姓名 char(8) NOT NULL ,
专业名 char(10) NOT NULL ,
性别 char(1) NOT NULL DEFAULT ‘男’,
出生日期date NOT NULL ,
总学分 double NULL ,
照片 blob NULL
(2)修改表:ALTER TABLE
LTER TABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。
语法格式:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]/*添加列*/
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} /*修改默认值*/
| CHANGE [COLUMN] old_col_name column_definition /*对列重命名*/
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] /*修改列类型*/
| DROP [COLUMN] col_name /*删除列*/
| RENAME [TO] new_tbl_name /*重命名该表*/
| ORDER BY col_name /*排序*/
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
/*将字符集转换为二进制*/
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] /*修改默认字符集*/
| table_options
说明:
● tb1_name:表名。
● col_name:指定的列名。
● IGNORE:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定IGNORE,当重复关键字错误发生时操作失败。如果指定了IGNORE,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
● column_definition:定义列的数据类型和属性,具体内容在CREATE TABLE的语法中已做说明。
● ADD[COLUMN]子句:向表中增加新列。例如,在表t1中增加新的一列a:
ALTER TABLE t1 ADD COLUMN a TINYINT NULL ;
● FIRST | AFTER col_name:表示在某列的前或后添加,不指定则添加到最后。
● ALTER [COLUMN]子句:修改表中指定列的默认值。
● CHANGE [COLUMN]子句:修改列的名称。重命名时,需给定旧的和新的列名称和列当前的类型,old_col_name表示旧的列名。column_definition中定义新的列名和当前数据类型。例如,要把一个INTEGER列的名称从a变更到b:
ALTER TABLE t1 CHANGE a b INTEGER;
● MODIFY [COLUMN]子句:修改指定列的类型。例如,要把一个列的数据类型改为BIGINT:
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
举例;
修改student 表中birthday数据类型为date
alter table student modify birthday date;
修改student 表中添加一个备注列
alter table student add information varchar(50);
修改student 表中列的默认值
alter table student alter sex set default ‘男’;
(3)修改表名:RENAME TABLE
语法格式:
RENAME TABLE tbl_name TO new_tbl_name [ , tbl_name2 TO new_tbl_name2] ...
说明:
● tbl_name:修改之前的表名。
● new_tbl_name:修改之后的表名。
例如:
rename table myt1 to t1;
(4)复制表:CREATE TABLE
语法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[ ( ) LIKE old_tbl_name [ ] ] | [AS (select_statement)] ;
说明:
使用LIKE关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条SELECT语句。
create table studentinfo as(select * from student);
(5)删除表:DROP TABLE
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
其中,
tb1_name:要被删除的表名。
IF EXISTS:避免要删除的表不存在时出现错误信息。
这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除。
drop table if exists studentinfo ;
(6)插入表数据:INSERT TABLE
通过INSERT或REPLACE语句可以向表中插入一行或多行数据。
语法格式:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
| SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
说明:
● tb1_name:被操作的表名。
● col_name:需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定,MySQL处理的原则是:
(1)具有IDENTITY属性的列,系统生成序号值来唯一标志列。
(2)具有默认值的列,其值为默认值。
(3)没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
(4)类型为timestamp的列,系统自动赋值。
● VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若tb1_name后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值:
(1)expr:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。例如,列的数据类型为int,插入的数据是‘aaa’就会出错。当数据为字符型时要用单引号括起。
(2)DEFAULT:指定为该列的默认值。前提是该列原先已经指定了默认值。
如果列清单和VALUES清单都为空,则INSERT会创建一行,每个列都设置成默认值。
INSERT语句支持下列修饰符:
● LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,当原有客户端正在读取数据时,延迟操作的执行,直到没有其他客户端从表中读取为止。
● DELAYED:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送INSERT DELAYED语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求(仅适用于MyISAM、MEMORY和ARCHIVE表)。
● HIGH_PRIORITY:可以使用在SELECT和INSERT操作中,使操作优先执行。
● IGNORE:使用此关键字,在执行语句时出现的错误就会被当做警告处理。
● ON DUPLICATE KEY UPDATE…:使用此选项插入行后,若导致UNIQUE KEY或PRIMARY KEY出现重复值,则根据UPDATE后的语句修改旧行(使用此选项时DELAYED被忽略)。
● SET子句:SET子句用于给列指定值,使用SET子句时表名的后面省略列名。要插入数据的列名在SET子句中指定,col_name为指定列名,等号后面为指定数据,未指定的列,列值指定为默认值。
● INSERT ...SELECT:(第四章具体介绍)
使用INSERT INTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:
INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name
上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:
INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb
其中f1是表b的字段,f2是表c的字段,通过JOIN查询就将分别来自表b和表c的字段进行了组合,然后再通过SELECT嵌套查询插入到表a中,这样就满足了这个场景了,如果需要不止2个表,那么可以多个JOIN的形式来组合字段。
语法错误注意
需要注意的是嵌套查询部分最后一定要有设置表别名,如下:
SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS tb
即最后的AS tb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:
ERROR 1248 (42000): Every derived TABLE must have its own alias
另外,MySQL中INSERT INTO SELECT不能加VALUES,即不能写成如下形式:
INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name
● 使用INSERT语句可以向表中插入一行数据,也可以插入多行数据,插入的行可以给出每列的值,也可只给出部分列的值,还可以向表中插入其他表的数据。
使用INSERT INTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
3、数据操作
(1)使用DELETE从单个表中删除,语法格式:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
说明:
● QUICK修饰符:可以加快部分种类的删除操作的速度。
● FROM子句:用于说明从何处删除数据,tbl_name为要删除数据的表名。
● WHERE子句:where_definition中的内容为指定的删除条件。如果省略WHERE子句则删除该表的所有行,WHERE子句的详细定义在4.2.3节介绍。
● ORDER BY子句:各行按照子句中指定的顺序进行删除,此子句只在与LIMIT联用时才起作用。ORDER BY子句和LIMIT子句的具体定义将在SELECT语句中介绍。
● LIMIT子句:用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。
【例3.5】 假设数据库mydata中有一个表table1,table1中有如下数据:
姓名 年龄 职业
张三 42 教师
李四 28 工人
要删除张三的信息可使用如下语句:
USE mydata
DELETE FROM table1
WHERE 姓名='张三';
【例3.6】 将XSCJ数据库的XS表(具体数据参照附录A)中总学分小于50的所有行删除,使用如下语句:
USE XSCJ
DELETE FROM XS
WHERE 总学分<50;
说明:本书所举例子中的XSCJ数据库里的XS、KC、XS_KC表的数据均以附录A中所列的数据样本为准。如本例无特殊说明,本例所做的修改不在其他例子中体现。所以如果例中语句涉及删除或修改原始数据时,读者需要小心使用,删除之后要及时将数据恢复。在第8章中将会讨论如何备份和恢复数据。
从多个表中删除行,语法格式:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*] ...]
FROM table_references
[WHERE where_definition]
或:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*] ...]
USING table_references
[WHERE where_definition]
说明:对于第一种语法,只删除列于FROM子句之前的表中对应的行。对于第二种语法,只删除列于FROM子句之中(在USING子句之前)的表中对应的行。作用是,可以同时删除多个表中的行,并使用其他的表进行搜索。
【例3.7】 假设有3个表t1、t2、t3,它们都含有id列。要删除t1中id值等于t2的id值的所有行和t2中id值等于t3的id值的所有行,使用如下语句:
DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
或:
DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
(2)使用TRUNCATE TABLE语句删除表数据
使用TRUNCATE TABLE语句将删除指定表中的所有数据,因此也称其为清除表数据语句。
语法格式:
TRUNCATE TABLE table- name
说明:由于TRUNCATE TABLE语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。
TRUNCATE TABLE 在功能上与不带 WHERE子句的DELETE语句(如DELETE FROM XS)相同,二者均删除表中的全部行。但 TRUNCATE TABLE比DELETE速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。而TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。使用 TRUNCATE TABLE,AUTO_INCREMENT计数器被重新设置为该列的初始值。
对于参与了索引和视图的表,不能使用 TRUNCATE TABLE删除数据,而应使用DELETE语句。
(3)使用UPDATE语句修改表
UPDATE可以用来修改一个表,也可以修改多个表。
修改单个表,语法格式:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
说明:
● SET子句:根据WHERE子句中指定的条件对符合条件的数据行进行修改。若语句中不设定WHERE子句,则更新所有行。col_name1、col_name2…为要修改列值的列名,expr1、expr2…可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。
【例3.8】 将XSCJ数据库的XS表(以附录A为准)中的所有学生的总学分都增加10。将姓名为“罗林琳”的同学的备注改为“转专业学习”,学号改为“081251”。
UPDATE XS
SET 总学分 = 总学分+10;
UPDATE XS
SET学号 ='081251' , 备注 ='转专业学习'
WHERE 姓名 = '罗林琳';
SELECT 学号, 姓名, 总学分, 备注
FROM XS;
4、SHOW和DESCRIBE语句
(1) SHOW语句
SHOW TABLES或SHOW TABLES FROM DATABASE_NAME:显示当前数据库中所有表的名称。
SHOW DATABASES:显示MySQL中所有数据库的名称。
SHOW COLUMNS FROM table_name FROM database_name或SHOW COLUMNS FROM database_name.table_name:显示表中列的名称。
SHOW GRANTS FOR user_name:显示一个用户的权限,显示结果类似于GRANT命令。
SHOW INDEX FROM table_name:显示表的索引。
SHOW STATUS:显示一些系统特定资源的信息,例如,正在运行的线程数量。
SHOW VARIABLES:显示系统变量的名称和值。
SHOW PROCESSLIST:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有PROCESS权限,就可以查看所有人的进程,包括密码。
SHOW TABLE STATUS:显示当前使用或者指定的DATABASE中的每个表的信息。信息包括表类型和表的最新更新时间。
SHOW PRIVILEGES:显示服务器所支持的不同权限。
SHOW CREATE DATABASE database_name:显示创建某一个数据库的CREATE DATABASE语句。
SHOW CREATE TABLE table_name:显示创建一个表的CREATE TABLE语句。
SHOW EVENTS:显示所有事件的列表。
SHOW INNODB STATUS:显示InnoDB存储引擎的状态。
SHOW LOGS:显示BDB存储引擎的日志。
SHOW WARNINGS:显示最后一个执行的语句所产生的错误、警告和通知。
SHOW ERRORS:只显示最后一个执行语句所产生的错误。
SHOW [STORAGE] ENGINES:显示安装后的可用存储引擎和默认引擎。
SHOW PROCEDURE STATUS:显示数据库中所有存储过程基本信息,包括所属数据库、存储过程名称、创建时间等。
SHOW CREATE PROCEDURE sp_name:显示某一个存储过程的详细信息。
(2) DESCRIBE语句
DESCRIBE语句用于显示表中各列的信息,结果等于SHOW columns from语句。
语法格式:
{DESCRIBE | DESC} tb1_name [col_name | wild ]
说明:
DESC是DESCRIBE的简写,二者用法相同。
简要:
1.显示所所有的库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| csdn |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.15 sec)
2.创建库
mysql> create database news;
Query OK, 1 row affected (0.20 sec)
3.使用某个库
mysql> use news;
Database changed
4.创建表
新闻类型:类型的名称 父类型 自关联
电器
风扇
笔记本
hp类型
hp6325
mysql> create table newType(id int auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.41 sec)
5.插入语句
mysql> insert into newType(name) values('guojixinwen');
Query OK, 1 row affected (0.09 sec)
6.更新语句
mysql> update newType set name='guojixinwens' where id=1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0
7.查询语句
mysql> select id,name from newType;
+----+--------------+
| id | name |
+----+--------------+
| 1 | guojixinwens |
+----+--------------+
1 row in set (0.00 sec)
8.删除语句
mysql> delete from newType where id=1;
Query OK, 1 row affected (0.57 sec)
9.删除表
mysql> drop table newType;
Query OK, 0 rows affected (0.12 sec)
10.删除库
mysql> DROP DATABASE NEWS;
Query OK, 0 rows affected (0.40 sec)
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(IN `rid` int,INOUT `rname` varchar(50))
BEGIN
#Routine body goes here...
select name into rname from admin where id=rid;
END
详细:
1、MySQL数据库的创建
(1)创建数据库:CREATE DATABASE或CREATE SCHEMA
语法格式:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification [, create_specification] ...]
其中create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
说明:语句中“[ ]”内为可选项。
● db_name:数据库名。在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。因此,命令中的数据库名字必须符合操作系统文件夹命名规则。值得注意的是:在MySQL中是不区分大小写的。
● IF NOT EXISTS:在建数据库前进行判断,只有该数据库目前尚不存在时才执行CREATE DATABASE操作。用此选项可以避免出现数据库已经存在而再新建的错误。
例如:create database studentdb;
(2)显示数据库信息:Show databases;
(3)修改数据库:ALTER DATABASE
数据库创建后,如果需要修改数据库的参数,可以使用ALTER DATABASE命令。
语法格式:
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification [, alter_specification] ...
其中alter_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
说明:
ALTER DATABASE用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用 ALTER DATABASE。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。
ALTER DATABASE studentdb;
DEFAULT CHARACTER SET gb2312
DEFAULT COLLATE gb2312_chinese_ci;
修改编码也可用:set names gb2312;相当于:
set character_set_client=gb2312;
set character_set_results=gb2312;
set character_set_connection=gb2312;
(4)删除数据库:DROP DATABASE
已经创建的数据库需要删除,使用DROP DATABASE命令。
语法格式:
DROP DATABASE [IF EXISTS] db_name
其中,db_name是要删除的数据库名。可以使用IF EXISTS子句以避免删除不存在的数据库时出现的MySQL错误信息。
例如:
drop table studentdb;
(5)打开数据库为当前数据库:use db_name;
说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用CREATE DATABASE语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定
2.MySQL表的创建和修改
(1)创建表:CREATE TABLE
语法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[ ( [column_definition] , ... | [index_definition] ) ]
[table_option] [select_statement];
说明:
● TEMPORARY:该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。
● IF NOT EXISTS:在建表前加上一个判断,只有该表目前尚不存在时才执行CREATE TABLE操作。用此选项可以避免出现表已经存在无法再新建的错误。
● table_name:要创建的表的表名。该表名必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。
● column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。
● index_definition:表索引项定义,主要定义表的索引、主键、外键等 table_option:用于描述表的选项。
● select_statement:可以在CREATE TABLE语句的末尾添加一个SELECT语句,在一个表的基础上创建表。
列定义column_definition格式如下:
col_name type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string'] [reference_definition]
说明:
● col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。
● type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。
● AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。
● NOT NULL | NULL:指定该列是否允许为空。如果不指定,则默认为NULL。
● DEFAULT default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOT NULL,默认值取决于列类型:
(1)对于没有声明AUTO_INCREMENT属性的数字类型,默认值是0。对于一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。
(2)对于除TIMESTAMP以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个TIMESTAMP列,默认值是当前的日期和时间。
(3)对于除ENUM的字符串类型,默认值是空字符串。对于ENUM,默认值是第一个枚举值。
● UNIQUE KEY | PRIMARY KEY:PRIMARY KEY和UNIQUE KEY都表示字段中的值是唯一的。PRIMARY KEY表示设置为主键,一个表只能定义一个主键,主键一定要为NOT NULL。
● COMMENT 'string':对于列的描述,string是描述的内容。
● reference_definition:指定参照的表和列,具体定义在第5章参照完整性中介绍。
type定义如下:
例题:
create table student
(
学号 int NOT NULL PRIMARY KEY AUTO_INCREMENT,
姓名 char(8) NOT NULL ,
专业名 char(10) NOT NULL ,
性别 char(1) NOT NULL DEFAULT ‘男’,
出生日期date NOT NULL ,
总学分 double NULL ,
照片 blob NULL
(2)修改表:ALTER TABLE
LTER TABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。
语法格式:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]/*添加列*/
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} /*修改默认值*/
| CHANGE [COLUMN] old_col_name column_definition /*对列重命名*/
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name] /*修改列类型*/
| DROP [COLUMN] col_name /*删除列*/
| RENAME [TO] new_tbl_name /*重命名该表*/
| ORDER BY col_name /*排序*/
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
/*将字符集转换为二进制*/
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] /*修改默认字符集*/
| table_options
说明:
● tb1_name:表名。
● col_name:指定的列名。
● IGNORE:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定IGNORE,当重复关键字错误发生时操作失败。如果指定了IGNORE,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。
● column_definition:定义列的数据类型和属性,具体内容在CREATE TABLE的语法中已做说明。
● ADD[COLUMN]子句:向表中增加新列。例如,在表t1中增加新的一列a:
ALTER TABLE t1 ADD COLUMN a TINYINT NULL ;
● FIRST | AFTER col_name:表示在某列的前或后添加,不指定则添加到最后。
● ALTER [COLUMN]子句:修改表中指定列的默认值。
● CHANGE [COLUMN]子句:修改列的名称。重命名时,需给定旧的和新的列名称和列当前的类型,old_col_name表示旧的列名。column_definition中定义新的列名和当前数据类型。例如,要把一个INTEGER列的名称从a变更到b:
ALTER TABLE t1 CHANGE a b INTEGER;
● MODIFY [COLUMN]子句:修改指定列的类型。例如,要把一个列的数据类型改为BIGINT:
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
举例;
修改student 表中birthday数据类型为date
alter table student modify birthday date;
修改student 表中添加一个备注列
alter table student add information varchar(50);
修改student 表中列的默认值
alter table student alter sex set default ‘男’;
(3)修改表名:RENAME TABLE
语法格式:
RENAME TABLE tbl_name TO new_tbl_name [ , tbl_name2 TO new_tbl_name2] ...
说明:
● tbl_name:修改之前的表名。
● new_tbl_name:修改之后的表名。
例如:
rename table myt1 to t1;
(4)复制表:CREATE TABLE
语法格式:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[ ( ) LIKE old_tbl_name [ ] ] | [AS (select_statement)] ;
说明:
使用LIKE关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条SELECT语句。
create table studentinfo as(select * from student);
(5)删除表:DROP TABLE
语法格式:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
其中,
tb1_name:要被删除的表名。
IF EXISTS:避免要删除的表不存在时出现错误信息。
这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除。
drop table if exists studentinfo ;
(6)插入表数据:INSERT TABLE
通过INSERT或REPLACE语句可以向表中插入一行或多行数据。
语法格式:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
| SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
说明:
● tb1_name:被操作的表名。
● col_name:需要插入数据的列名。如果要给全部列插入数据,列名可以省略。如果只给表的部分列插入数据,需要指定这些列。对于没有指出的列,它们的值根据列默认值或有关属性来确定,MySQL处理的原则是:
(1)具有IDENTITY属性的列,系统生成序号值来唯一标志列。
(2)具有默认值的列,其值为默认值。
(3)没有默认值的列,若允许为空值,则其值为空值;若不允许为空值,则出错。
(4)类型为timestamp的列,系统自动赋值。
● VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若tb1_name后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值:
(1)expr:可以是一个常量、变量或一个表达式,也可以是空值NULL,其值的数据类型要与列的数据类型一致。例如,列的数据类型为int,插入的数据是‘aaa’就会出错。当数据为字符型时要用单引号括起。
(2)DEFAULT:指定为该列的默认值。前提是该列原先已经指定了默认值。
如果列清单和VALUES清单都为空,则INSERT会创建一行,每个列都设置成默认值。
INSERT语句支持下列修饰符:
● LOW_PRIORITY:可以使用在INSERT、DELETE和UPDATE等操作中,当原有客户端正在读取数据时,延迟操作的执行,直到没有其他客户端从表中读取为止。
● DELAYED:若使用此关键字,则服务器会把待插入的行放到一个缓冲器中,而发送INSERT DELAYED语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求(仅适用于MyISAM、MEMORY和ARCHIVE表)。
● HIGH_PRIORITY:可以使用在SELECT和INSERT操作中,使操作优先执行。
● IGNORE:使用此关键字,在执行语句时出现的错误就会被当做警告处理。
● ON DUPLICATE KEY UPDATE…:使用此选项插入行后,若导致UNIQUE KEY或PRIMARY KEY出现重复值,则根据UPDATE后的语句修改旧行(使用此选项时DELAYED被忽略)。
● SET子句:SET子句用于给列指定值,使用SET子句时表名的后面省略列名。要插入数据的列名在SET子句中指定,col_name为指定列名,等号后面为指定数据,未指定的列,列值指定为默认值。
● INSERT ...SELECT:(第四章具体介绍)
使用INSERT INTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:
INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name
上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段JOIN起来,然后组成一个视图后再SELECT FROM就可以了:
INSERT INTO a (field1,field2) SELECT * FROM(SELECT b.f1,c.f2 FROM b JOIN c) AS tb
其中f1是表b的字段,f2是表c的字段,通过JOIN查询就将分别来自表b和表c的字段进行了组合,然后再通过SELECT嵌套查询插入到表a中,这样就满足了这个场景了,如果需要不止2个表,那么可以多个JOIN的形式来组合字段。
语法错误注意
需要注意的是嵌套查询部分最后一定要有设置表别名,如下:
SELECT * FROM (SELECT f1,f2 FROM b JOIN c) AS tb
即最后的AS tb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:
ERROR 1248 (42000): Every derived TABLE must have its own alias
另外,MySQL中INSERT INTO SELECT不能加VALUES,即不能写成如下形式:
INSERT INTO db1_name(field1,field2) VALUES SELECT field1,field2 FROM db2_name
● 使用INSERT语句可以向表中插入一行数据,也可以插入多行数据,插入的行可以给出每列的值,也可只给出部分列的值,还可以向表中插入其他表的数据。
使用INSERT INTO…SELECT…,可以快速地从一个或多个表中向一个表插入多个行。语法格式如下:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
3、数据操作
(1)使用DELETE从单个表中删除,语法格式:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
说明:
● QUICK修饰符:可以加快部分种类的删除操作的速度。
● FROM子句:用于说明从何处删除数据,tbl_name为要删除数据的表名。
● WHERE子句:where_definition中的内容为指定的删除条件。如果省略WHERE子句则删除该表的所有行,WHERE子句的详细定义在4.2.3节介绍。
● ORDER BY子句:各行按照子句中指定的顺序进行删除,此子句只在与LIMIT联用时才起作用。ORDER BY子句和LIMIT子句的具体定义将在SELECT语句中介绍。
● LIMIT子句:用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。
【例3.5】 假设数据库mydata中有一个表table1,table1中有如下数据:
姓名 年龄 职业
张三 42 教师
李四 28 工人
要删除张三的信息可使用如下语句:
USE mydata
DELETE FROM table1
WHERE 姓名='张三';
【例3.6】 将XSCJ数据库的XS表(具体数据参照附录A)中总学分小于50的所有行删除,使用如下语句:
USE XSCJ
DELETE FROM XS
WHERE 总学分<50;
说明:本书所举例子中的XSCJ数据库里的XS、KC、XS_KC表的数据均以附录A中所列的数据样本为准。如本例无特殊说明,本例所做的修改不在其他例子中体现。所以如果例中语句涉及删除或修改原始数据时,读者需要小心使用,删除之后要及时将数据恢复。在第8章中将会讨论如何备份和恢复数据。
从多个表中删除行,语法格式:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*] ...]
FROM table_references
[WHERE where_definition]
或:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*] ...]
USING table_references
[WHERE where_definition]
说明:对于第一种语法,只删除列于FROM子句之前的表中对应的行。对于第二种语法,只删除列于FROM子句之中(在USING子句之前)的表中对应的行。作用是,可以同时删除多个表中的行,并使用其他的表进行搜索。
【例3.7】 假设有3个表t1、t2、t3,它们都含有id列。要删除t1中id值等于t2的id值的所有行和t2中id值等于t3的id值的所有行,使用如下语句:
DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
或:
DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;
(2)使用TRUNCATE TABLE语句删除表数据
使用TRUNCATE TABLE语句将删除指定表中的所有数据,因此也称其为清除表数据语句。
语法格式:
TRUNCATE TABLE table- name
说明:由于TRUNCATE TABLE语句将删除表中的所有数据,且无法恢复,因此使用时必须十分小心。
TRUNCATE TABLE 在功能上与不带 WHERE子句的DELETE语句(如DELETE FROM XS)相同,二者均删除表中的全部行。但 TRUNCATE TABLE比DELETE速度快,且使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。而TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。使用 TRUNCATE TABLE,AUTO_INCREMENT计数器被重新设置为该列的初始值。
对于参与了索引和视图的表,不能使用 TRUNCATE TABLE删除数据,而应使用DELETE语句。
(3)使用UPDATE语句修改表
UPDATE可以用来修改一个表,也可以修改多个表。
修改单个表,语法格式:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
说明:
● SET子句:根据WHERE子句中指定的条件对符合条件的数据行进行修改。若语句中不设定WHERE子句,则更新所有行。col_name1、col_name2…为要修改列值的列名,expr1、expr2…可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。
【例3.8】 将XSCJ数据库的XS表(以附录A为准)中的所有学生的总学分都增加10。将姓名为“罗林琳”的同学的备注改为“转专业学习”,学号改为“081251”。
UPDATE XS
SET 总学分 = 总学分+10;
UPDATE XS
SET学号 ='081251' , 备注 ='转专业学习'
WHERE 姓名 = '罗林琳';
SELECT 学号, 姓名, 总学分, 备注
FROM XS;
4、SHOW和DESCRIBE语句
(1) SHOW语句
SHOW TABLES或SHOW TABLES FROM DATABASE_NAME:显示当前数据库中所有表的名称。
SHOW DATABASES:显示MySQL中所有数据库的名称。
SHOW COLUMNS FROM table_name FROM database_name或SHOW COLUMNS FROM database_name.table_name:显示表中列的名称。
SHOW GRANTS FOR user_name:显示一个用户的权限,显示结果类似于GRANT命令。
SHOW INDEX FROM table_name:显示表的索引。
SHOW STATUS:显示一些系统特定资源的信息,例如,正在运行的线程数量。
SHOW VARIABLES:显示系统变量的名称和值。
SHOW PROCESSLIST:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有PROCESS权限,就可以查看所有人的进程,包括密码。
SHOW TABLE STATUS:显示当前使用或者指定的DATABASE中的每个表的信息。信息包括表类型和表的最新更新时间。
SHOW PRIVILEGES:显示服务器所支持的不同权限。
SHOW CREATE DATABASE database_name:显示创建某一个数据库的CREATE DATABASE语句。
SHOW CREATE TABLE table_name:显示创建一个表的CREATE TABLE语句。
SHOW EVENTS:显示所有事件的列表。
SHOW INNODB STATUS:显示InnoDB存储引擎的状态。
SHOW LOGS:显示BDB存储引擎的日志。
SHOW WARNINGS:显示最后一个执行的语句所产生的错误、警告和通知。
SHOW ERRORS:只显示最后一个执行语句所产生的错误。
SHOW [STORAGE] ENGINES:显示安装后的可用存储引擎和默认引擎。
SHOW PROCEDURE STATUS:显示数据库中所有存储过程基本信息,包括所属数据库、存储过程名称、创建时间等。
SHOW CREATE PROCEDURE sp_name:显示某一个存储过程的详细信息。
(2) DESCRIBE语句
DESCRIBE语句用于显示表中各列的信息,结果等于SHOW columns from语句。
语法格式:
{DESCRIBE | DESC} tb1_name [col_name | wild ]
说明:
DESC是DESCRIBE的简写,二者用法相同。
相关文章推荐
- JSP中的数据库操作(1):MySQL数据库创建及管理
- shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
- mysql数据库的基本操作:创建数据库、查看数据库、修改数据库、删除数据库
- python使用sqlalchemy中间件对MYSQL数据库进行创建、查询、删除操作
- Mysql数据库学习 (四) 数据库操作(创建删除更新表)
- MySQL数据库操作3-数据表操作1-创建,约束
- MySQL数据库学习02-数据表的基本操作:创建
- MySQL数据库——‘多表’的基本操作(更新、删除、创建写入)
- shell脚本操作mysql数据库—创建数据库,在该数据库中创建表(插入,查询,更新,删除操作也可以做)
- mysql数据库应用(五)----表的基本操作(创建,删除,显示)
- 通过secureCRT创建SSH会话,对mysql数据库远程进行操作
- shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
- MySQL数据库创建、修改和删除表操作实例
- mysql读写分离的完整配置【centos6.5-mini版操作系统中mysql数据库的操作日志以及创建的数据库和表均在/var/lib/mysql此目录下,yum源在/var/lib/yum下】
- Python3.x的mysqlclient的安装、Python操作mysql,python连接MySQL数据库,python创建数据库表,带有事务的操作,CRUD
- shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
- shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
- MySQL数据库表的基本操作——创建表CREATE TABLE
- MySQL数据库——创建约束基本操作
- MySQL数据库及表创建、修改、删除及其它操作