- Windows下打开MySQL command line client --Unicode
MySQL command line client --Unicode与MySQL command line client区别:
Unicode是统一的字符编码标准,MySQL的Windows客户端自从5.6.2版本后提供了Unicode界面支持。而原来的MySQL Client是默认在dos下运行的,不够满足Windows下标准编码的需求。用起来也有感觉,在Unicode下运行速度比原来的在dos环境下运行要快得多,字体等也更符合编程要求(Unicode是用的16位储存和表示每个字符的,并能够表示大多数字符。
- 输入password
- SHOW DATABASES:
列出 MySQL 数据库管理系统的数据库列表。 - USE 数据库名
- SHOW TABLES:
显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。 - SHOW COLUMNS FROM 表: 或者使用命令DESCRIBE 表名
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。 - SHOW INDEX FROM 表名:
显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
mysql> SHOW TABLE STATUS FROM RUNOOB; # 显示数据库 RUNOOB 中所有表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'; # 表名以runoob开头的表的信息
mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G; # 加上 \G,查询结果按列打印
- eixt;
推出客户端 - 显示所用的用户
在Mysql中其实有一个内置且名为mysql的数据库,这个数据库中存储的是Mysql的一些数据,比如用户、权限信息、存储过程等,所以呢,我们可以通过如下简单的查询语句来显示所有的用户呢。
SELECT User, Host FROM mysql.user;
- 显示当前状态:status;包括当前用户信息
- 显示当前用户:select user();
- 创建数据库
CREATE database sql_learning;
- 删除数据库
DROP database sql_learning;
- 创建表示例:
mysql> use sql_learning;
Database changed
mysql> create table student(
-> id int not null,
-> name varchar(10) not null
-> PRIMARY KEY (id),
-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.75 sec)
mysql> describe student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| name | varchar(10) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
- ENGINE 设置存储引擎,CHARSET 设置编码。
创建数据库表时数据存储引擎 engine两种:engine=innodb和engine=myisam- myisam,默认类型。是存储记录和文件的标准类型,支持全文搜索,可以被压缩,与其他引擎相比,有检查和修复表格的大部分工具,不支持事务,不支持外键。强调的是性能,执行速度比较快,可以在不同的系统中迁移。如果执行大量 的SELECT,MyISAM是更好的选择。
- innodb,支持事务处理等高级处理,支持外键,如果执行大量的select和update语句,出于性能考虑,使用innodb是最好的选择。
- 删除表:
DROP table student;
- 插入数据
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
插入数据示例:
mysql> insert into student
-> (id,name)
-> values
-> (001,'qin');
Query OK, 1 row affected (0.05 sec)
mysql> insert into student
-> (id,name)
-> values
-> (002,'hui');
Query OK, 1 row affected (0.06 sec)
mysql> insert into student
-> (id,name)
-> values
-> (001,'dong');
Query OK, 1 row affected (0.05 sec)
mysql> select * from student;
+----+------+
| id | name |
+----+------+
| 1 | qin |
| 2 | hui |
| 1 | dong |
+----+------+
3 rows in set (0.00 sec)
插入多条数据:
INSERT INTO table_name (field1, field2,...fieldN) VALUES (valueA1,valueA2,...valueAN),(valueB1,valueB2,...valueBN),(valueC1,valueC2,...valueCN)......;
mysql> insert into student
-> (id,name)values
-> (004,'wang'),
-> (005,'xiao'),
-> (006,'meng');
- 查询语句
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
SELECT 命令可以读取一条或者多条记录。
你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
你可以使用 WHERE 语句来包含任何条件。
你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
你可以使用 LIMIT 属性来设定返回的记录数。
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的。
mysql> SELECT * from runoob_tbl WHERE BINARY runoob_author='runoob.com';
Empty set (0.01 sec)
mysql> SELECT * from runoob_tbl WHERE BINARY runoob_author='RUNOOB.COM';
+-----------+---------------+---------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 3 | JAVA 教程 | RUNOOB.COM | 2016-05-06 |
| 4 | 学习 Python | RUNOOB.COM | 2016-03-06 |
+-----------+---------------+---------------+-----------------+
2 rows in set (0.01 sec)
- 修改更新数据
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
- 删除数据
DELETE FROM table_name [WHERE Clause]
- 获取服务器元数据
以下命令语句可以在 MySQL 的命令提示符使用,也可以在脚本中 使用,如PHP脚本.
命令 | 描述 |
---|---|
SELECT VERSION( ) | 服务器版本信息 |
SELECT DATABASE( ) | 当前数据库名 (或者返回空) |
SELECT USER( ) | 当前用户名 |
SHOW STATUS | 服务器状态 |
SHOW VARIABLES | 服务器配置变量 |
- 自增auto_increment,其指定的属性无需赋值,设为null即可。
例如属性id已经
INSERT INTO student (id,name) VALUES
-> (NULL,'housefly');
重置序列
如果你删除了数据表中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列,然后重新添加来实现。 不过该操作要非常小心,如果在删除的同时又有新记录添加,有可能会出现数据混乱。操作如下所示:
mysql> ALTER TABLE student DROP id;
mysql> ALTER TABLE student
-> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
-> ADD PRIMARY KEY (id);
设置序列开始值
mysql> CREATE TABLE student
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> name VARCHAR(30) NOT NULL,
)engine=innodb auto_increment=100 charset=utf8;
对于已经建立好的表,使用
mysql> ALTER TABLE t AUTO_INCREMENT = 100;
- 重复数据防止插入:设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。
INSERT IGNORE INTO与INSERT INTO区别:
INSERT INTO插入重复数据会出现错误
INSERT IGNORE INTO出现重复数据会自动忽略。并给出警告。
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
-> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
-> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)
- mysql在创建表时,表名以及字段名可以不加引号,加引号的话要加反引号,即键盘数字1左边的符号,同时COMMENT的内容使用正常的引号或双引而不能使用反引号,因此有如下两种正确的创建方法
- 表名和字段名不加引号
mysql> CREATE TABLE TB_IP_WHITELIST (
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
productName VARCHAR(255) NOT NULL DEFAULT '' COMMENT '产品名',
ipWhite TEXT NOT NULL COMMENT '白名单',
remark VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
UNIQUE KEY product_name (productName),
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT ='名单信息表';
- 表名和字段名加反引号
mysql> CREATE TABLE `TB_IP_WHITELIST` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`productName` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '产品名',
`ipWhite` TEXT NOT NULL COMMENT '白名单',
`remark` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '备注',
UNIQUE KEY `product_name` (`productName`),
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT ='名单信息表';