标签:切换 ima 需要 区别 历史 mongdb 布尔 user 连接查询
JavaEE:企业级开发 web
前端(页面:展示,数据)
后台(连接点:连接数据库JDBC,链接前端(控制,控制视图跳转,和给前端传递数据))
数据库(存数据)
DB database
概念:数据仓库,软件,安装在操作系统(windows,linux,mac...)之上
作用:存储数据,管理数据
对应的创建数据库的语句:
CREATE DATABASE ‘school‘ CHARACTER SET utf8 COLLATE utf8_general_ci;
工具-->历史日志(Ctrl+L):能看到复杂操作的MySQL语句
键表示“主键”,不能重复
历史记录中的具体代码操作:
CREATE TABLE `school`.`student` (
`id` int(10) NOT NULL COMMENT ‘学生id‘,
`name` varchar(100) NOT NULL COMMENT ‘学生姓名‘,
`age` int(3) NOT NULL COMMENT ‘学生年龄‘,
PRIMARY KEY (`id`)
)
C:\WINDOWS\system32>mysql -uroot -p8098 //连接
mysql> exit; //断开
Bye
sql的注释:
单行 --
多行 /* */
常用命令:
mysql> show databases; --显示所欲的数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use school; --切换到指定数据库
Database changed
mysql> show tables; --显示当前数据库下的表
+------------------+
| Tables_in_school |
+------------------+
| student |
+------------------+
1 row in set (0.00 sec)
mysql> describe student; --查看表
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(100) | NO | | NULL | |
| age | int(3) | NO | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> create database westos; --创建新的数据库
Query OK, 1 row affected (0.00 sec)
操作数据库>操作数据库中的表>操作数据库中的表的数据
MySQL语句不分大小写
CREATE DATABASE if not EXISTS westos;
Drop DATABASE if EXISTS westos;
常用的为加粗
每一个表,都必须存在以下五个字段!未来做项目用的,表示一个记录存在意义!
id 主键
`version` 乐观锁
is delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
CREATE TABLE [IF NOT EXIST] `表名`(
‘字段名‘ 列类型 [属性] [索引] [注释],
字段名‘ 列类型 [属性] [索引] [注释],
... ...
字段名‘ 列类型 [属性] [索引] [注释],
[PRIMARY KEY(`字段名`)]
)[表类型] [字符集类型] [注释]
逆向查语句
显示表的结构
数据表的类型,即数据库引擎
INNODB:默认,安全性高,事务的处理,多表多用户处理
MYISAM:早些年使用的,节约空间,速度较快
在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库,本质还是文件的存储!
MySQL引擎在物理文件上的区别
●InnoDB在数据库表中 只有一个*.frm文件,以及上级目录下的ibdata文件
●MYISAM对应文件
*.frm 表结构的定义文件
*.MYD 数据文件(data)
*.MY| 索引文件(index)
字段名加上tab键上面的符号包住
所有操作加上 IF EXISTS 防止报错
# 修改表名
ALTER TABLE `studentinf` RENAME AS `student`;
# 增加表的字段
ALTER TABLE `student` ADD `score` INT(3);
# 修改表的字段:1.重命名 2.修改约束
ALTER TABLE `student` MODIFY `score` SMALLINT(3);
ALTER TABLE `student` CHANGE `score` `degree` INT(1);
# 删除表的字段
ALTER TABLE `student` DROP `degree`;
# 删除表
DROP TABLE IF EXISTS `ke`;
# 创建时添加
KEY `FK_gradeid` (`gradeid`) ,
CONSTRINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
删除有外键关系的表的时候,必须要先删除引用别人的表(从表) ,再删除被引用的表(主表)
# 单独加的语句
ALTER TABLE `student`
ADD CONSTRINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);
# 插入语句(添加)
# INSERT INTO 表名(字段1,字段2...)VALUES(值1,值2...)
INSERT INTO `student`(`name`)VALUES(‘小明‘);
# 主键自增,所以我们可以省略
# 数据和字段一定要一一对应
INSERT INTO `student`(`name`,`sex`)VALUES(‘小刚‘,‘男‘);
INSERT INTO `student`(`name`,`sex`,`password`)
VALUES(‘张三‘,‘男‘,5678)
# 字段可以不写,但值要写全,并且一一对应
# 可以同时插入多条数据,VALUES 后面的值,需要使用,隔开即可 VALUES(),(),//...
INSERT INTO `student`(`name`)
VALUES(‘TOM‘),(‘JERRY‘);
# 修改语句 修改条件 设置新值
# 语法 UPDATE 表名 SET 列名=新值[,列名=新值,...] [WHERE 条件];
UPDATE `student` SET `name`=‘小红‘ WHERE id = 1;
# 删除数据
# 语法 DELETE FROM 表名 [WHERE 条件]
DELETE FROM `student` WHERE `password`=5678;
DELETE FROM `student`; --不加约束,全删了
TRUNCATE `student`; --也是清空,推荐使用
SELECT完整语法
查询语法
SELECT 字段,... FROM 表
查询所有
SELECT * FROM 表
给结果起别名 AS
SELECT 字段 [AS 字段别名] FROM 表 [AS 表别名]
函数 CONCAT(a,b)
SELECT CONCAT(‘姓名:‘,StudentName) AS 新名字 FROM student
去重 distinct
查询哪些同学参加了考试
SELECT * FROM result --查询全部考试成绩
SELECT StudentNo FROM result
有重复
SELECT DISTINCT StudentNo FROM result
去重
用来计算
SELECT 100*3-1 AS 计算结果
查询自增步长(变量)
SELECT @@auto_increment_increment
所有学生考试成绩 +1分查看
SELECT StudentNo,StudentResult+1 AS ‘提分后‘ FROM result
数据中的列(表达式):文本值,列,Null,函数,计算表达式,系统变量
尽量使用英文
SELECT StudentNo,StudentResult FROM result
WHERE StudentResult>=95 AND StudentResult<=100
模糊查询:比较运算符
查询姓刘的同学
like结合 %(代表0到任意个字符)_(一个字符)
SELECT StudentNo,StudentResult FROM result
WHERE StudentName LIKE ‘刘%‘
SELECT StudentNo,StudentResult FROM result
WHERE StudentName LIKE ‘%佳%‘
SELECT StudentNo,StudentResult FROM result
WHERE StudentClass IN (1,2,3)
SELECT StudentNo,StudentResult FROM result
WHERE Address=‘‘ OR Address IS NULL
# INNER JOIN
SELECT s.StudentNo,studentName,SubjectNo,StudentResult
FROM student AS s
INNER JOIN result AS r
ON s.StudentNo = r.StudentNo
# RIGHT JOIN 只有这个可以
SELECT s.StudentNo,studentName,SubjectNo,StudentResult
FROM student s
RIGHT JOIN result r
ON s.StudentNo = r.StudentNo
# LEFT JOIN
SELECT s.StudentNo,studentName,SubjectNo,StudentResult
FROM student s
LEFT JOIN result r
ON s.StudentNo = r.StudentNo
# LEFT JOIN
SELECT s.StudentNo,studentName,SubjectNo,StudentResult
FROM student s
LEFT JOIN result r
ON s.StudentNo = r.StudentNo
WHERE StudentResult IS NULL
自己的表和自己的表连接,核心:一张表拆为两张一模一样的表即可
# 查询父子信息
SELECT a.`categoryName` AS ‘父栏目‘ , b.`categoryName` AS ‘子栏目‘
FROM `category` AS a, `category` as b
WHERE a.`categoryId` = b.`pid`
#成绩排序
SELECT name,score FROM student
ORDER BY score DESC
LIMIT (n-1)*pageSize,pageSize
LIMIT (n-1)*pageSize
:起始值SELECT ABS(-5) --绝对值
SELECT CEILING(9.4) --向上取整
SELECT FLOOR(9.4) --向下取整
SELECT RAND() --随机数0-1之间
SELECT SIGN(0) --判断一个数的符号 signal函数,返回值为-1,0,1
SELECT CHAR_LENGTH(‘你好‘) --字符串长度
SELECT CONCAT(‘我‘,‘和‘,‘你‘) --拼接字符串
SELECT INSERT(‘Hello,world‘,1,5,‘Bye‘) --某个位置开始替换某个长度
SELECT LOWER() --字符串转小写
SELECT UPPER() --字符串转大写
SELECT INSTR(‘hello‘,‘o‘) --字符在字符串的第几个位置
SELECT REPLACE(‘HELLO JAVA‘,‘JAVA‘,‘MYSQL‘) --替换指定字符串
SELECT SUBSTR(‘HELLO‘,2,3) --第二个字母开始,截取三个
SELECT REVERSE() --反转字符串
SELECT CURRENT_DATE() --获取当前日期
SELECT CURDATE --获取当前日期
SELECT NOW() --获取当前日期和时间
SELECT LOCALTIME() --本地时间
SELECT SYSDATE() --系统时间
SELECT YEAR(NOW())
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT HOUR(NOW())
SELECT MINUTE(NOW())
SELECT SECOND(NOW())
SELECT SYSTEM_USER()
SELECT USER()
SELECT VERSION()
# 查询表中计数
SELECT COUNT(studentName) FROM student; --COUNT(字段),会忽略所有的null值
SELECT COUNT(*) FROM student; --不会忽略null值,本质,计算行数
SELECT COUNT(1) FROM student; --不会忽略null值,本质,计算行数
#
SELECT SUM(‘studentResult‘) AS 总和 FROM result;
SELECT AVG(‘studentResult‘) AS 平均分 FROM result;
SELECT MAX(‘studentResult‘) AS 最高分 FROM result;
SELECT MIN(‘studentResult‘) AS 最低分 FROM result;
# 加密密码
UPDATE testmd5 SET pwd=MD5(pwd); --加密全部密码
INSERT INTO testmd5 VALUES(4,‘xiaoming‘,MD5(‘123456‘)) --插入时加密
# 如何校验:输入正常的,再加密,和之前加密后的对比
SELECT * FROM testmd5 WHERE `name`=‘xiaoming‘ AND pwd=MD5(‘123456‘)
标签:切换 ima 需要 区别 历史 mongdb 布尔 user 连接查询
原文地址:https://www.cnblogs.com/peng8098/p/db_01.html