一、基础命令:
1.创建数据库:
create database 数据库名 character set 编码方式(utf8)
————————————————如下所示 创建了一个名为 dome 的数据库 使用编码方式为 utf8
mysql> create database dome character set utf8;
Query OK, 1 row affected (0.01 sec)
2.使用数据库
use 数据库名
mysql> use dome;
————————————使用成功会显示如下代码 Database changed ————————————
Database changed
3.显示当前数据库
show databases 数据库名
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bit32mall |
| dome | ——————————如图这出现了上步创建的数据库 dome
| mysql |
| pd |
| performance_schema |
| sys |
| test |
+--------------------+
4.删除数据库
drop database 数据库名
mysql> drop database dome;
Query OK, 0 rows affected (0.01 sec)
————————————查看数据库列表可以发现dome1已经删除了——————————
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bit32mall |
| mysql |
| pd |
| performance_schema |
| sys |
| test |
+--------------------+
8 rows in set (0.00 sec)
二、创建表
1.创建表:
create table 表名 (列名 类型, 列名 类型,…); eg:创建表必须先选择数据库: use 数据库
mysql> create table student (id int , name varchar(20));
Query OK, 0 rows affected (0.02 sec)
2.查看表结构:
desc 表名;
————————————如下可以看到自己的列名 字符类型 等——————————————
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3.查看当前数据库中的所有表:
show tables;
——————————————因为只创建了一个表,所以说就以下一个student————————————
mysql> show tables;
+----------------+
| Tables_in_dome |
+----------------+
| student |
+----------------+
4.删除表:
drop table 表名;
mysql> drop table student;
Query OK, 0 rows affected (0.01 sec)
——————————————如下可见已经没有了我们创建的表——————————
mysql> show tables;
Empty set (0.00 sec)
5.单行插入:
insert into 表名 values (值,值,值,….)
insert into student values(1 , '张三');------此处 1 为前面创建的 id 列
Query OK, 1 row affected (0.00 sec)
alter table 列名 add 列名 <约束条件> FIRST|AFTER;
mysql> desc tb1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| coll | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
mysql> alter table tb1 add col2 varchar(10);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| coll | int(11) | YES | | NULL | |
| col2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> alter table tb1 add col3 int first;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| col3 | int(11) | YES | | NULL | |
| coll | int(11) | YES | | NULL | |
| col2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> alter table tb1 add col4 int after coll;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| col3 | int(11) | YES | | NULL | |
| coll | int(11) | YES | | NULL | |
| col4 | int(11) | YES | | NULL | |
| col2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
三、查询
1.全列查询 :
select*from 表名;【所有列都显示出来】
mysql> select *from student;
+------+--------+
| id | name |
+------+--------+
| 1 | 张三 | ----------此处查询到了我们之前创建的 表项
+------+--------+
2.指定列查询:
select 列名,列名 from 表名:【按需要查询】
——————————如下图所示, 只显示出来我们需要的name列
mysql> select name from student;
+--------+
| name |
+--------+
| 张三 |
+--------+
3.表达式查询:
select 表达式 from 表名 【加减之类的运算,是针对列 的运算,不会对数据库 的本地内容进行修改】
__________初始表————————————
mysql> select *from student;
+------+--------+---------+---------+
| id | name | chinese | english |
+------+--------+---------+---------+
| 1 | 张三 | 98 | 88 |
+------+--------+---------+---------+
1 row in set (0.00 sec)
————————————进行了表格式查询——————————————
mysql> select chinese + english from student;
+-------------------+
| chinese + english |
+-------------------+
| 186 |
+-------------------+
1 row in set (0.01 sec)
——————————由下表,可以看出数据库里面内容并没有改变——————————
mysql> select * from student;
+------+--------+---------+---------+
| id | name | chinese | english |
+------+--------+---------+---------+
| 1 | 张三 | 98 | 88 |
+------+--------+---------+---------+
4.别名:
select 表达式 as 别名 from 表名;【查询结果的表中的列名就 变成别名了】
mysql> select chinese + english as toole from student;
+-------+
| toole | ----此时这个 toole 就为别名
+-------+
| 186 |
+-------+
5.去重:
select distinct 列名 from 表名; 修饰某个列
【只会保留一 个】【多列的话,每列都需要相同】
mysql> select * from student;
+------+--------+---------+---------+
| id | name | chinese | english |
+------+--------+---------+---------+
| 1 | 张三 | 98 | 88 |
| 2 | 李四 | 89 | 91 |
| 3 | 王五 | 89 | 99 |
+------+--------+---------+---------+
——————————去重发现语文只剩两个——————————
mysql> select distinct chinese from student;
+---------+
| chinese |
+---------+
| 98 |
| 89 |
+---------+
6.查询排序:
Select 列名 from 表名 order by 列名 asc/desc;【asc 升序,desc 降序 省略则升 序】【不加 order by 会产无序的排序】
mysql> select chinese from student order by chinese asc;
+---------+
| chinese |
+---------+
| 89 |
| 89 |
| 98 |
+---------+
————————————可以看到其为升序排名——————————
mysql> select name ,chinese from student order by chinese asc;
+--------+---------+
| name | chinese |
+--------+---------+
| 李四 | 89 |
| 王五 | 89 |
| 张三 | 98 |
+--------+---------+
a)针对列比较规则
b)排序的是降序还是升序
Select 条件查询的顺序:
1.遍历表中的每个记录————
2.把当前记录的值,带入条件,根据条件筛选;
3.如果这条记录条件成立,就保留,进行列上的表达式
4.如果有 order by 会在所有行被获取后(表达式也算)之后再执行
7.条件查询 (where)
Select 列名 from 表名 where 条件;【会指定具体的条件,按条件进 行筛选】
———————————按最后一个举例 ————————
mysql> select name , chinese from student where name like '%五';
+--------+---------+
| name | chinese |
+--------+---------+
| 王五 | 89 |
+--------+---------+
1 row in set (0.01 sec)
————其余通用————————
1.运算符 说明
a) >, >=, <, ><= 大于,大于等于,小于,小于等于
b) = 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
c) <=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)【可 以针对多列】
d) !=, <> 不等于
e) BETWEEN a0 AND a1 范围匹配,[a0, a1],如果 a0 <= value <= a1, 返回 f) f) TRUE(1) IN (option, ...) 如果是 option 中的任 意一个,返回 TRUE(1)
g) IS NULL 是 NULL 【只能针对一个列】
h) IS NOT NULL 不是 NULL LIKE 模糊匹配。
i) select * from 表名 where 列名 like ‘要查询的%';
【% 表示任意多个(包括 0 个)任意字符; eg:%孙% ,%孙 , 孙%】
【 _ 表示任意一个字 符 代替一个字符eg: _孙】
2.逻辑运算符
mysql> select name , chinese from student where chinese>87 and english >93;
+--------+---------+
| name | chinese |
+--------+---------+
| 王五 | 89 |
+--------+---------+
——————————其余同用————————
AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 条件为 TRUE(1),结果为 FALSE(0)
8.分页查询:
1.select * from 表名 limit 3; offset 数字 【limit 查询几条 记录 offset 每次偏移量】
mysql> select *from student limit 1 offset 2; ----limit 后面为查询条数
+------+--------+---------+---------+
| id | name | chinese | english | ----- offset 后面为偏移量,及所查找的在哪
+------+--------+---------+---------+
| 3 | 王五 | 89 | 99 |
+------+--------+---------+---------+
1 row in set (0.00 sec)
mysql> select *from student limit 1 offset 1;
+------+--------+---------+---------+
| id | name | chinese | english |
+------+--------+---------+---------+
| 2 | 李四 | 89 | 91 |
+------+--------+---------+---------+
1 row in set (0.00 sec)
mysql> select *from student limit 1 offset 0;
+------+--------+---------+---------+
| id | name | chinese | english |
+------+--------+---------+---------+
| 1 | 张三 | 98 | 88 |
+------+--------+---------+---------+
使用 select *这种方式查询, 比较危险
需要保证一次查询,不要查出太多
Limit 可以限制这次查询最多能查出来多少个结果
数据多,一次性全显示,会影响效率,不方便去看
常用字符类型
数据类型 | 大小 | 说明 | 对应java类型 |
BIT[ (M) ] | M指定位 数,默认 为1 | 二进制数,M范围从1到64, 存储数值范围从0到2^M-1 | 常用Boolean对应BIT,此时 默认是1位,即只能存0和1 |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGINT | 8字节 | Long | |
FLOAT(M, D) | 4字节 | 单精度,M指定长度,D指定 小数位数。会发生精度丢失 | Float |
DOUBLE(M, D) | 8字节 | Double | |
DECIMAL(M, D) | M/D最大 值+2 | 双精度,M指定长度,D表示 小数点位数。精确数值 | BigDecimal |
NUMERIC(M, D) | M/D最大 值+2 | 和DECIMAL一样 | BigDecimal |