参考博客:MySQL命令大全
一.启动服务指令
@:net start mysql
MySQL 服务正在启动 .....
MySQL 服务已经启动成功。
2.登录指令
@:mysql -uroot -hlocalhost -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
3.查看所有库的指令
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
6 rows in set (0.06 sec)
4.使用库指令
mysql> use sys
Database changed
5.查看表指令
mysql> show tables;
+-----------------------------------------------+
| Tables_in_sys |
+-----------------------------------------------+
| host_summary |
| host_summary_by_file_io |
| host_summary_by_file_io_type
6.建库的指令+使用库
mysql> create database ht1626;
Query OK, 1 row affected (0.10 sec)
mysql> use ht1626;
Database changed
mysql> show tables;
Empty set (0.00 sec)
7.建表的指令
create table student(
id int primary key auto_increment,
name varchar(20) not null,
age int default 18,
phoneNumber varchar(20) unique);
拓展:
MySQL的数据类型
MySQL支持T-SQL(标准SQL)中所有数值类型(整形)并扩展了3个类型
无符号
TINYINT 1字节 0-255 byte
SMALLINT 2字节 0-655535 short
MEDIUMINT 3字节
INT/INTEGER 4字节 (前面3个是mysql自己扩展的)
BIGINT 8字节
FLOAT 4字节
DOUBLE 8字节
DECIMAL(M,D) 精度.问题.
----------------------------------
char(M) 定长字符串 Unicode
varchar(M) 变长字符串
nchar(M) 定长 非Unicode
nvarchar(M) 变长
tinyblob 不超过255个字符的二进制字符串
tinytext 短文本
blob
text
smallblob/mediumblob
smalltext/mediumtext
longblob
longtext
binary(M) 允许0-M个字节的定长字符串
-------------------------------------
date 4个字节 日期 格式为 YYYY-MM-DD
time 3个字节 时间值或持续时间 格式为 HH:MM:SS
year 1个字节 年份值 1901/2155
datetime 8个字节 混合日期和时间的值 格式为 YYYY-MM-DD HH:MM:SS
timestamp 4个字节 混合日期和时间值,时间戳 YYYYMMDDHHMMSS
MySQL还支持Enum以及Set和复合类型.
建表语句的格式位
create table 表名(
字段1 类型 约束条件,
字段2 类型 约束条件,
字段3 类型 约束条件
)
MySQL中的约束
MySQL种有5种约束
primary key 主键约束
foreign key 外键约束
not null 非空
unique 唯一
default 默认值
auto_increment 自动增长.. 自动增长通常和主键结合使用
check 检查 .通过表达式验证数据.mysql不支持check,可以写check但是没效果.
约束可以分为:
单列约束
多列约束
8.系统显示的表结构
| student | CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`age` int(11) DEFAULT '18',
`phoneNumber` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `phoneNumber` (`phoneNumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Engine:引擎 Charset 字符编码格式.
mysql> show engines; //MySQL会默认提供的所有引擎
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9.查看MySQL当前默认的存储引擎
mysql> show variables like '%storage_engine%';
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set, 1 warning (0.15 sec)
MySQL数据库的殷勤取决于安装MySQL时是如何编译的.如果要添加一个新引擎必须要重新编译MySQL.默认情况MySQL支持三个引擎:ISAM,MYISAM,HEAP.还有两个引擎也是可以使用的.INNODB和BDB.当然也可以自己通过使用MySQL++所提供的API自己写一个引擎.
ISAM: 读取的操作速度快,且不占用大量的内存和存储资源.缺点是ISAM不支持事务处理,也不能够容错.
MyISAM: 提供了ISAM中所没有索引和字段管理的功能.以及MyISAM还提供了一种表格锁定机制(Java中的锁)用来优化并发的读写.MyISAM强调了快速读写操作.缺点是不支持表损坏后的数据恢复.
InnoDB:该引擎就是由MySQL++API所实现的.完善了ISAM和MyISAM中不支持的内容.即该引擎支持事务等但是读写速度比ISAM或MyISAM要慢.
引擎的添加在建表时右括号外添加engine=”引擎名称” 就可以决定当前表使用什么引擎.在使用该语句之前最好先看下当前库是否拥有和支持你想要使用的引擎.
10.增删改查
Insert
mysql> insert into student(name,phoneNumber) values('张三','11011911411086');
Query OK, 1 row affected (0.15 sec)
同时插入多条数据
insert into student(name,phoneNumber) values('李四','11011911411087'),('王五','11011911411088'),('赵六','11011911411089');
Query 查询语句不允许使用select * from 表名
mysql> select id,name,age,phoneNumber from student;
+----+------+------+----------------+
| id | name | age | phoneNumber |
+----+------+------+----------------+
| 1 | 张三 | 18 | 11011911411086 |
+----+------+------+----------------+
1 row in set (0.10 sec)
mysql> select name from student;
+------+
| name |
+------+
| 张三 |
+------+
Update
mysql> update student set age = 25 where name = '王五';
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select id,name,age,phoneNumber from student;
+----+------+------+----------------+
| id | name | age | phoneNumber |
+----+------+------+----------------+
| 1 | 张三 | 18 | 11011911411086 |
| 2 | 李四 | 18 | 11011911411087 |
| 3 | 王五 | 25 | 11011911411088 |
| 4 | 赵六 | 18 | 11011911411089 |
+----+------+------+----------------+
4 rows in set (0.00 sec)
Delete
mysql> delete from student where id % 2 = 0;
Query OK, 2 rows affected (0.15 sec)
mysql> select id,name,age,phoneNumber from student;
+----+------+------+----------------+
| id | name | age | phoneNumber |
+----+------+------+----------------+
| 1 | 张三 | 18 | 11011911411086 |
| 3 | 王五 | 25 | 11011911411088 |
+----+------+------+----------------+
2 rows in set (0.00 sec)
//--当执行插入时如果语法正确因为值得问题比如违反唯一约束.插入这一操作会被执行.但是表中不会有记录.id如果是自动增长的会自动+1 当下个插入成功时会发现id跳了2次.
insert into student(name,phoneNumber) values('孙七','11011911411090')
=-----------------------------------------------------
数据库的连接就Java而言可以分为两种:
1.直连接 – jdbc
2.桥连接 – odbc 通常用于C#等微软的语言上.
在window上 路径: 控制面板 - > 管理工具 - > ODBC
Java上主流使用的是JDBC.(如果是Web开发.或EE级别.jdbc是面试中必问.实际应用中常用的.)