标题: JDBC [打印本页] 作者: HMProgrammer 时间: 2019-8-14 15:02 标题: JDBC 复习
CREATE DATABASE intelligence;
CREATE DATABASE IF NOT EXISTS inset;
CREATE DATABASE stuff CHARACTER SET utf8;
CREATE DATABASE IF NOT EXISTS db CHARACTER SET gbk;
SHOW DATABASES;
SHOW CREATE DATABASE intelligence;
ALTER DATABASE db CHARACTER SET utf8;
DROP DATABASE stuff;
DROP DATABASE IF EXISTS stuff;
SELECT DATABASE;
USE db;
SELECT DATABASE();
CREATE TABLE stu(
id INT,
NAME VARCHAR(4),
age INT,
hobby VARCHAR(5),
gender VARCHAR(10),
score DOUBLE(4,2),
address VARCHAR(20)
);
INSERT INTO stu
(id,NAME,age,hobby,gender,score,address)
VALUES
(1,'李白',23,'蹴鞠','男',88,'四川'),
(2,'杜甫',21,'沉思','男',75,'成都'),
(3,'白居易',23,'游园','男',89,'银川'),
(4,'王鹤',34,'坐船','女',90,'苏州'),
(5,'李清照',23,'乘凉','女',99,'江南'),
(6,'李孟熙',22,'喝酒','女',94,'浙江'),
(7,'汪伦',23,'送朋友','男',88,'桃花江'),
(8,'苏轼',27,'教孩子','男',99,'河南');
UPDATE stu SET NAME='李梦溪',score=86 WHERE id=6;
UPDATE stu SET gender='男',age=29 WHERE id=4;
SELECT * FROM stu;
SELECT NAME,age FROM stu;
SELECT * FROM stu WHERE id=1;
SELECT * FROM stu WHERE NAME LIKE '李_'; -- 李白
SELECT * FROM stu WHERE NAME LIKE '李__'; -- 李梦溪 李清照
SELECT * FROM stu WHERE NAME LIKE '李%'; -- 李白 李梦溪 李清照
SELECT * FROM stu WHERE NAME LIKE '李%' AND LIMIT id=2
TRUNCATE TABLE stu;
SHOW TABLES; # table in db stu stu1
DESC stu;
ALTER TABLE stu1 RENAME TO jazz;
SHOW TABLES; -- table in db jazz stu
ALTER TABLE stu CHARACTER SET gbk;
ALTER TABLE stu CHARACTER SET utf8;
DROP TABLE stu;
SELECT * FROM stu WHERE age ORDER BY age ASC,score DESC;
SELECT COUNT(id) FROM stu; -- 8
SELECT COUNT(*) FROM stu;
SELECT COUNT(NAME) FROM stu; -- 8
SELECT COUNT(address) FROM stu; -- 7
SELECT COUNT(IFNULL(address,0))FROM stu; -- 8
SELECT IFNULL(address,0) FROM stu; -- 列出八列,那个空值显示为0
SELECT MAX(score) FROM stu;
SELECT AVG(score) FROM stu;
SELECT gender,AVG(score) FROM stu GROUP BY gender;
SELECT gender,AVG(score),COUNT(*) FROM stu GROUP BY gender;
SELECT gender,AVG(score),COUNT(*) FROM stu WHERE score > 89 GROUP BY gender;
SELECT gender,AVG(score),COUNT(*) FROM stu WHERE score > 90 GROUP BY gender HAVING COUNT(id) > 2; -- 男女各一个,要求显示大于二个的,都不显示
SELECT * FROM stu LIMIT 5,2;
ALTER TABLE stu MODIFY NAME VARCHAR(4) UNIQUE;
INSERT INTO stu
VALUES
(1,'李san',23,'蹴鞠','男',88,'四川');
(1,'李白',23,'蹴鞠','男',88,'四川'),
SQL
DDL :
库
create database ufo;
drop database ufo;
show databases;
show create database ufo;
use ufo;
select database();
R(Retrieve):查询
* 查询某个数据库中所有的表名称
* show tables;
* 查询表结构
* desc 表名;
3. U(Update):修改
1. 修改表名
alter table 表名 rename to 新的表名;
2. 修改表的字符集
alter table 表名 character set 字符集名称;
3. 添加一列
alter table 表名 add 列名 数据类型;
4. 修改列名称 类型
alter table 表名 change 列名 新列别 新数据类型;
alter table 表名 modify 列名 新数据类型;
5. 删除列
alter table 表名 drop 列名;
select * from stu;
select name,age,grade from stu;
select * from stu where id = 1
select * from stu where name like '%马%'
select * from stu where name like '马_'
order by 排序字段 排序方式(ASC DESC), 排序字段 排序方式(ASC DESC)
select * from student where name like '张%' and limit 索引,条目数
DML:增删改表中数据
* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
列名1=值
* delete from 表名 [where 条件]
如 : delete from stu where id=1
* 注意:
1. 如果不加条件,则删除表中 所有记录。
2. 如果要删除所有记录
1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
2. truncate table 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
* update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
例如 : update stu set name='李四' , age=25 where id=2
DQL:查询表中的记录
* select * from 表名;
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2. 基础查询
1. 多个字段的查询
select 字段名1,字段名2... from 表名;
3. 排序查询
select * from 表名 order by 排序字段1 排序方式1 ,排段2 排式2...
select 聚合函数(列名) from 表名;
注意:聚合函数的计算,排除null值。
解决方案:
1. IFNULL(列名,默认值) 如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。 -- 查询id字段,如果为null,则使用0代替
select ifnull(id,0) from student;
2. 我们可以利用 IFNULL()函数,如果记录为 NULL,给个默认值,统计的数据就不会遗漏
select count(ifnull(id,0)) from student;