MySql_01(sql语句、DDL、DML、DQL(浅谈)、null值计算、now函数)

前言:

感觉看自己过去的笔记,一不方便二感觉不完善,所以把自己以前的笔记整理在CSDN上,不足之处还请指正。

数据库学习笔记整理导航


数据库

概述

存储数据的仓库. 其本质是一个文件系统,数据库按照特定的格式将数据存储起来

数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据

实体类与表的对应关系

Java中的类对应数据库中的表
Java中的一个对象对应表中的一条记录


DOS下操作数据库

启动

启动MYSQL: net start mysql
停止MYSQL: net stop mysql

登陆

mysql -u用户名 -p密码 例如: mysql –uroot -proot(记这一种即可)
mysql -hip地址 -u用户名 -p密码 例如: mysql –h127.0.0.1 –uroot -proot
mysql --host=ip地址 --user=用户名 --password=密码 例如: mysql --host=localhost --user=root --password=root


SQL

sql概念

结构化查询语言(Structured Query Language)简称SQL,就是对数据库进行操作的一种语言

sql作用

通过SQL语句我们可以方便的操作数据库中的数据、表、数据库。sql是DBMS都要遵循的规范,不同的数据库都支持sql语句,但也都特有内容。

sql语法

sql语句以分号结尾
不分区大小写,关键词建议使用大写
有3中注释:单行注释(–注释内容 或 #注释内容此是mysql特有)、多行注释(/* 注释内容 */)

分类
官方定义4种
DDL:数据库定义语言, 主要负责结构性,数据库的增删改,数据库表的增删改
DML:数据操作语言,主要负责数据的增删改
DCL:数据库权限语言(了解)
TCL:数据库事务语言

人为定义1种
DQL:数据库查询语言,主要负责对数据库的查询


DDL

数据库操作

创建数据库

--直接创建数据库(重要)
CREATE DATABASE 数据库名;

--判断是否存在并创建新数据库
CREATE DATABASE IF NOT EXISTS 数据库名;

--创建数据库并指定字符集
CHARACTER SET 设置字符集编码;
CREATE DATABASE 数据库名 CHARACTER SET 字符集;

查看数据库

--查看所有的数据库
SHOW DATABASE;

--查看某个数据库的定义信息
SHOW CREATE DATABASE 数据库名;

修改数据库

--修改数据库字符集格式
ALTER DATABASE 数据库名 DEFAULT  CHARACTER SET 字符集;

删除数据库

DROP DATABASE 数据库名;

使用数据库

--查看正在使用的数据库
SELECT DATABASE();

--使用/切换数据库
USE 数据库名;

数据库表操作

创建表

CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2 ...)

常用数据类型
int 整型
double 浮点型
varchar 字符串
date 日期类型(格式为yyyy-MM-dd无时分秒)

详细数据类型
MySql_01(sql语句、DDL、DML、DQL(浅谈)、null值计算、now函数)_第1张图片
MySql_01(sql语句、DDL、DML、DQL(浅谈)、null值计算、now函数)_第2张图片
创建student表包含id,name,birthday字段

CREATE TABLE student (
      id INT,
      name VARCHAR(20),
      birthday DATE
);

查看表

--查看某个数据库中的所有表
SHOW TABLES;

--查看表结构
DESC 表名;

--查看创建表的SQL语句
SHOW CREATE TABLE 表名;

快速创建一个表结构相同的表

CREATE TABLE 新表名 LIKE 旧表名;

删除表

--直接删除表
DROP TABLE 表名;

--判断表是否存在并删除表(了解)
DROP TABLE IF EXISTS 表名;

修改表结构

添加表列
ALTER TABLE 表名 ADD 列名 类型;

--案例: 给student增加一列身高 整型的height
ALTER TABLE student ADD height INT ;

修改列类型
ALTER TABLE 表名 MODIFY 列名 新的类型;

--例子:将刚添加的height修改成字符串类型的列
ALTER TABLE student MODIFY height VARCHAR(32);

修改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

--案例: 将字符串的height列 修改成 整型的weight  (体重)
ALTER TABLE student CHANGE height weight INT;

删除列
ALTER TABLE 表名 DROP 列名;

--案例: 将整型的weight 删除
ALTER TABLE student DROP weight;

