登录 mysql -uroot -p
查看MySQL中有哪些数据库
show databases;
注意:以分号结尾,分号是英文的分号。
使用某个数据库
use test
use+数据库名
创建数据库
create database test1;
删除 drop database +数据库名:
8、数据库当中最基本的单元是表 : table
姓名 性别 年龄 (列 : 字段)
张三 男 20
李四 女 21
王五 男 22
数据库当中是以表格的形式表示数据的. 因为表比较直观。
任何一张表都有行和列 :
行(row) : 被称为数据/记录。
列(column) : 被称为字段。
SQL语句分类
登录mysql数据库: mysql -u【用户名】 -p【密码】
数据库:
创建数据库:CREATE DATABASE 【数据库名】;
查询数据库: SHOW DATABASES; SHOW CREATE DATABASE 【数据库名】;//查询建库语句
删除数据库:DROP DATABASE 【数据库名】
改数据库: ALTER DATABASE 【数据库名】 【参数】;
使用数据库:use 【数据库名】
数据表:
创建表: CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(11) NOT NULL,
`sex` enum('男','女') NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
删除表: DROP TABLE 【表名】;
修改表: ALTER TABLE 【表名】 ADD AGE INT;
ALTER TABLE 【表名】 MODIFY NAME VACHAR(20);
查询表: SHOW TABLES; SHOW CREATE TABLE 【数据库名】;//查询建库语句
数据:
增加数据: INSERT INTO 【表名】 (字段名) VALUES (数据)
删除数据: 1、条件删除:DELETE FROM 【表名】 WHERE (条件);
2、清空数据表:DELETE FROM 【表名】 ;TRUNCATE 【表名】 ;
修改数据: UPDATE <表名> SET 字段 1=值 1 【,字段 2=值 2…】。。。
查询数据: 1、全部查询 SELECT 【查询的字段】 FROM 【表名】
2、条件查询 SELECT 【查询的字段】 FROM 【表名】 WHERE ....
CREATE TABLE `student` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(10) NOT NULL,
`xuehao` varchar(10) NOT NULL,
`shuxue` double(16,2) NOT NULL,
`yingyu` double(16,2) NOT NULL,
`suanfa` double(16,2) NOT NULL,
`caozuo` double(16,2) NOT NULL,
PRIMARY KEY (`id`)
);
double(16,2) 16位长度,小数点后2位。
Navicat使用教程
筛选、删除、修改可以直接在软件中实现
插入数据:点击应用更改,下面会出现sql语句,
增删改查(单个表)
增
INSERT INTO `test1`.`student` (`id`, `name`, `xuehao`, `shuxue`, `yingyu`, `suanfa`, `caozuo`) VALUES (102, '张三', '9', 9, 9, 9, 99)
insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
删
delete `test1`.`student` WHERE `shuxue` > 100
delete from 表名 where 条件:
改
UPDATE `test1`.`student` SET `shuxue` = 88 WHERE `id` = 12
多个修改,用','隔开
UPDATE `test1`.`student` SET `shuxue` = 11, `yingyu` = 22 WHERE `id` = 100
批量修改
UPDATE `test1`.`student` SET `shuxue` = 60 WHERE `id` >= 100
update 表名 set 字段1=值1 where 条件;
查
select * from t_student where age>=18 and xueli ='本科';
select 字段名1,字段名2,字段名3.。。from 表名 where 查询条件
多表联查
student表的班级id对应class表的id,表名+‘.’+字段1,字段2,字段3,
select * from class join student on class.id =student.cid;
给数据库别名
select s.id,s.sname,c.classname from class c join student s on c.id=s.cid;
select 需要显示的字段 from 表1 join 表2 on 表关系;
关联多个表
select s.id,sname,age,c.classname from class c join student s on c.id=s.cid join grade on c.id=grade.cid;
增加条件
select s.id,s.sname,c.classname from class c join student s on c.id=s.cid join grade on c.id=grade.cid where chinese>60 and math >80 and english >60;;
模糊查询
包含1的数据
SELECT * FROM `test1`.`student` WHERE `id` LIKE '%1%'
以1开头的数据
SELECT * FROM `test1`.`student` WHERE `id` LIKE '1%' LIMIT 0,1000
以x开头 x% 包含%x% 以x结尾%x
在1~60的数据
SELECT * FROM `test1`.`student` WHERE `id` BETWEEN '1' AND '60' LIMIT 0,1000
在列表中
SELECT * FROM `test1`.`student` WHERE `id` IN (1, 2, 3) LIMIT 0,1000
多个条件查询
SELECT * FROM `test1`.`student` WHERE `shuxue` >= '80' AND `yingyu` > '80' LIMIT 0,1000
排序查询
按数学成绩排序
SELECT * FROM `test1`.`student` ORDER BY `shuxue` LIMIT 0,1000
倒序
SELECT * FROM `test1`.`student` ORDER BY `shuxue` DESC LIMIT 0,1000
统计、重命名
SELECT count(*) FROM `test1`.`student`
并重命名
SELECT count(*) as '数量' FROM `test1`.`student`
SELECT id,name as '数量' FROM `test1`.`student`
+--------+
| 数量 |
+--------+
| 102 |
+--------+
1 row in set (0.00 sec)
常用命令:
求最小值、最大值
SELECT max(shuxue) FROM `test1`.`student`;
SELECT min(shuxue) FROM `test1`.`student`;
求和
SELECT sum(shuxue) FROM `test1`.`student`;
分组(按某个字段分组),分组查询
后面加\G 换行显示
SELECT * FROM `test1`.`student` where id=1 \G;
名字不能合并,所以可以查询每个班的人数
应用
求每个班的总成绩
select s.id '编号',s.sname '姓名',c.classname , s.age,(g.chinese+g.math+g.english) from t_student s join t_grade g on s.id=g.sid join t_class c on c.id=s.cid;
求每个班的平均分
select c.id '编号',c.classname,sum(g.chinese+g.math+g.english) from t_student s join t_grade g on s.id=g.sid join t_class c on c.id=s.cid group by c.id;
DQL:
数据查询语言(凡是带有se1lect关键字的都是查询语句)
select...
DML:
数据操作语言(凡是对表当中的数据进行增删改的都是DM)
insert delete update
insert 增
delete 删
update 改
这个主要是操作表中的数据data。
DDL:
数据定义语言 凡是带有create、drop、alter的都是DDL.
DDL主要操作的是表的结构。不是表中的数据。
create: 新建,等同于增
drop:删除
alter:修改
这个增删改和D匹不同,这个主要是对表结构进行操作。
TCL
改