1、MySQL服务启动/关闭:
net start mysql
net stop mysql
2、管理mysql命令
分号注意表示语句结束,别忘写
- use 数据库名; 选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
- show databases; 列出 MySQL 数据库管理系统的数据库列表。
- show tables; 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
- show columns from 数据库;显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
- show index from 数据库;显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
- show table status from 数据库名;显示该数据库中所有表的信息
- show table status from 数据库名 like ’runoob%‘;表名以runoob开头的表的信息
- show table status from 数据库名 like ’runoob%‘\G;加上 \G,查询结果按列打印
- mysql -u root -p 进入数据库
3、创建数据库以及删除数据库
1、在登陆 MySQL 服务后,使用 create 命令创建数据库
create database 数据库名;
2、root用户下 ----在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。
drop 命令删除数据库
drop database <数据库名>;
例如删除名为 RUNOOB 的数据库:
drop database RUNOOB;
4、MySQL 数据类型
MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
MySQL 支持所有标准 SQL 数值数据类型。
这些类型包括严格数值数据类型(integer、smallint、decimal 和numeric),以及近似数值数据类型(float、real 和 double percision)。
日期和时间类型
表示时间值的日期和时间类型为datetime、date、timestamp、time和year。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
timestamp类型有专有的自动更新特性,将在后面描述。
类型 | 大小(bytes) | 格式 | 用途 |
---|---|---|---|
date | 3 | YYYY-MM-DD | 日期值 |
time | 3 | HH:MM:SS | 时间值或持续时间 |
year | 1 | YYYY | 年份值 |
datatime | 8 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | 4 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
字符串类型
字符串类型指char、varchar、binary、varbinary、blob、text、enum和set。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型 | 大小 | 用途 |
---|---|---|
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
blob | 0-65 535 bytes | 二进制形式的长文本数据 |
tinyblob | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
medlumblob | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
londblob | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
text | 0-65 535 bytes | 长文本数据 |
tinytext | 0-255 bytes | 短文本字符串 |
medlumtext | 0-16 777 215 bytes | 中等长度文本数据 |
londtext | 0-4 294 967 295 bytes | 极大文本数据 |
5、数据表处理命令
MySQL 创建数据表:
创建MySQL数据表需要以下信息:
- 表名
- 表字段名
- 定义每个表字段
语法:
以下为创建MySQL数据表的SQL通用语法:
create table table_name(column_name column_type);
例如:
create table IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
实例解析:
- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
通过命令提示符创建表
通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表
实例
以下为创建数据表 runoob_tbl 实例:
root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> CREATE TABLE runoob_tbl(
-> runoob_id INT NOT NULL AUTO_INCREMENT,
-> runoob_title VARCHAR(100) NOT NULL,
-> runoob_author VARCHAR(40) NOT NULL,
-> submission_date DATE,
-> PRIMARY KEY ( runoob_id )
-> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.16 sec)
mysql>
注意:MySQL命令终止符为分号 ; 。
注意: -> 是换行符标识,不要复制。
MySQL 删除数据表
MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。
语法
以下为删除MySQL数据表的通用语法:
drop table table_name ;
在命令提示窗口中删除数据表
在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE :
实例
以下实例删除了数据表runoob_tbl:
root@host# mysql -u root -p
Enter password:*******
mysql> use RUNOOB;
Database changed
mysql> DROP TABLE runoob_tbl;
Query OK, 0 rows affected (0.8 sec)
mysql>
删除表内数据3种方式
删除表内数据,用 delete。格式为:
delete from 表名 where 删除条件;
实例:删除学生表内姓名为张三的记录。
delete from student where T_name = “张三”;
清除表内数据,保存表结构,用 truncate。格式为:
truncate table 表名;
实例:清除学生表内的所有数据。
truncate table student;
删除表用 drop,就是啥都没了。格式为:
drop table 表名;
实例:删除学生表。
drop table student;
- 当你不再需要该表时, 用 drop;
- 当你仍要保留该表,但要删除所有记录时, 用 truncate;
- 当你要删除部分记录时, 用 delete。
MySQL 插入数据
MySQL 表中使用 insert into SQL语句来插入数据。
语法
以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
如果数据是字符型,必须使用单引号或者双引号,如:“value”。
insert 插入多条数据
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
添加数据的时候可以规定列进行添加。
如果所有的列都要添加数据可以不规定列进行添加数据:
mysql> INSERT INTO runoob_tbl
-> VALUES
-> (0, "JAVA 教程", "RUNOOB.COM", '2016-05-06');
第一列如果没有设置主键自增的话添加第一列数据比较容易错乱,要不断的查询表看数据
如果添加过主键自增(PRINARY KEY AUTO_INCREMENT)第一列在增加数据的时候,可以写为0或者null,这样添加数据可以自增, 从而可以添加全部数据,而不用特意规定那几列添加数据。
MySQL 查询数据
MySQL 数据库使用SQL select语句来查询数据。
语法
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
select _column,_column from _table [where Clause] [limit N][offset M]
- select * : 返回所有记录
- limit N : 返回 N 条记录
- offset M : 跳过 M 条记录, 默认 M=0,单独使用似乎不起作用
- limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录
实现分页:
select * from _table limit (page_number-1)*lines_perpage, lines_perpage
或
select * from _table limit lines_perpage offset (page_number-1)*lines_perpage
where 与binary 子句
where:
SELECT * from runoob_tbl WHERE runoob_author='菜鸟教程';
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。
SELECT * from runoob_tbl WHERE BINARY runoob_author='runoob.com';
Empty set (0.01 sec)
SELECT * from runoob_tbl WHERE BINARY runoob_author='RUNOOB.COM';
实例中使用了 BINARY 关键字,是区分大小写的,所以 runoob_author=‘runoob.com’ 的查询条件是没有数据的。
- where:数据库中常用的是where关键字,用于在初始表中筛选查询。它是一个约束声明,用于约束数据,在返回结果集之前起作用。
- group by:对select查询出来的结果集按照某个字段或者表达式进行分组,获得一组组的集合,然后从每组中取出一个指定字段或者表达式的值。
- having:用于对where和group by查询出来的分组经行过滤,查出满足条件的分组结果。它是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作。
- 执行顺序 select –>where –> group by–> having–>order by
MySQL UPDATE 更新
如果我们需要修改或更新 MySQL 中的数据,我们可以使用 SQL UPDATE 命令来操作。
语法
update 表名称 set 列名称=新值 where 更新条件;
**实例:**
mysql> UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;
Query OK, 1 rows affected (0.01 sec)
mysql> SELECT * from runoob_tbl WHERE runoob_id=3;
+-----------+--------------+---------------+---------------<