MYSQL数据库--基本操作

安装MYSQL

  1. 解压后
    bin/mysql.exe 客户端程序
    bin/mysqld.exe 服务端程序
    bin/mysqldump
  2. 创建自己用户及其其他配置;主机地址为127.0.0.1或者localhost;用户名和密码自己设置以便于下次登录;端口一般为默认3306.

操作数据库

命令操作

查看数据库编码:SHOW VARIABLES LIKE 'char%' 查看数据库所加载的所有信息,如下图所示:

通过命令窗口 登录mysql:mysql -hlocalhost -u用户名 -p密码 如下题所示:

查看数据库:SHOW DATABASES; 查看数据库所创建的所有信息,如下图:

 打开数据库:USE 数据库名;

查看当前数据库下所有表:SHOW TABLES;  查看student al数据库下所有的表,如下:

创建数据库:CREATE DATABASE 数据库名;

基本操作

-- DDL :数据定义语言  create ,drop,alter,truncate(清空表),//用于检索或者修改数据

-- DML :数据操作语言  select insert update delete//用于定义数组类型的结构,如增删改查

-- DCL :数据控制语言  grant(授权), revoke(回收权限)//用于定义数据库用户的权限。

-- TCL :事务控制语言  commit  rollback

-- DQL :数据查询语言  select

建表
一个数据库中有多张表,每张表可能会有多条数据;
表分为行(row)和列(column)

create table 表名(
	列名		数据类型,
	列2名	数据类型,
	...
);

如果表已经存在,则不执行;

create table if	not	exists	表名(
	列名		数据类型,
	列2名	数据类型,
	...
);

比如创建一个学生表:

create table student(
	id int,
	name varchar(10),
	sex char(1)
);

唯一主键
每张表只能有一个主键,主键的值必须是唯一且非空的;

create table 表名(
	列名		数据类型		primary key,
	列2名	数据类型,
	...
);

创建学生表  (子表)

CREATE TABLE student
(
   sid INT PRIMARY KEY AUTO_INCREMENT,
   sname VARCHAR(30) NOT NULL,
   scid INT,
   FOREIGN KEY (scid) REFERENCES school(scid)-- 外键(与另外一个表所联系的键)
);

自增列
用来解决主键冲突问题,由于加了自增列的列有数据库维护,所以插入数据时不在写被维护的列;
在主键后加上:auto_increment

create	table	[if not exists] 表名{
	列名		数据类型		约束,
	...
}

约束类型:
not null:表示此列不能为空;
unique:表示此列的取值是惟一的;
primary key:唯一且非空,一个表只能有一个列为主键。

修改表:ALTER TABLE student ;ADD address VARCHAR(50)(给student表增加一列 列名为address).

删除表:drop table 表名;

- 清空表truncate:truncate table 表名;

AS 别名 可以省略:SELECT sid AS 学员编号, sname 学员姓名 FROM 表名;(不改变底层真正的名字)

表达式:SELECT 列名(+ - * /)某值  AS(可以省略) 编号 FROM  表名;

常量:SELECT 99 成绩,sid,sname,email FROM student;

多列拼接: select '姓名'||sname as 信息 from student;

SELECT CONCAT('姓名:',sname,';生日:',birthday) 学员信息 FROM student;(比较常用);

去除这一列的重复值:select distinct 去重的列 from 表;--count(distinct 列名):取出并统计这一列的个数。

order by(排序):排序条件:列名、升序(asc)、降序(desc)
如果省略升降序默认为升序:select * from 表名 order by 列 [asc|desc] limit n(取前几条);
多列排序
先按照条件1排序,若条件1取值相同则按条件2排序。
select * from 表名 order by 排序条件1,排序条件2... [asc|desc]

having 也是过滤where>group by>having>select>order by>limitSQL语句执行顺序

  • 整数类型:tinyint(1个字节对应java的byte)、smallint(2个字节对应short)、int(4字节)、bigint(8字节对应long对应);
  • 浮点类型:float、double;
  • 定点小数:准确存储小数,但是花费资源较多,decimal(总位数,小数位数);
  • 字符类型:
    char(length) 表示最多存length个字符,定长 ,存储时,长度不足,用空格补齐;
    varchar(length) 表示最多存10,存储时根据实际长度来存储;
  • 日期类型:
    datetime(重要选错误后面运行时会出现类型异常栽过大跟头)
    timestamp

常规指令(熟练)

增 (insert)

增加数据
注意值的个数与列的个数一致:
insert into 表名(列1,列2...列n) values (值1,值2...值n);

一次插入记录:
insert into student(name,sex) values(n1,s1),(n2,s2)...;

错误:列和值 个数不一致 INSERT INTO school(name,sex)VALUES('','');

-- 可以省略列名  但是注意必须全列个数插入 而且顺序必须要和表设计列一致

insert into  school values(default,‘张三','男');

 


查(select 最重要)

语法:select 列名... from 表名 where 条件;

查询数据
select 列1,列2... from 表名;

select*from 表名;查询所有表信息,不推荐使用。

select  列名  from  表名  where  条件(常用)

条件  and  or  in   like(模糊查询)  between...and

SELECT * FROM student WHERE sid>=2 AND scid=3;-- (且关系)

SELECT * FROM student WHERE sid=1 OR sid=2 OR sid=3-- (或关系)

SELECT * FROM student WHERE sid IN(1,2,3)-- (集合关系)

SELECT * FROM student WHERE sid BETWEEN 2 AND 3;-- (区间关系)

SELECT * FROM student WHERE sname LIKE '%张%';-- (****张****)

SELECT * FROM student WHERE sname LIKE '张%';-- (张******)

SELECT * FROM student WHERE sname LIKE '_张_';-- (*张*)

 聚合函数 count avg sum max min

SELECT * FROM score;

SELECT COUNT(*) FROM score;

SELECT COUNT(*)总数,AVG(score)平均成绩,MIN(score)最低成绩,MAX(score)最高成绩 FROM score;

 not in

SELECT * FROM school WHERE scid NOT IN( SELECT DISTINCT scid FROM student)

is null

SELECT * FROM student WHERE tel IS NULL;

SELECT * FROM student WHERE tel IS NOT NULL;

分组查询 group by:

-- 查询每个科目中最高成绩 ,平均成绩,最低成绩
SELECT cid, MAX(score) 最高成绩,AVG(score)平均成绩
FROM score
GROUP BY cid  -- 按科目分组


--     ------------------------
-- 查询平均成绩大于70分的科目成绩
SELECT cid, MAX(score) 最高成绩,AVG(score)平均成绩
FROM score
GROUP BY cid  -- 按科目分组
HAVING AVG(score)>70

asc 升序(默认)  desc 降序:SELECT * FROM score ORDER BY score ASC;

关联查询 内连接 左外连接 右外连接(了解熟悉一下)

DESC 表明.....查看表结构。


删(delete)

语法:delete from 表名;//删除所有记录------------删除指定列:delete from 表名 where 条件;

delete from student where sid=4 OR sid=5;  -- 注意添加条件where

只删除指定记录
删除student表中id=6的记录:

delete from student where id=6;

删除列:alter table 表名 drop 列名;

改(update)

语法:update 表名 set 列名=新值;把所有记录都会修改
修改指定列:update 表名 set 列名=新值 where 条件;
例子:

--修改 一列
update person set sex='男' where id=1;
 -- 同时修改多列
UPDATE student 
SET tel='13566666666',scid=3 
WHERE sname='张飞';

多表结构和连接查询、子查询(sub query)--------后续了解.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值