SHOW CREATE DATABASE school-- 查看创建数据库语句
SHOW CREATE TABLE student-- 查看创建表语句
DESC student -- 显示表结构
ALTER TABLE student1 RENAME AS teacher-- 修改表名
ALTER TABLE teacher ADD age INT (11)-- 增加表字段
– 修改表的字段
ALTER TABLE teacher MODIFY age VARCHAR(11)-- 修改约束
ALTER TABLE teacher CHANGE age age1 INT(10)-- 修改重命名
ALTER TABLE teacher DROP age1-- 删除表字段
DROP TABLE IF EXISTS teacher -- 删除表(如果表存在再删除)
– 添加外键约束
ALTER TABLE student1
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`)
ALTE TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (作为外键的列) REFERENCES 那个表(哪个字段)
– 添加语句
insert into 表名 (字段1
,字段2
,字段3
) values(‘值1’,‘值2’,‘值3’),…
– 修改表
update 表名 set 数据库的列 = value, 数据库的列 = value,… where 条件[ ]
–删除表
delete from 表名 where 条件/
TRUNCATE 表
区别: TRUNCATE 不会影响事务
TRUNCATE 重新设置自增列 计数器会回归
DELETE 自增不会归零
delete删除之后重启数据库 现象:
引擎 innoDB 自增列会从1开始 (存在内存当中 , 断电即失)
MyISAM 继续从上一个自增量开始 (存在文件当中,不会丢失)
– 查询表:
– 查询 SELECT 字段 FROM 表
SELECT * FROM `student`
SELECT * FROM `result`
SELECT `studentname`,`studentno` FROM `student`
– 别名, 给结果起一个名字 AS 可以给字段起别名 也可以给表起
字段名 AS 别名 / 表名 AS 别名
SELECT studentname
AS 学名,studentno
AS 学号 FROM student
AS 学生
– 函数 Concat (a,b)
SELECT CONCAT ('姓名: ',studentname) AS 新名字 FROM `student`
SELECT * FROM result -- 查询全部考试成绩
SELECT `studentno` FROM result
– 去重
SELECT DISTINCT studentno
FROM result
SELECT VERSION()-- 查询系统版本
SELECT 100*2-1 AS 计算结果 – 用来计算
– 学生考试成绩+1
SELECT `studentno`,`studentresult`+1 AS '提分后' FROM result
SELECT `studentno` ,`studentresult` FROM result
SELECT `studentresult` FROM result
WHERE studentresult BETWEEN 90 AND 100
SELECT `studentresult`,`studentno` FROM result
WHERE studentresult>=75 && studentresult <=100 AND `studentno`!= 1000
SELECT `studentno` FROM result
WHERE NOT `studentno`=1001
– 查询姓张的同学 LIKE 是范围匹配 %(代表0到任意个字符) _ (代表一个字符)
SELECT `studentname`,`studentno` FROM student WHERE `studentname` LIKE '张%'
– 查询 1001,1002,1003学号的学生 IN 是具体的一个或者多个值
SELECT `studentno`,`studentname` FROM student WHERE `studentno` IN (1001,1002,1003)
– 查询地址在北京的学生
SELECT `studentno`,`studentname`,`address`FROM student WHERE `address` LIKE '%北京%'
– 查询有出生日期的同学
SELECT `studentno`,`studentname` FROM student WHERE `borndate` IS NOT NULL
– 联表查询
– 查询参加了考试的学生(学号,姓名,科目编号,分数)
– inner join 如果表中至少有一个匹配,就返回行
SELECT s.`studentno`,`studentname`,`subjectno`,`studentresult`
FROM student AS s
INNER JOIN result AS r
ON s.`studentno` = r.`studentno`
– join (连接的表) on(判断条件) 连接查询
– where 等值查询
– Right join 会从右表中返回所有的值,即使左表中没有匹配
SELECT s.`studentno`,`studentresult`,`studentname`,`subjectno`
FROM student AS s
RIGHT JOIN result AS r
ON s.`studentno` = r.`studentno`
– Left join 会从左表中返回所有的值,即使右表中没有匹配
SELECT s.`studentno`,`studentresult`,`studentname`,`subjectno`
FROM student AS s
LEFT JOIN result AS r
ON s.`studentno` = r.`studentno`
– 多表查询
SELECT s.`studentno`,`studentname`,`subjectname`,`studentresult`
FROM student s
RIGHT JOIN result r
ON r.`studentno`=s.`studentno`
INNER JOIN `subject` sub
ON sub.subjectno = r.`subjectno`
/*
思路:
– 我要查询哪些数据 select
– 从哪几个表中查 FROM 表 join 连接的表 on 交叉条件
– 假设存在多张表,先查询两张然后再慢慢增加
*/
– 查询父子信息: 把一张表看作两个一模一样的表
SELECT a.`categoryName`AS '父',b.`categoryName` AS '子'
FROM `category` AS a,`category` AS b
WHERE a.`categoryid`=b.`pid`
排序和分页:
– 排序:升序ASC 降序DESC
– ORDER BY 通过哪个字段排序 怎么排
– 分页 limit 查询起始下标,一页显示多少条数据(pagesize)
– 排序和分页写在where 语句后面
SELECT `studentresult`,`subjectname`,`studentname`
FROM `result` AS r
INNER JOIN `subject` AS s
ON r.`subjectno`=s.`subjectno`
INNER JOIN student AS a
ON a.`gradeid`=s.`gradeid`
WHERE `subjectname`='Java程序设计-1' AND `studentresult`>85
ORDER BY studentresult DESC
LIMIT 0,10
子查询:
– 查询C语言-1 考试结果(学号,姓名)
SELECT `studentno`,`studentname` FROM student
WHERE `studentno` =(
SELECT `studentno` FROM `result`
WHERE `subjectno` =(
SELECT `subjectno` FROM `subject`
WHERE `subjectname`='C语言-1'
)
)
创建用户:
– 创建用户 CREATE USER 用户名 IDENTIFIED BY ‘密码’
CREATE USER kuangshen IDENTIFIED BY '12345'
– 修改密码 (修改当前用户密码)
SET PASSWORD = PASSWORD('11111')
– 修改密码 (修改指定用户密码)
SET PASSWORD FOR kuangshen PASSWORD('11111')
– 用户重命名
RENAME USER kuangshen TO kuangshen2
– 用户授权 ALL PRIVILEGES 全部的权限,库.表
– ALL PRIVILEGES 除了给别人授权 其他都能干
GRANT ALL PRIVILEGES ON *.* TO kuangshen2
– 查询权限
SHOW GRANTS FOR kuangshen -- 查看指定用户权限
SHOW GRANTS FOR root@localhost -- 查看root用户
– 删除权限 REVOKE
REVOKE ALL PRIVILEGES ON *.* TO kuangshen
– 删除用户
DROP USER kuangshen
– 使用命令行导出MySQL备份
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表1 表2 表3 >物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school student >D:/a.sql
– 导入备份
#登录的情况下,切换到指定的数据库
#source 备份文件
source D:/a.sql