创建数据库:
create database 数据库名;
删除数据库:
drop database 数据库名;
选择数据库:
use 数据库名;
创建MySQL数据表的SQL通用语法:
CREATE TABLE table_name (column_name column_type);
实例 创建数据表runoob_tbl:
CREATE [temporary](#临时表) TABLE IF NOT EXISTS runoob_tbl(
runoob_id INT UNSIGNED auto_increment,
runoob_title VARCHAR(100) NOT NULL,
runoob_author VARCHAR(40) NOT NULL,
PRIMARY KEY ( runoob_id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
2.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
3.PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
4.ENGINE 设置存储引擎,CHARSET 设置编码。
5.创建 MySql 的表时,表名和字段名外面的符号 ` 不是单引号,而是英文输入法状态下的反单引号,也就是键盘左上角 esc 按键下面的那一个 ~ 按键,坑惨了。反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。
6.临时表在关闭控制台时会自动销毁,或者像删除普通表一样删除,
在高级语言中建立时,程序运行完之后就会自动删除。
7.复制表:
只复制表结构到新表
create table 新表 select * from 旧表 where 1=2
或者
create table 新表 like 旧表
复制表结构及数据到新表
create table新表 select * from 旧表
删除:
删除表内数据,用 delete。格式为:
delete from 表名 where 删除条件;
实例:删除学生表内姓名为张三的记录。
delete from student where T_name = "张三";
清除表内数据,保存表结构,用 truncate。格式为:
truncate table 表名;
实例:清除学生表内的所有数据。
truncate table student;
删除表用 drop,就是啥都没了。格式为:
drop table 表名;
实例:删除学生表。
drop table student;
删除列,用alter table 表名 drop 列名,实例为:
ALTER TABLE testalter_tbl DROP i;#删除表的 i 字段
删除默认值,用
alter table 表名 alter 列名 drop default;
实例:
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
1、当你不再需要该表时, 用 drop;
2、当你仍要保留该表,但要删除所有记录时, 用 truncate;
3、当你要删除部分记录时, 用 delete。
删除重复数据:
添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录:
mysql> ALTER IGNORE TABLE person_tbl ADD PRIMARY KEY (列名);
插入:
INSERT INTO table_name ( field1, field2,...fieldN ) #表名
VALUES #固定语法
( value1, value2,...valueN );#值
如果数据是字符型,必须使用单引号或者双引号,如:“value”。
INSERT IGNORE INTO可以跳过重复数据;达到在间隙中插入数据的目的。
实例:
mysql> INSERT INTO runoob_tbl
-> (runoob_title, runoob_author, submission_date)
-> VALUES
-> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');
添加新的一列:
Alter table 表名 add 列名 [这一列的定义] 位置(first /after 列名);
实例:
ALTER TABLE testalter_tbl ADD i INT FIRST;
修改数据:
UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
1.你可以同时更新一个或多个字段。
2.你可以在 WHERE 子句中指定任何条件。
3.你可以在一个单独表中同时更新数据。
实例: #修改runoob_tbl表runoob_id为2的runoob_title的为php
update runoob_tbl set runoob_title="php" where runoob_id = "2";
修改列:
属性:
alter table 表名 modify 列名 新类型 约束;
实例:ALTER TABLE testalter_tbl MODIFY c CHAR(10);
名称:
alter table 表名 change 列名 新列名 类型;
实例:ALTER TABLE testalter_tbl CHANGE i j INT;
默认值:
alter table 表名 alter 列名 set default 新值;
实例:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
修改数据表引擎:
Alter table 表名 engine = 新引擎;
修改表名:
Alter table 表名 rename to 新表名;
查询数据:
SELECT column_name,column_name
FROM table_name[WHERE Clause][LIMITN][OFFSETM]
1.查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
2.SELECT 命令可以读取一条或者多条记录。
3.你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所 有字段数据:select * from runoob_tbl; #数据表 runoob_tbl 的所有记录:
4.你可以使用 WHERE 语句来包含任何条件。
5.你可以使用 LIMIT 属性来设定返回的记录数。
6.你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认 情况下偏移量为0。
查询表:show tables;
查询表结构:desc 表名;
查询表引擎:show table status like ‘表名’;
查询数据库:show databases;
查询库中所有表引擎:show table status from 库名;
查询索引:SHOW INDEX FROM 表名;
查询创建数据表时的语句:show create table 表名;
查询不重复列的语句:SELECT DISTINCT job_id FROM employees;
查询时将数据用特定格式输出:
select CONCAT(colum_name1,’,’,ccolum_name2,’,’,colum_nams) as name
from table_name
导入/出数据:
导出:
MySQL中你可以使用SELECT…INTO OUTFILE语句来简单的导出数据到文本文件上。
使用 SELECT …INTO OUTFILE …命令来导出数据,具体语法如下。
mysql> SELECT * FROM tablename INTO OUTFILE 'target_file' [option];
其中 option 参数可以是以下选项:
命令参数 | 说明 |
---|---|
fields terminated by ‘字符’ | 字段分隔符,默认字符为制表符’\t’ |
fields [optionally] enclosed by ‘单字符’ | 字段引用符,加上optionally后在数字类型上不会有引用符号 |
fields escaped by ‘单字符’ | 转义字符,默认为’’ |
lines starting by ‘字符’ | 每行前都加此支付,默认为空 |
lines terminated by ‘字符’ | 行结束符,默认为’\n’ |
select * from emp into outfile ‘/tmp/emp.txt’ fields terminated by “,” enclosed by ‘"’;
导入:
在导入纯文本数据之前,需要事先创建好表结构和纯文本数据:
纯文本数据每一项之间用Tab键进行分隔,如果该字段为NULL,则用/N表示。
load data local infile "/var/lib/mysql/test/data.txt" into table person(name,city,salary);
注意data.txt存放的位置,其他地方会报错