1、 登录和退出MySQL服务器
# 登录MySQL mysql -u [用户名] -p[对应用户名密码]
$ mysql -u root -p12345612
# 退出MySQL数据库服务器
exit;
2、显示所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| creatdab |
| information_schema |
| mysql |
| performance_schema |
| runoob |
| testdab |
+--------------------+
6 rows in set (1.79 sec)
3、选择要编辑的数据库
#use [数据库名称]
mysql> use runoob
Database changed
4、查询数据库中的表
mysql> show tables;
+------------------+
| Tables_in_runoob |
+------------------+
| websites |
+------------------+
1 row in set (1.93 sec)
5、查询表中的数据
#select * from 表名;
mysql> select * from websites;
+----+----------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+----------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com | 5892 | |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
+----+----------+---------------------------+-------+---------+
5 rows in set (0.55 sec)
6、创建数据库
#create database [自定义新数据库名称];
mysql> create database animal;
Query OK, 1 row affected (0.59 sec)
7、在数据库中创建表
mysql> use animal;
Database changed
# create TABLE [表名](字段 数据类型,字段 数据类型,字段 数据类型,...);
mysql> create TABLE pet(name VARCHAR(20),owner VARCHAR(20),sex CHAR(1));
Query OK, 0 rows affected (3.20 sec)
注意事项:
1:var()与varchar()的区别在于var()是定常的,哪怕存储的字符串没有达到"()"中数字的上限,var()依然会占用空格来填充空间.而varchar()则是不定长的,没有达到"()"中的上限则会自动去掉后面的空格;
2:性别不要用:sex 要用:gender 一个是性 一个是性别;
3:定义最后一个字段的时候不要加",";
4:上面的"VAR","VARCHAR","DATE"可以用小写.不过最好用大写来表示区分关键字,若不然也许写到后面你自己都不知道这个词是数据库中的关键字还是你自己自定义的一些数据,同时一定要用英文的标点符号也必须半角输入
8、查看数据表架构
#describe [数据表名]
mysql> describe pet;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (1.30 sec)
9、插入数据
#INSERT INTO [表名] VALUES('旺财','福根','公');里面的值要与创建的字段相对应
mysql> INSERT INTO pet VALUES('旺财','福根','公');
Query OK, 1 row affected (0.13 sec)
注意:
NULL:代表的是空,表示该字段还没有数据.
主动填写'NULL',这代表字段有一个值叫做'null'.
#另一种添加数据的方法
INSERT INTO pet(name,owner) VALUES ('xx','cc');
代表只在name和owner字段上面插入的一条,其他皆为NULL/默认值的数据
10、MySQL的数据类型
大致可以分为三类:数值、日期/时间和字符串(字符)类型
时间类型
字符串类型
注意:金钱最好用int/bigint(整数,单位用分,拿出来进行*100换成元),千万不要直接用浮点,会有精度损失.
11、删除表中数据
#DELETE FROM [表名] where 条件;
mysql> DELETE FROM pet where name='旺财';
Query OK, 1 row affected (2.31 sec)
12 、修改表中数据
#UPDATE pet set 字段 = 新修改的内容,字段= 新修改的内容 WHERE 条件;
mysql> UPDATE pet set name='小白',owner='蜡笔小新' WHERE name = '旺财1';
Query OK, 1 row affected (0.83 sec)
Rows matched: 1 Changed: 1 Warnings: 0
13、查询操作
查询表中的所有行
mysql> SELECT * FROM pet;
+-------+----------+------+
| name | owner | sex |
+-------+----------+------+
| 小白 | 蜡笔小新 | 公 |
| 旺财2 | 福根2 | 公 |
| 旺财3 | 福根3 | 公 |
| 旺财4 | 福根4 | 公 |
+-------+----------+------+
4 rows in set (2.21 sec)
查询表中字段
#SELECT [查询的字段] FROM [表名];
mysql> SELECT name FROM pet;
+-------+
| name |
+-------+
| 小白 |
| 旺财2 |
| 旺财3 |
| 旺财4 |
+-------+
4 rows in set (0.00 sec)
查询不重复发department列
mysql> SELECT sex deparment FROM pet;
+-----------+
| deparment |
+-----------+
| 公 |
| 公 |
| 公 |
| 公 |
+-----------+
4 rows in set (0.00 sec)
如果表中有数值类型,可以查询某一范围的行(这个就不演示了)
-- 查询 score 表中成绩在60-80之间的所有行(区间查询和运算符查询)
-- BETWEEN xx AND xx: 查询区间, AND 表示 "并且"
SELECT * FROM score WHERE degree BETWEEN 60 AND 80;
SELECT * FROM score WHERE degree > 60 AND degree < 80;
查询表中多条具体数据
#SELECT * FROM [表名] WHERE [字段] in (具体值1,具体值2,...);
mysql> SELECT * FROM pet WHERE name in ('小白','旺财3');
+-------+----------+------+
| name | owner | sex |
+-------+----------+------+
| 小白 | 蜡笔小新 | 公 |
| 旺财3 | 福根3 | 公 |
+-------+----------+------+
2 rows in set (1.71 sec)
或查询
or: 表示或者关系
#SELECT * FROM pet WHERE name='小白' or owner='福根2'; 查询表中名字是小白或者是主人是福根2的所有数据
mysql> SELECT * FROM pet WHERE name='小白' or owner='福根2';
+-------+----------+------+
| name | owner | sex |
+-------+----------+------+
| 小白 | 蜡笔小新 | 公 |
| 旺财2 | 福根2 | 公 |
+-------+----------+------+
2 rows in set (0.00 sec)
升序查询(pet表不适合演示)
-- 以 c_no 升序、degree 降序查询 score 表的所有行
SELECT * FROM score ORDER BY c_no ASC, degree DESC;
降序查询(pet表不适合演示)
-- 以 class 降序的方式查询 student 表的所有行
-- DESC: 降序,从高到低
-- ASC(默认): 升序,从低到高
SELECT * FROM student ORDER BY class DESC;
SELECT * FROM student ORDER BY class ASC;
查询数据表中的数据项数量
#COUNT: 统计,可以在FROM 后加上where 来进行筛选数据
mysql> SELECT COUNT(*) FROM pet;
+----------+
| COUNT(*) |
+----------+
| 4 |
+----------+
1 row in set (1.08 sec)
查询数据表中某一数据项的最大值(pet表不适合演示)
-- 查询 score 表中的最高分的学生学号和课程编号(子查询或排序查询)。
-- (SELECT MAX(degree) FROM score): 子查询,算出最高分
SELECT s_no, c_no FROM score WHERE degree = (SELECT MAX(degree) FROM score);
从具体行数开始查询
#对pet表进行降序排序,查询0到1之间的数据
#SELECT * FROM pet ORDER BY name DESC[降序] LIMIT [开始查询的位置],[结束查询的位置];
mysql> SELECT * FROM pet ORDER BY name DESC LIMIT 0,1;
+-------+-------+------+
| name | owner | sex |
+-------+-------+------+
| 旺财4 | 福根4 | 公 |
+-------+-------+------+
1 row in set (1.81 sec)
下一篇
MySQL学习(二)——建表约束与范式
MySQL学习(三)——查询练习