Java

MySQL基础

2018-12-14  本文已影响5人  强某某

MySQL的SQL语句


1.DDL : 定义数据库,数据表的结构,create drop alter

2.DML : 数据操纵语言, insert update delete

3.DCM : 数据控制语言,定义访问权限,取消访问权限,安全设置 grant

4.DQL :数据查询语言, select(查询) from子句 where子句


数据库CRUD操作

首先登录数据库: mysql -uroot -p

创建数据库

create database java
-- 指定字符集
create database java character set utf8
-- 指定校对规则
create database java character set utf8 collate 校对规则

查看数据库

-- 查看所有数据库
show databases;
-- 查看数据库定义语句
show create database java

修改数据库

-- 修改数据库的字符集
alter database java character set utf8

删除数据库

drop database java;

其他数据库命令

-- 切换数据库
use java
-- 查看当前使用的数据库
select database();

表的CRUD操作

创建表

-- 列的约束
    主键约束: primary key
    唯一约束: unique
    非空约束: not null

-- 数据类型
    data : YYYY-MM-DD
    time : hh:mm:ss
    datatime: YYYY-MM-DD hh:mm:ss 默认null
    timestamp: YYYY-MM-DD hh:mm:ss 默认当前时间
create table student(
    sid int primary key,
    sname varchar(30),
    sex int,
    age int
) ;

查看表

-- 查看所有表
show tables;
-- 查看表的定义
show create table student;
-- 查看表结构
desc student;

修改表

-- 添加列
alter table student add chengji int not null;
-- 修改列(修改列sex的类型为varchar类型)
alter table student modify sex varchar(2);
-- 修改列名(修改列sex名为gender)
alter table student change sex gender varchar(2);
-- 删除列
alter table student drop gender;
-- 修改表名
rename table student to java;
-- 修改表的字符集
alter table student character set utf8;

删除表

drop table student;

表数据的CRUD操作

插入数据

insert into student (name,age,sex) values ("qiang",20,"1");
insert into student values("zeng",30,"2");
-- 批量插入(成功一起成功,失败一起失败)
insert into student values("zeng",30,"2"),("zeng",30,"2");
-- 查看表中数据
select * from student;

MySQL插入中文的问题


1.关闭MySQL服务

2.找到my.ini文件,找到第57行,修改为gbk

配置文件截图.png

3.重启MySQL服务即可


删除记录

delete from student where name='qiang';
-- delete不指定条件会一条一条全部删除(数据量少的时候效率高)
delete from student;
-- truncate(DDL)删除(先删除表在重建表,数据量多的时候效率高)
truncate student;

更新表记录

-- 修改age=20的数据的sex为30 name为曾
update student set sex=30,name="曾" where age=20;

查询记录

select [distinct] [*] [列名,列名2] from 表名 [where 条件]
-- distinct 去重查询
select distinct * from student;
-- 别名查询 as关键字 可省略
select distinct sex s from student;
-- 运算查询
SELECT  *, age*2 AS ageall FROM student WHERE age=20;
-- 查询年纪在10-20
SELECT  * FROM student WHERE age>10 AND age<20;
SELECT  * FROM student WHERE age BETWEEN 10 AND 20;
-- like:模糊查询
    _ : 代表一个字符
    % : 代表是多个字符
SELECT * FROM student WHERE NAME like'_曾';
-- in 查询某个范围中获得的值
SELECT * FROM student WHERE age IN (20,30)
-- 排序查询(asc 升序,默认  desc 降序)
SELECT  * FROM student WHERE age ORDER BY age asc;

聚合函数

--注意:where之后不可以接聚合函数
-- 求和 sum()
SELECT SUM(age) FROM student WHERE age>1;
-- 求平均值avg()
SELECT AVG(age) FROM student WHERE age>1;
-- 统计数量
SELECT COUNT(*) FROM student;
-- 最大值/最小值 max()/min()
SELECT MAX(age) FROM student WHERE age>1;
--综合(查询所有年纪大于平均年纪的信息)
--之所以用子查询是因为where后面不可以使用聚合函数
SELECT * FROM student WHERE age> (SELECT AVG(age) FROM student);

分组查询(group by)

-- having 关键字 可以接聚合函数 出现在分组之后
-- where  关键字 不可以接聚合函数,出现在分组之前
-- 查询age大于1并且分组信息中sex为2的信息
SELECT * FROM student WHERE age>1 GROUP BY age HAVING sex='2';
上一篇下一篇

猜你喜欢

热点阅读