修改表名
RENAME TABLE 表名 TO 新表名;

--将Student表修改成 Stu
RENAME TABLE student TO stu;

修改字符集
ALTER TABLE 表名 character set 字符集;


DML

增加

insert into 表名称 values(1 ,2 ,3 ....)
insert into 表名称(字段名称1,字段名称2,字段名称3...) values(1 ,2 ,3 ....)

注意:双引,单引都表示字符串。数字类型不需要加引号。

--第一种语法
INSERT INTO stu VALUES('jerry' , '男');
INSERT INTO stu VALUES('男', 'jerry' ,18);

--第二种语法
INSERT INTO stu(sname , gender , age) VALUES('rose', '女' , 22);
INSERT INTO stu(sname  , age) VALUES('rose' , 22);
INSERT INTO stu(age  , sname) VALUES( 22, 'rose');

删除

--删除来自于哪个表 条件是什么
delete from 表名称 [where 条件]; 
--删除rose相关数据
DELETE FROM stu WHERE sname = 'rose';

--删除表的所有数据
DELETE FROM 表名;

修改

update 表名 set 字段=, 字段=,字段=... [where 条件];  
UPDATE stu SET gender = '女';

[ where 条件 ] [ ] 表示可写可不写。开发中where 基本上是必写内容。where 用来锁定需要修改的数据。

UPDATE stu SET gender='男2',age=18 WHERE sname='rose';

蠕虫复制
在开发中,可能会删除数据 。但是只要删除数据 基本上会先备份数据。
将一个表的数据 复制到另一个表中

--需要有一个一样的表 快速创建表
CREATE TABLE student LIKE stu;

--将数据移植即可 select * from 表名  查询表的所有数据
INSERT INTO student SELECT * FROM stu;

关于表数据的删除

--delete from stu;清空表数据==>>只删除数据
--TRUNCATE 表名;重构表==>> 先删除表 再重新创建一张一样的新表
DELETE FROM newstu ;
TRUNCATE newstu;

DQL(浅谈)

查询所有

select * from 表名;
SELECT * FROM stu;

查询部分字段数据

SELECT 字段,字段 FROM 表名;
SELECT sname,gender FROM stu;

别名查询

SELECT 字段 as 别名,字段 as 别名 FROM stu; 
--as可以省略
--查询出来的数据 不会修改原表数据
SELECT sname AS 名称,gender AS 性别,age AS 年龄 FROM stu;

表别名

--给表添加别名
ELECT s.age,s.sname FROM stu AS s ;

去重查询
如果数据一样只保留一份

--select distinct 字段 , 字段.... 表名
SELECT DISTINCT s.age FROM stu AS s ; 
--如果是多字段所有字段都完全一样,才会去重
SELECT DISTINCT s.age,sname FROM stu AS s ;

单列计算
案例:数学成绩加5(均有成绩)

SELECT sname , math+5 AS math, english FROM stu;
--查询不会更改原来值

案例:英语成绩加5(有一个null值)

SELECT sname , math, english+5 FROM stu;
--null值还为null

null值计算
用到函数(数据库叫函数,其实就是方法)

ifnull(参数1 , 参数2)
--参数1 : 列名
--参数2 : 如果为null后希望是什么值
--每一列在使用的时候 还是从原表中取数据

SELECT sname , math , IFNULL(english,0) AS english FROM stu;

--总成绩
SELECT sname , math , IFNULL(english,0) AS english , math+IFNULL(english,0) AS 总成绩 FROM stu;

修改细节
如果条件找不到数据 不会报错 只不过不修改数据而已。
在执行sql语句时候先执行 where条件锁定数据后修改,也就是可以自己修改自己。

删除细节
无论是删除还是修改没有找到数据修改不了删除不了影响行数为0 但不会报错。

添加细节

--非正常情况 将数据看成是字符串添加
--数据库底层其实会将数据进行自动转换 必须满足数据格式才能够转换
INSERT INTO stu VALUES('龙龙' , '男' , '20' , '90' , NULL );
--可以的

now函数

--查看现在时间
SELECT NOW();

--NOW()有时分秒,date只有年月日若now放入date类型会产生警告

以后会不定期,将自己学习的数据库技术整理出来。错误之处还请指出。
祝大家头发多多,bug少少。

你可能感兴趣的:(数据库)