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
配置文件截图.png3.重启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';