1、登录:-h localhost -u root -p root
2、mysql命令行有两种方式结尾: 分号(;) 和 \g
注意: \g 与前面的命令中间有空格,否则会报错,如下图。
![](https://img.haomeiwen.com/i14227815/b52b48270c0742b9.png)
![](https://img.haomeiwen.com/i14227815/0ed238a1fe8cacde.png)
数据库
1、创建数据库:create database 数据库名; 例: create database info;
说明:创建数据库前先判断是否存在该数据库的语句:
create database if not exists info default charset utf8 collate utf8_general_ci;
2、删除数据库:drop database 数据库名; 例: drop database info;
实例:从下图中可以看出,中间的 database 一定要带上。
![](https://img.haomeiwen.com/i14227815/d7edbe701d55c8fa.png)
数据表
1、创建基本表: create table 表名(<表名> < 数据类型>);
查看创建表的语句: show create table 表名;
说明: 在创建数据表时,常常指定数据引擎以及字符集类型,如:Engine=InnoDB DEFAULT CHARSET=utf8;
创建数据表的语句和查看创建表时的语句:
![](https://img.haomeiwen.com/i14227815/2059fd61b1b93cb1.png)
2、删除基本表:drop table 表名; truncate table 表名;delete from 表名 [where 子句];
实例:
truncate 表名; 表结构仍然存在。
![](https://img.haomeiwen.com/i14227815/d4b5ff80742375f2.png)
delete from 表名 where clause ; 表结构仍然存在。
![](https://img.haomeiwen.com/i14227815/6bf86968a4de46ab.png)
drop table 表名; 再次查看表时会报错,提示表不存在
![](https://img.haomeiwen.com/i14227815/465c32b3c5c5e606.png)
3、修改基本表:使用Alter table语句修改基本表
语法:
Alter table 表名
新 增 字 段: Add column <新列名> <数据类型> [ 完整性约束]
删 除 字 段: Drop column <列名>
修改字段类型: Alter column <列名> <数据类型>
说明:
a. 新增字段 add 和 删除字段 drop 语句中的column 是可选的,可带,可不带。
b. 修改字段 modify, change,alter
Modify:只修改字段类型,不能修改字段名称.
语法: alter table 表名 modify 字段名称 字段类型 [约束]; alter table student modify dizhi text;
Change : 可选择是否修改字段类型和字段名称.
change关键字后,要修改的字段名,新字段名及新数据类型,这三项缺一不可。
由于三项必须填写,如果不想修改字段类型和字段名称,那么在新字段名称和新字段类型的位置仍写原字段名称或字段类型。
语法: alter table 表名 change 字段名称 新字段名称 新字段类型; alter table student change i j bigint;
Alter :只能添加、删除默认值,不能修改字段类型,不能修改字段名称。添加默认值时一定要加上关键字set。
修改字段默认值 : Alter table student alter i set default 1000;
删除字段默认值: Alter table student alter i drop default;
c. 指定新增字段的位置:first 关键字(设定为第一列)和after关键字(设定位于某个字段之后),这两个关键字只作用于ADD子句。
新增字段:
![](https://img.haomeiwen.com/i14227815/001d3a3b9a3aeff8.png)
删除字段:
![](https://img.haomeiwen.com/i14227815/15e7e1d6d0465466.png)
添加默认值:
![](https://img.haomeiwen.com/i14227815/bdf36fae099fb380.png)
4、修改表名
Alter table 原表名 rename to 新表名;
![](https://img.haomeiwen.com/i14227815/135759cfd2ac7286.png)
查看数据库、数据表
1、使用数据库、选择数据库:use 数据库名;
注意:创建和删除数据库、数据表时,中间都要带上database、table,而选择数据库时没有带database.
2、查看有哪些数据库: show databases; 注:结尾要带s
3、当前数据库下有哪些数据表:show tables; 注:结尾有s
![](https://img.haomeiwen.com/i14227815/d2636cc6f50a3d41.png)
4、查看表结构:desc 表名;或 describe 表名; 简写/全写两种方式均可 或 show columns from 表名;
![](https://img.haomeiwen.com/i14227815/bb9ee33ce80b15a0.png)
5、查看某个数据库下所有表的类型、状态: show table status from 数据库名 [ like 'pattern' ];
like ' pattern ' 表示查询哪些表的具体表名。
a. show table status from try; 查询 try 数据库下所有表的信息。
![](https://img.haomeiwen.com/i14227815/4fd9bb44791edf4e.png)
b. 查看数据库 try 下 student 表中的信息。
![](https://img.haomeiwen.com/i14227815/e5e2ad2398ab21ab.png)
6、查看创建数据表的语句: show create table 表名;
![](https://img.haomeiwen.com/i14227815/dee0cdbf0cbbd557.png)
表数据操作
1、向表中插入数据
a. insert into 表名 [(field1, field2 …… field n)] values (value1, value2 …… value n);
说明: 如果INTO子句没有指明(或列出)任何列名,则新插入的元组必须在每个属性列上均有值。
如果指出了新增加的元组在哪些属性列上要赋值,属性的顺序可以与CREATE TABLE中的顺序不一样。
b. 另一种方法: 也称为复制另一张表数据
insert into ……select 子句
2、更新表数据:
update 表名 set field1=values1, field2 = values2 [where clause];
insert into 与 update的区别:insert into 是插入一条新记录,update是在原来表的数据上进行更新、修改。
3、Group by子句
Group by子句将查询结果按某一列或多列的值分组,值相等的为一组。
对查询结果分组的目的是为了细化聚集函数的作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。
Having短语:如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则使用having短语指定筛选条件。
说明:
where子句与having短语的区别:在于作用对象不同。
where子句:作用于基本表或视图,从中选择满足条件的元组。
having短语:作用于组,从中选择满足条件的组。
4、Join的使用
在真正的应用中经常需要从多个数据表中读取数据,因此在mysql中使用Join来联合多表查询。
JOIN按照功能大致分为如下四类:
a. Inner join (内连接,或等值连接,可以省略Inner,效果一样):获取两个表中字段匹配关系的记录。
b. Left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
c. Right join(右连接):获取右表所有记录,即使左表没有对应匹配的记录。
d. Full join (全连接):只要左表和右表其中一个表中存在匹配,则返回行。full join结合了left join 和 right join的结果。
5、Union操作符
功能:用于连接两个以上的select语句的结果,使其组合到一个结果集中。
语法:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
说明: a. 可以只检索其中几个字段,并不是所有字段。
b. Distinct是默认选项,即省略关键字情况下Union操作符删除了重复的数据。
All, 返回所有结果集,包含重复数据。
6、去重操作
a. distinct 关键字:select distinct age from person;
b. group by : select age from person group by age;
7、聚集函数(Aggregate functions)
count( [ distinct | all ] * ) 统计元组个数
count( [ distinct | all ] <列名> ) 统计一列中值的个数
sum( [ distinct | all ] <列名>) 计算一列值的总和(此列必须是数值型)
avg( [ distinct | all ] <列名>) 计算一列值的平均值(此列必须是数值型)
max( [ distinct | all ] <列名>) 求一列值中的最大值
min( [ distinct | all ] <列名>) 求一列值中的最小值
说明: where子句中是不能使用聚集函数作为条件表达式的。
8、常用的查询条件
比 较: =,>,<,>=,<=,!=,<>,!>,!< (不等于两种形式: != 和 <>)
确定范围: between and, not between and
确定集合: In, Not in
字符匹配:Like , Not Like
空 值: Is Null, Is not null
多重条件(逻辑运算):And, Or, Not
说明:
a. 通配符: %(百分号):任意长度的字符串。 _(下划线):任意单个字符。
b.如果匹配串中不含通配符,like效果类似于=(等于); not like类似于 != 或 <> (不等于)
c. 处理NULL值时不能使用 = NULL 或 !=NULL, 需要使用IS NULL和 IS NOT NULL运算符。
d.不能比较NULL 和 0,它们不是等价的。
9、为表名或列名指定别名(Alias):select name as a from student as b;
10、Select语句的一般格式
SELECT [ ALL | DISTINCT ] <目标列表达式> [ 别名 ] [ , <目标列表达式> [ 别名 ] ]
FROM < 表名或视图名 > [ 别名 ] [ , < 表名或视图名 > [ 别名 ] ] ……
WHERE <条件表达式>
GROUP BY <列名1> HAVING <条件表达式>
ORDER BY <列名2> [ ASC | DESC ]
注: 几个关键字的使用顺序: where, group by , having, order by
网友评论